این پست راهنمای راه اندازی ماژول فرستنده/گیرنده RF 433MHz با آردوینو است که در این پست نحوه کار آنها را توضیح می دهیم و یک نمونه پروژه آردوینو را با شما به اشتراک می گذاریم که می توانید هنگام استفاده از ماژول RF433 در پروژه های خود از آن استفاده کنید.
توضیحات ماژول فرستنده/گیرنده RF 433MHz
در طول این آموزش ما از فرستنده FS1000A و گیرنده مربوطه استفاده خواهیم کرد، اما دستورالعمل های ارائه شده با سایر ماژول های فرستنده/گیرنده 433 مگاهرتز نیز به روشی مشابه کار می کنند. این ماژولهای RF در بین سازندگان آردوینو بسیار محبوب هستند و در طیف گستردهای از برنامههای کاربردی که نیاز به کنترل بیسیم دارند استفاده میشوند.
این ماژول ها بسیار ارزان هستند و می توانید آنها را با هر میکروکنترلری، اعم از Arduino، ESP8266 یا ESP32 استفاده کنید.
مشخصات گیرنده RF 433MHz
- محدوده فرکانس: 433.92 مگاهرتز
- مدولاسیون: ASK
- ولتاژ ورودی: 5 ولت
مشخصات فرستنده RF 433MHz
- محدوده فرکانس: 433.92 مگاهرتز
- ولتاژ ورودی: 3-12 ولت
نحوه کار پروژه آردوینو با ماژول فرستنده/گیرنده RF 433MHz
در این بخش، یک مثال ساده می سازیم که پیامی را از یک آردوینو به برد آردوینو دیگری با استفاده از ماژول های RF فرکانس 433 مگاهرتز ارسال می کند. یک برد آردوینو به یک فرستنده 433 مگاهرتز متصل می شود و “Hello World!” را ارسال می کند و برد دیگر آردوینو به یک گیرنده 433 مگاهرتز متصل خواهد شد که پیام های ارسال شده از فرستنده را دریافت کند و نمایش دهد.
قطعات مورد نیاز
برای راه اندازی این پروژه به قطعات زیر نیاز دارید
- دو عدد برد اردوینو
- فرستنده گیرنده 433 مگا هرتز
- بردبورد
- سیم های اتصال
نصب کتابخانه مورد نیاز
کتابخانه RadioHead راه آسانی برای راه اندازی و کار با فرستنده/گیرنده 433 مگاهرتز با آردوینو فراهم می کند. برای نصب این کتابخانه در Arduino IDE قدم های زیر را دنبال کنید:
- برای دانلود کتابخانه RadioHead اینجا را کلیک کنید.حالا شما باید یک پوشه .zip در پوشه Downloads خود داشته باشید.
- کتابخانه RadioHead را از حالت فشرده خارج کنید.
- پوشه کتابخانه RadioHead را به پوشه کتابخانه های نصب Arduino IDE منتقل کنید.
- آردوینو IDE خود را مجددا راه اندازی کنید.
کتابخانه RadioHead تقریباً با تمام ماژول های RF موجود در بازار کار می کند. در اینجا می توانید اطلاعات بیشتری در مورد کتابخانه RadioHead بخوانید.
مدار فرستنده
با استفاده از این دیاگرام شماتیک، ماژول فرستنده را به آردوینو متصل کنید.
برنامه فرستنده
کد زیر را روی برد آردوینو که به عنوان فرستنده عمل می کند آپلود کنید. این کد بر اساس یکی از مثال های ارائه شده توسط کتابخانه RadioHead است.
#include <RH_ASK.h>
#include <SPI.h> // Not actually used but needed to compile
RH_ASK driver;
void setup()
{
Serial.begin(9600); // Debugging only
if (!driver.init())
Serial.println("init failed");
}
void loop()
{
const char *msg = "Hello World!";
driver.send((uint8_t *)msg, strlen(msg));
driver.waitPacketSent();
delay(1000);
}
نحوه کار کد فرستنده
ابتدا کتابخانه RadioHead ASK را اضافه کنید.
#include <RH_ASK.h>
این کتابخانه برای کار به کتابخانه SPI نیاز دارد. بنابراین، شما همچنین باید کتابخانه SPI را نیز اضافه کنید.
#include <SPI.h>
پس از آن، یک شی RH_ASK به نام driver ایجاد کنید.
در setup()، شی RH_ASK را با استفاده از متد init() مقداردهی اولیه کنید.
Serial.begin(9600); // Debugging only
if (!driver.init())
Serial.println("init failed");
در loop() پیام خود را می نویسیم و ارسال می کنیم. پیام در متغیر msg ذخیره می شود. لطفاً توجه داشته باشید که پیام باید از نوع char باشد.
const char *msg = "Hello World!";
این پیام حاوی متن “hello world!” میباشد، اما می توانید هر چیزی را که می خواهید ارسال کنید به شرطی که در قالب char باشد.
در پایان پیام خود را بصورت زیر ارسال می کنیم:
driver.send((uint8_t *)msg, strlen(msg));
driver.waitPacketSent();
پیام هر یک ثانیه ارسال می شود، اما می توانید این زمان تاخیر را تنظیم کنید.
delay(1000);
مدار گیرنده
با استفاده از این دیاگرام شماتیک، ماژول گیرنده را به آردوینو متصل کنید.
برنامه گیرنده
کد زیر را در آردوینو متصل به گیرنده آپلود کنید. این بر اساس یکی از مثال های ارائه شده توسط کتابخانه RadioHead است.
#include <RH_ASK.h>
#include <SPI.h> // Not actualy used but needed to compile
RH_ASK driver;
void setup()
{
Serial.begin(9600); // Debugging only
if (!driver.init())
Serial.println("init failed");
}
void loop()
{
uint8_t buf[12];
uint8_t buflen = sizeof(buf);
if (driver.recv(buf, &buflen)) // Non-blocking
{
int i;
// Message with a good checksum received, dump it.
Serial.print("Message: ");
Serial.println((char*)buf);
}
}
نحوه کار کد گیرنده
مشابه برنامه قبلی، با اضافه کتابخانه های لازم شروع می کنید:
#include <RH_ASK.h>
#include <SPI.h>
یک شی RH_ASK به نام driver ایجاد می کنید:
RH_ASK driver;
در setup() شی RH_ASKobject را مقداردهی اولیه کنید.
void setup(){
Serial.begin(9600); // Debugging only
if (!driver.init())
Serial.println("init failed");
}
در loop() باید بافری را تنظیم کنیم که با اندازه پیامی که دریافت می کنیم مطابقت داشته باشد. “hello world!” دارای 12 کاراکتر شما باید اندازه بافر را مطابق با پیامی که دریافت می کنید تنظیم کنید (فضاها و علائم نگارشی نیز حساب می شوند).
uint8_t buf[12];
uint8_t buflen = sizeof(buf);
سپس، بررسی کنید که آیا پیام معتبری دریافت کرده اید. اگر پیام معتبری دریافت کردید، آن را در مانیتور سریال چاپ کنید.
if (driver.recv(buf, &buflen)) {
int i;
// Message with a good checksum received, dump it.
Serial.print("Message: ");
Serial.println((char*)buf);
}
نتیجه
در این پروژه فرستنده در حال ارسال پیام “hello world!” به گیرنده از طریق RF در هز ثانیه میباشد. این پیام ها در مانیتور سریال گیرنده نمایش داده می شوند. شکل زیر آنچه را که باید در مانیتور سریال Arduino IDE خود ببینید را نشان می دهد.
جمع بندی
هنگام استفاده از این ماژول باید انتظارات واقع بینانه ای داشته باشید. هنگامی که گیرنده و فرستنده نزدیک به یکدیگر هستند، بسیار خوب کار می کنند. اگر آنها را خیلی از هم دور کنید، ارتباط را از دست خواهید داد. محدوده ارتباط متفاوت خواهد بود. که بستگی به میزان ولتاژی که به ماژول فرستنده خود می دهید، نویز RF در محیط شما و اینکه آیا از آنتن خارجی استفاده می کنید، دارد.
سلام مرسی بابت سایت خفنی که دارید , میگم اون کلمه i دقیقا کار بردش توی گیرنده چیه ؟
توی فرستنده هم نوشته کتابخونه spi برای اینکه کامپایلر گیر به کد نده وگرنه کاربردی نداره برای ما
با سلام و تشکر از توجه تان به وبسایت نوین الکترونیک
بله همینطور که فرمودید هست و احتمالا در برنامه گیرنده نیاز به شمارنده پیام بوده که این متغیر تعریف شده اما استفاده نشده