.sOuDeH. 16059 اشتراک گذاری ارسال شده در 8 مرداد، ۱۳۹۲ نحوه ارتباط RF توسط میکروکنترلر AVR : در بسیاری از مواقع ما نیاز به لینک ارتباطی بین دستگاهها داریم که این ارتباط می تواند با سیم و یا بدون سیم انجام شود. از ارتباط سیمی در مواقعی که فاصله دو دستگاه به هم نزدیک است استفاده می شود اما در مواردی که دستگاهها از هم دور هستند روش ارتباط سیمی مقرون به صرفه نیست و از ارتباط بی سیم استفاده می شود. در ارتباط بی سیم از دو فناوری مشهور استفاده می شود. 1- ارتباط IR مخفف Infrared یا مادون قرمز: استفاده برای کنترل از راه دور و IRDA مخفف Infrared Data Association برد کوتاه فرستنده و گیرنده باید در یک خط و روبروی هم تنظیم شوند نباید هیچ مانعی بین فرستنده و گیرنده باشد استفاده از آن آسان و کم هزینه است 2- ارتباط RF مخفف radio frequency : به طور گسترده استفاده می شود ، از جمله در سیستمهای بلوتوث ، رادیو ، تلفن های همراه ، ارتباطات ماهواره ای و غیره برد بسیار گسترده از چند متر تا میلیون ها کیلومتر (از این تکنولوژی برای کنترل ربات مریخ استفاده می شود) نیاز نیست که فرستنده و گیرنده در یک خط دید تنظیم شود. وجود موانع بین فرستنده و گیرنده اشکال ایجاد نمی کند. این سیستم پیچیده و پر هزینه است در این مقاله یاد خواهیم گرفت که چگونه بین دو میکروکنترلر ارتباط بی سیم برقرار کنیم. از این ارتباط برای ارسال و دریافت اطلاعات دیجیتال استفاده خواهد شد. ما یک ارتباط رادیویی برقرار خواهیم کرد و از آنجایی که ساخت سخت افزار آن تقریباً کار مشکلی است از ماژول های آماده استفاده خواهیم کرد (این ماژول ها معمولاً در دسترس و ارزان هستند). 2 لینک به دیدگاه
.sOuDeH. 16059 مالک اشتراک گذاری ارسال شده در 8 مرداد، ۱۳۹۲ ماژول RF چیست؟ این ماژول از دو کیت فرستنده و کیرنده تشکیل شده است که شکل آن را در پایین دیده می شود. همان طور که دیده می شود این ماژول دارای پایه های کمی است که این دلیل استفاده آسان از این ماژولهاست. در تصویر پایین پایه ها ماژول RF به همراه نام آنها مشاهده می شود. بنابر این شما تنها کافیست تا ولتاژ مناسب را به پایه های تغذیه بدهید تا این ماژول راه اندازی شود. اما کار واقعی نحوه ارسال و دریافت داده (Data) است. برای برقراری ارتباط RF باید با پروتکل ارتباطی RS232 آشنا باشیم. در اینجا ما از وقفه USART برای ارتباط استفاده می کنیم. ماژول RF چگونه کار می کند: کار با این ماژول ساده است ولی دارای یک ترفند کوچک هم است. کار این ماژول در شکل زیر دیده می شود. در اینجا داده های ورودی روی پین "Data In" ماژول TX از طریق پین "Data Out" ماژول RX قابل دریافت است. حالا اگر پین "Data In" همیشه روشن (High) باشد پین "Data Out" هم همیشه روشن (High) خواهد بود. اما در اینجا نکته نهفته است! در حقیقت شما نمی توانید پین را در وضعیت High منطقی (+5v) یا Low منطقی (0v) به مدت طولانی نگه دارید ، مثلاً برای چند ثانیه. اگر شما پین "Data In" را به وضعیت صفر منطقی ببرید پین "Data Out" به وضعیت صفر منطقی خواهد رفت اما فقط برای چند میلی ثانیه و پس از آن این وضعیت به صورت نوسانی ادامه پیدا خواهد کرد. اگر پین "data in" را در وضعیت یک منطقی نگه دارید این اتفاق خواهد افتاد. 2 لینک به دیدگاه
.sOuDeH. 16059 مالک اشتراک گذاری ارسال شده در 8 مرداد، ۱۳۹۲ وقتی که واحد گیرنده (TX) خاموش است یا دیتا دریافت نمی کند ، پین "Data Out" واحد گیرنده (RX) به صورت نوسانی صفر و یک خواهد شد و همچنین به پایه RX واحد USART میکروکنترلر متصل است ، میکروکنترلر MCU#2 داده های ناخواسته دریافت می کند. و هنگامی واحد گیرنده (TX) داده ای را ارسال می کند MCU#2 نیز آنها را دریافت می کند. بنابر این MCU#2 همیشه داده دریافت می کند حتی زمانی که MCU#1 داده ای ارسال نکند. بنابر این باید مکانیزمی برای تشخیص بین داده ی ارسالی از TX (داده واقعی) و داده های ناخواسته وجود داشته باشد. برای این منظور به مثال ساده زیر توجه کنید: ما انتقال را با ارسال کاراکتر 'A' شروع می کنیم ما دوباره 'A' را ارسال می کنیم سپس ما اطلاعات واقعی را ارسال می کنیم حالا ما داده ها را برعکس ارسال می کنیم . به طوری که تمام صفرها را به یک تبدیل می کنیم و بالعکس. ما بسته داده مان را با کاراکتر 'Z' به پایان می رسانیم در این روش ما یک بسته ساده با قابلیت تشخیص خطا را به عنوان نمونه ایجاد کردیم. حالا در سمت میکروکنترلر گیرنده الگوریتم زیر را خواهیم داشت. اگر ما تا انتهای الگوریتم را به درستی اجرا کنیم به این معنی است که ما در نهایت می توانیم داده های صحیح دریافت کنیم. این الگوریتم در واقع یک فیــلتر رای جداکردن داده های واقعی از داده های ناخواسته است. کار عملی : حالا به سراغ بخش عملی ارسال داده به روش IR توسط میکروکنترلر AVR می رویم یعنی ما می خواهیم یک سیستم کامل و عملی انتقال داده به صورت بی سیم را بسازیم. در اینجا شما مدار و برنامه ای را برای اینکار دریافت خواهید کرد. این برنامه بسیار ساده است و فقط می خواهیم یک بایت داده را از واحد فرستنده TX به واحد گیرنده RX ارسال کنیم. حلا با دقت به شرح دستور العملی که در زیر آمده است توجه کنید. مهمترین چیز در این مقاله زمان بندی میکروکنترلر است ، بنابر این باید از کریستالهای فرکانس دقیق استفاده شود. برای استفاده از کریستال خارجی باید مقدار فیوز بالا برابر C9 (مقدار هگز) و مقدار فیوز پایین FF (مقدار هگز) تنظیم شود. سخت افزار : ما دو واحد خواهیم داشت که واحد فرستنده (TX) و واحد گیرنده (RX) می باشند. در این پروژه از میکروکنترلر Atmega16 استفاده می کنیم. در پورت C پایه TX به عنوان ورودی عمل می کند. در حالی که پایه RX آن به عنوان خروجی عمل می کند. مقدار از پایه TX از طریق هوا به طور مداوم به پایه RX ارسال می شود. این بدین معنی است که شما هر مقداری که در پورت C واحد فرستنده قرار دهید از طریق پورت C واحد گیرنده قابل دریافت است (8 بیت یا 1 بایت). ما 8 میکروسوییچ در PORTC واحد فرستنده و 8 ال ای دی در PORTC واحد گیرنده قرار می دهیم. برای مشاهده عملکرد سیستم شما می توانید یک میکروسوییچ در سمت فرستنده را تحریک کنید و تغییر وضعیت ال ای دی متناظر در سمت گیرنده را مشاهده کنید. 2 لینک به دیدگاه
.sOuDeH. 16059 مالک اشتراک گذاری ارسال شده در 8 مرداد، ۱۳۹۲ در شکل های بالا دو شماتیک اتصال ماژول های RX و TX به میکروکنترلر Atmega16 نشان داده شده است. در مورد شماتیک به موارد زیر توجه کنید: 1- پین های تغذیه میکروکنترلر که در شماتیک نمایش داده نشده است ، اما باید وصل شود. 2- ترانزیستور مثبت BC548 و دو مقاومت 4.7K شکلی خیلی ساده از گیت NOT (اینورتر) هستند. به خاطر اینکه در ارتباط RS232 وضعیت آزاد حالت یک منطقی است و توسط اینورتر به وضعیت صفر منطقی تبدیل می کنیم. 3- شما می توانید از هزینه کمی برای ساخت یک برد پیشرفته تر برای آزمایشات سریع و آسان استفاده کنید. در آن منبع تغذیه آماده ، کریستال ، مدار ریست و پورت ISP (و غیره) وجود دارد. فقط شما باید ترانزیستور و ماژول RF را به آن وصل کنید! شما به راحتی می توانید میکروکنترلر خود را از طریق پروگرمر USB برنامه ریزی نمایید. 2 لینک به دیدگاه
saeed_mdi 1 اشتراک گذاری ارسال شده در 8 مرداد، ۱۴۰۰ سلام و عرض ادب. ممنون از مطلب بسیار مفیدتون. ? شما اینجا از encoder و decoder استفاده نکردید. آیا با روش های نرم افزاری، میشه پیام های ارسالی از فرستنده و گیرنده رو با روش هایی مثل هاپینگ امن کرد و از هک شدن سیستم جلوگیری کرد؟ مثلاً یک کانتر (هم سمت فرستنده و هم گیرنده) داشته باشیم، بعد از هر بار ارسال پیام، یکی به کارنتر اضافه کنیم و کانتر رو با پیام ارسالی ترکیب کنیم؟ برای این که فرستنده جایگزین نشه چطور؟ میشه داخل AVR سمت فرستنده و گیرنده یک کد آدرس رو اضافه کنیم و اون رو همراه پیام بفرستیم؟در کل میخواستم بدونم آیا با این روش ها (نرم افزاری و بدون encoder و decoder) میتونیم یک ارتباط امن، حداقل در حد یک ریموت code learn داشته باشیم؟ 1 لینک به دیدگاه
ارسال های توصیه شده