راه اندازی ماژول ASK با آردوینو (گیرنده و فرستنده رادیویی)
محتویات
آیا می خواهید با قیمتی کمتر از یک فنجان قهوه، قابلیت های رادیویی بی سیم را به پروژه آردوینو خود اضافه کنید؟ خوب، پس ماژولهای فرستنده و گیرنده RF 433 مگاهرتز برای شما مناسب هستند! آنها را اغلب می توان به صورت آنلاین با کمتر از دو دلار خریداری کرد، که آنها را به یکی از ارزان ترین گزینه های ارتباط داده ای تبدیل می کند. و بهتر از همه، این ماژول ها بسیار کوچک هستند و به شما این امکان را می دهند که یک ارتباط بی سیم را تقریباً در هر پروژه ای بگنجانید.
ما در این مطلب با استفاده از آردوینو ماژول فرستنده و گیرنده RF را راه اندازی میکنیم. کد برای فرستنده و گیرنده رادیویی 433mhz به طور کامل نوشته شده است و توضیحات داده میشود.
ماژول ASK RF RX/TX 433MHZ
بیایید نگاهی دقیقتر به ماژولهای فرستنده و گیرنده رادیویی 433 مگاهرتز بیندازیم.
ماژولی که در تصویر بالا میبینید فرستنده رادیویی 433 مگاهرتز است. قلب ماژول رزوناتور (تشدید کننده) SAW است که برای عملکرد 433.xx مگاهرتز تنظیم شده است. یک ترانزیستور سوئیچینگ و چند جزء غیرفعال نیز در مدار این ماژول وجود دارد.
هنگامی که یک منطق HIGH به ورودی DATA اعمال می شود، نوسانگر با تولید یک موج حامل خروجی RF ثابت در فرکانس 433.xx مگاهرتز کار می کند و هنگامی که ورودی DATA به منطق LOW می رسد، نوسانگر متوقف می شود. این تکنیک با نام Amplitude Shift Keying یا همان ASK شناخته می شود که به زودی در مورد آن به تفصیل صحبت خواهیم کرد.
تصویر بالا نمودار ماژول گیرنده 433 مگاهرتز است. اگرچه پیچیده به نظر می رسد، اما گیرنده نیز به سادگی ماژول فرستنده است. این ماژول یک مدار تنظیم شده RF و چند آپ امپ برای تقویت موج دریافتی از فرستنده است. سیگنال تقویتشده به یک PLL (حلقه قفل فاز) تغذیه میشود که رمزگشا را قادر میسازد تا روی جریان بیت های دیجیتالی «Lock» شود که خروجی رمزگشاییشده را بهتر و نویز را کمتر میکند.
ASK – کلید زدن دامنه شیفت
همانطور که در بالا توضیح داده شد، برای ارسال داده های دیجیتال از طریق رادیو، این ماژول ها از تکنیکی به نام Amplitude Shift Keying یا ASK استفاده می کنند. در Amplitude Shift Keying، دامنه (یعنی سطح) موج حامل (در مورد ما یک سیگنال 433 مگاهرتز است) در پاسخ به سیگنال داده ورودی تغییر می کند.
این بسیار شبیه به تکنیک آنالوگ مدولاسیون دامنه است که اگر با رادیو AM آشنایی داشته باشید، ممکن است با آن آشنا باشید. گاهی اوقات به آن کلیدسازی با دامنه باینری می گویند زیرا فقط دو سطح وجود دارد. می توانید آن را به عنوان یک سوئیچ ON/OFF در نظر بگیرید.
- منطق 1 – این حامل را با قدرت کامل هدایت می کند.
- منطق 0 – این حامل را به طور کامل قطع می کند.
مدولاسیون Amplitude به این صورت است:
ASK این مزیت را دارد که اجرای آن بسیار ساده است. طراحی مدار رمزگشا بسیار ساده است. همچنین ASK به پهنای باند کمتری نسبت به سایر تکنیک های مدولاسیون مانند FSK (Frequency Shift Keying) نیاز دارد. این یکی از دلایل ارزان بودن آن است.
اما نقطه ضعف آن این است که ASK بسیار زیاد مستعد نویز است. اما تا زمانی که سرعت انتقال داده های خود را در حالت نسبتاً آهسته حفظ کنید، می تواند در اکثر محیط ها به طور قابل اعتماد کار کند.
پین های فرستنده و گیرنده RF 433Mhz
بیایید نگاهی به پین اوت ماژولهای فرستنده و گیرنده RF 433 مگاهرتز بیندازیم.
- پین DATA داده های دیجیتال را برای انتقال می پذیرد.
- VCC برق فرستنده را تامین می کند. این می تواند هر ولتاژ DC مثبت بین 3.5 تا 12 ولت باشد. توجه داشته باشید که خروجی RF متناسب با ولتاژ تغذیه است، یعنی هر چه ولتاژ بالاتر باشد، دامنه بیشتر خواهد بود.
- GND یک پین زمین است.
- آنتن یک پین برای آنتن خارجی است. میتوانید یک تکه سیم جامد 17.3 سانتیمتری را برای دامنه بهبود یافته به این پین لحیم کنید.
- VCC برق گیرنده را تامین می کند. برخلاف فرستنده، ولتاژ تغذیه گیرنده باید 5 ولت باشد.
- پین های DATA داده های دیجیتال دریافتی را خروجی می دهند. دو پین مرکزی به صورت داخلی به هم متصل شده اند، بنابراین می توانید از هر کدام برای خروج داده ها استفاده کنید.
- GND یک پین زمین است.
- آنتن یک پین برای آنتن خارجی است که اغلب بدون علامت است. این پد در سمت چپ پایین ماژول، درست در کنار سیم پیچ کوچک است. میتوانید یک تکه سیم جامد 17.3 سانتیمتری را برای دامنه بهبود یافته به این پین لحیم کنید.
مدار اتصال ماژول رادیویی 433mhz به آردوینو
اکنون که همه چیز را در مورد ماژول ها می دانیم، زمان استفاده از آنها فرا رسیده است. از آنجایی که دادهها را بین دو برد آردوینو ارسال خواهیم کرد، به دو برد آردوینو، دو برد بورد و چند سیم جامپر نیاز خواهیم داشت.
اتصال فرستنده RF به آردوینو
سیم کشی فرستنده نسبتاً ساده است. فقط سه اتصال دارد. پایه VCC را به پایه 5 ولت و GND را به GND در آردوینو وصل کنید. پین Data-In باید به پین دیجیتال شماره ۱۲ آردوینو متصل شود. باید سعی کنید از پین 12 استفاده کنید زیرا به طور پیش فرض کتابخانه ای که ما در طرح خود استفاده خواهیم کرد از این پین برای ورودی داده استفاده می کند.
تصویر زیر سیم کشی را نشان می دهد.
اتصال گیرنده RF به آردوینو
هنگامی که فرستنده را سیم کشی کردید، می توانید به سمت گیرنده بروید. سیم کشی مدار گیرنده به همان راحتی فرستنده است.
بار دیگر فقط سه اتصال برای ایجاد وجود دارد. VCC را وصل کنید به پایه 5 ولت و GND به GND در آردوینو. یک کدام از دو پین میانی Data-Out باید به پین دیجیتال شماره 11 در آردوینو متصل شود. سیم کشی گیرنده باید به این شکل باشد.
کد آردوینو فرستنده رادیویی 433 مگاهرتز
کد کامل به همراه کتابخانه مورد نیاز در انتهای صفحه قرار داده شده است. ما میخواهیم دو کلمه ساده Hello World را از طریق ماژول فرستنده رادیویی 433 مگاهرتز ارسال کنیم. کد کامل به همراه توضیحات خط به خط در زیر قرار داده شده است.
// فراخوانی کتابخانه رادیویی ASD #include <RH_ASK.h> // فراخوانی کتابخانه ارتباط SPI #include <SPI.h> // ایجاد یک آبجکت برای ASK RH_ASK rf_driver; void setup() { // پیکربندی ASK rf_driver.init(); } void loop() { const char *msg = "Hello World"; // تعیین متن برای ارسال rf_driver.send((uint8_t *)msg, strlen(msg)); // ارسال متن rf_driver.waitPacketSent(); // منتظر ماندن برای اتمام فرآیند ارسال delay(1000); // 1 ثانیه صبر }
کد آردوینو گیرنده RF 433 مگاهرتز
برد گیرنده آردوینو را به کامپیوتر متصل کنید و کد زیر را در آن آپلود کنید. کد کامل به همراه توضیحات خط به خط در پایین قرار داده شده است.
// فراخوانی کتابخانه رادیویی ASD #include <RH_ASK.h> // فراخوانی کتابخانه ارتباط SPI #include <SPI.h> // ایجاد یک آبجکت برای ASK RH_ASK rf_driver; void setup() { // پیکربندی ASK ASK rf_driver.init(); // پیکربندی سریال مانیتور Serial.begin(9600); } void loop() { // تعیین سایز بافر با توجه به پیام دریافتی uint8_t buf[11]; uint8_t buflen = sizeof(buf); // بررسی صحیح بودن سایزپیام دریافتی if (rf_driver.recv(buf, &buflen)) { // پیام دریافتی در سریال مانیتور نمایش داده میشود Serial.print("Message Received: "); Serial.println((char*)buf); } }
موارد موجود در فایل : سورس ها و کتابخانه
برای دانلود فایل ها باید حساب کاربری داشته باشید ثبت نام / ورود
با سلام و خسته نباشید
خیلی ممنون بایت سایت خوب تان و آموزشهایی که ارائه می دهید.
سئوالی داشتم، ریموت کنترل لوستر و پارکینگ از چه نوعی می باشد؟ یعنی آیا RF هستند؟ چه طول موجی و برای دریافت و ارسال کد چه ماژولی را پیشنهاد می کنید؟ ریموت تلویزیون که IR هست را تونستم با کمک Arduino شبیه سازی کنم. الان می خواهم ریموت لوستر را شبیه سازی کنم. ممنون می شوم من را راهنمایی کنید.
با تشکر
سلام و عرض وقت بخیر
اگر دو تا خروجی که با DATA بر روی برد مشخص شده هر کدام به بِیس ترانزیستور های 2N3904 متصل بشن و خروجی ترانزیستور ها را به رله وصل کنیم آیا می توان با ماژول فرستنده ASK DX-RF 433 که به آردوینو وصل شده این دو خروجی را کنترل کرد؟(منظورم اینه آیا می توان بدون متصل کردن میکروکنترلر به گیرنده آن را کنترل کرد) اگر همچنین چیزی امکان داره میشه یک لینک آموزش بگید اگر هم همچنین چیزی امکان نداره میشه یک ماژول گیرنده مناسب بگید تا با این روش بشه آن را کنترل کرد؟
و سوال دومم اینکه با ماژول فرستنده ASK DX-RF 433 که به آردوینو متصل شده حد اکثر می توان چند گیرنده کنترل کرد ؟
با سلام و خسته نباشید
یه سوال داشتم می تونیم فقط از ماژول گیرنده و یک ریموت کنترل با همون فرکانس گیرنده استفاده کرد؟
سلام برای اینکار باید از دو برد آردوینو استفاده کرد و اینکه این مدار تا چند کانال رو پشتیبانی میکنه
سلام عزیز
بله باید دو برد آردوینو داشته باشید
با سلام خیلی ممنون بابت این پروژه ایا راه ساده تری هم هست که بتونیم این ماژول ها رو بهتر و راحت تر راه اندازی کنیم ؟ اگر هست لطفا اموزشش رو بزارید یا با همین کتابخانه ای که این دو ماژول رو راه اندازی کردید ، یه پروژه کنترل چند عدد ledرو بزارید در سایتتون تا بهتر متوجه بشیم که چه طور از این کتابخانه استفاده کنیم ممنونم.
سلام عزیز
این کد ها ساده ترین حالت هست اگر با برنامه نویسی آردوینو آشنایی ندارید میتونید دوره آموزش آردوینو رو مشاهده کنید