ویژگی های ماژول فرستنده و گیرنده 315/433 مگاهرتز RF
در بسیاری از مواقع نیاز است که تجهیزات الکترونیکی به صورت بی سیم به یکدیگر متصل شوند. در این مواقع از تجهیزات Radio Frequency یا به اختصار RF استفاده می شود. RF ها شامل تمامی امواج رادیویی هستند که با توجه به فرکانس و دامنه میتوانند فاصلههای مختلفی را طی کنند و به گیرنده برسند.
ماژول فرستنده و گیرنده وایرلس شامل یک فرستنده و یک گیرنده بوده که میتوانند در امواج رادیویی با فرکانس 433MHz و 315MHz کار کنند.
این ماژول در دو نوع مختلف 433MHz و 315MHz تولید میشود.
نکته
تمامی ماژولهایی که از باند فرکانسی 315/433 مگاهرتز استفاده میکنند میتوانند با یکدیگر صحبت کنند و هیچ گونه امنیت اطلاعاتی در این نوع ارتباط وجود ندارد. در صورتی که نیاز به امنیت باشد، باید در فرستنده و گیرنده از کد گذاری (قفل گذاری) استفاده شود.
توجه
این ماژول به صورت یک طرفه میباشد و فقط از سمت فرستنده به سمت گیرنده اطلاعات ارسال می شود. در صورت نیاز به ارتباط دو طرفه باید از دو جفت از این ماژول استفاده شود.
جهت دریافت دیتاشیت ماژول فرستنده و گیرنده 433MHz-315MHz اینجا کلیک کنید.
Transmitter and Receiver Module Datasheet
معرفی پایه ها (Pinout) ماژول فرستنده و گیرنده 315/433 مگاهرتز RF
هر کدام از ماژولهای فرستنده و گیرنده دارای 3 پایه به شرح زیر است:
- VIN: تغذیه ماژول
- GND: زمین
- Data: خط داده ارسالی یا دریافتی
لوازمی که به آن احتیاج دارید
قطعات مورد نیاز
نرم افزارهای کاربردی
راه اندازی مماژول فرستنده و گیرنده 315/433 مگاهرتز RF
گام اول: سیم بندی
مطابق مدار زیر، هر یک از ماژولهای فرستنده و گیرنده را به یک برد آردوینو وصل کنید.
گام دوم: نصب کتابخانه
کتابخانه زیر را بر آردوینوی خود نصب کنید.
توجه
اگر نیاز به راهنمایی بیشتر برای نصب کتابخانه بر روی آردوینو دارید، می توانید به آموزش نصب کتابخانه بر آردوینو مراجعه کنید.
گام سوم: کد
کد زیر را بر روی آردوینوی فرستنده آپلود کنید.
/*
Example for different sending methods
https://github.com/sui77/rc-switch/
*/
#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch();
void setup() {
Serial.begin(9600);
// Transmitter is connected to Arduino Pin #10
mySwitch.enableTransmit(10);
// Optional set protocol (default is 1, will work for most outlets)
// mySwitch.setProtocol(2);
// Optional set pulse length.
// mySwitch.setPulseLength(320);
// Optional set number of transmission repetitions.
// mySwitch.setRepeatTransmit(15);
}
void loop() {
/* See Example: TypeA_WithDIPSwitches */
mySwitch.switchOn("11111", "00010");
delay(1000);
mySwitch.switchOff("11111", "00010");
delay(1000);
/* Same switch as above, but using decimal code */
mySwitch.send(5393, 24);
delay(1000);
mySwitch.send(5396, 24);
delay(1000);
/* Same switch as above, but using binary code */
mySwitch.send("000000000001010100010001");
delay(1000);
mySwitch.send("000000000001010100010100");
delay(1000);
/* Same switch as above, but tri-state code */
mySwitch.sendTriState("00000FFF0F0F");
delay(1000);
mySwitch.sendTriState("00000FFF0FF0");
delay(1000);
delay(20000);
}
کد زیر را بر روی آردوینوی گیرنده آپلود کنید.
/*
Simple example for receiving
https://github.com/sui77/rc-switch/
*/
#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch();
void setup() {
Serial.begin(9600);
mySwitch.enableReceive(0); // Receiver on interrupt 0 => that is pin #2
}
void loop() {
if (mySwitch.available()) {
int value = mySwitch.getReceivedValue();
if (value == 0) {
Serial.print("Unknown encoding");
} else {
Serial.print("Received ");
Serial.print( mySwitch.getReceivedValue() );
Serial.print(" / ");
Serial.print( mySwitch.getReceivedBitlength() );
Serial.print("bit ");
Serial.print("Protocol: ");
Serial.println( mySwitch.getReceivedProtocol() );
}
mySwitch.resetAvailable();
}
}
این کد جهت تست ارتباط مابین فرستنده و گیرنده رادیویی میباشد.
در سریال مانیتور، گیرنده اطلاعات ارسالی را مشاهده میکند.
Comments (43)
سلام میشه از این ماژول برای کنترل ریموت گیرنده های ماشین و خانه استفاده کرد؟
سلام.
به شرطی که ریموت ماشین و خانه دارای همین فرکانس باشه، بله.
سلام لطفا روش راه انداریش بدون استفاده از آردینو رو بگید که مثلا یه میکروسوئیچ رو فشار بدیم در قسمت گیرنده یه رله روشن بشه
سلام.
این ماژول برای راهاندازی به یک میکروکنترلر مثل آردوینو و یا هر میکروکنترلر دیگهای مثل انواع میکروکنترلرهای ESP، STM، AVR و … نیاز داره و انجام پروژه مورد نظر شما بدون میکروکنترلر امکانپذیر نیست.
سلام میشه کد روتوضیح بدید
اگه بخوام از این کد استفاده کنم تا یک سری اطلاعات رو ارسال کنم مثلن حروف کارکتری”hi” روارسال کنم و اونور اینو دریافت کنم
سلام.
برای انجام این پروژه دو عدد میکروکنترلر یکی برای قسمت فرستنده و دیگری گیرنده لازم هست که در نتیجه برای هر کدوم یک کد جداگونه نوشته شده. در هر دو کد هم از کتابخونه RCSwitch استفاده شده. در کد مربوط به میکروکنترلر فرستنده، در خط 17، فرستنده فعال شده و عدد 10 نشان دهنده اینه که پایه DATA ماژول فرستنده به پایه شماره 10 آردوینو متصل شده. پس از اون و در ادامه همین کد، عدد 5393 به 4 روش مختلف به گیرنده ارسال شده.
در کد مربوط به گیرنده هم، در خط 13، گیرنده فعال شده و عدد 0 نشان دهنده اینه که پایه DATA ماژول گیرنده به پایه interrupt 0 آردوینو که معادل پایه 2 هست متصل شده. پس از اون هم، داده فرستاده شده دریافت و در Serial Monitor نمایش داده شده.
در صورتی که میخواید رشته ای مانند hi رو ارسال کنید کافیه که در قسمت کد فرستنده در بخش فرستادن، به جای عدد 5393، کلمه hi رو قرار بدید و در قسمت گیرنده هم، در خط 19، به جای int از string استفاده کنید.
سلام.
چطوری میتونیم برای امنیتش کدگزاری کنیم؟
سلام اگر بخواهیم یک float مانند 27.5 را بفرستیم و بگیریم در سریال مانیتور نمایش دهیم باید چیکار کنیم
سلام.
با استفاده از این ماژولها شما میتونید یک متن (string) ارسال کنید. اگر میخواید که پیام ارسال شده به صورت float باشه، میتونید همون عدد رو مثل 27.5 به صورت string و مشابه کد این آموزش (()mySwitch.getReceivedValue و (“”)mySwitch.send) ارسال و دریافت کنید. در نهایت هم میتونید متن دریافت شده رو (مثلا با اسم myString) توسط تابع ()toFloat و به صورت ()myString.toFloat به float تبدیل کنید و در سریال مانیتور نمایش بدید.
تصویر مدار شما اشتباه است. روی ماژول مربوطه جای پین VCC و GND رو برعکس زدید طبق شکل
سلام
بله درست میفرمایید، اصلاح میشه. ممنون از توجهتون
بدون اردوینو هم میشه راه اندازی کرد با ترانزیستور منفی و رله
سلام.
بعید میدونم که همچین چیزی امکان داشته باشه و تا جایی که بنده اطلاع دارم برای راهاندازی این ماژولها حتما به میکروکنترلر نیاز هست.
سلام
ماژول فرستنده را طبق تصویر شما متصل کردم و متاسفانه در تصویر VIN و DATA جابجا نشان داده شده. فکر کنم ماژولم سوخت.
سلام.
جای پایهها در تصویر بر اساس ماژولی که در این آموزش استفاده شده، کاملا درست هست. احتمالش هست که نوع ماژولی که شما استفاده کردید متفاوت بوده باشه.
با سلام من ماژول فرستنده رو طبق آموزش شما متصل کردم ولی باعث میشه اردینو خاموش بشه یا اگه از ابتدا سیم های ماژول وصل باشن اردینو کلا روشن نمیشه.ممنون میشم راهنمایی کنید چرا این اتفاق میفته؟
سلام.
احتمالا مشکلی در خود ماژول وجود داره. احتمالش هست که ماژول سوخته یا نیمسوز باشه و بین VIN و GND ماژول اتصال کوتاه شده باشه. این مورد رو میتونید توسط یک مولتیمتر هم تست کنید.
بله تست کردم همه پایه ها اتصالی داشتن الان میشه مرجوعش کرد؟هزینه ارسالش بیشتر از قیمت خودش میشه
سلام.
در رابطه با این مسائل میتونید از بخش انجمن کافهربات https://forum.thecaferobot.com/ اقدام کنید.
مرسی بابط اطلاعات خوبتون اگه من بخوام برای دزدگیر خودرو با فرستنده ۳۱۵ و اردوینو ریموت درست کنم باید چه کدی بنویسم
سلام
تا جایی که بنده اطلاع دارم، هر سیستم رادیویی قابل کنترل دارای ID خاص خودشه که فقط با ریموت خودش که کد منحصر به فردی داره کار میکنه، مگر اینکه شما کد های مربوط به ریموت رو دیکد کنید با یه گیرنده خودتون و بعد رو فرستنده خودتون پیاده سازی کنید.
ببخشید استاد این کد الان دارای پروتکل ارتباطی یا همون رمز گذاری شده هستش و اگه نباشه میتونیم اون رو دارای پروتکل یا رمز دار بکنیم برای امنیت ارتباطی مون؟
سلام.
در این کد از نحوه رمزگذاری خاصی استفاده نشده. ولی در صورتی که مایل باشید بله میشه متنهای ارسالی رو با روش مورد نظر خودتون کد کنید و در سمت گیرنده هم دیکود رو انجام بدید.
سلام عبدالملکی
یک متغیر استرینگ دارم که ۲۴ کارکتر ۰و ۱ داره
چطور میتونم توسط فرستند rc سویچ به گیرنده ارسالش کنم
سلام.
در این برنامه و در خط 45 و 47 کد مربوط به آردوینو فرستنده دقیقا همین کار انجام شده. میتونید با روند همین پروژه کار مورد نظرتون رو انجام بدید.
سلام ممنون بات آموزشهای خوبتون. جسارتا چرا دو جفت فرستنده و گیرنده با فرکانس های متفاوت توی تجهیزات مورد نیاز آورده شده؟ هر دو نیاز هست یا هر کدوم ترجیح دادیم؟
سلام
ممنون از توجهتون
خیر نیاز به داشتن هر 2 جفت نیست
یک عدد گیرنده و یک عدد فرستنده با یک فرکانس کاری یا 433 یا 315 مگاهرتز میتونید استفاده کنید
سلام جناب یسوالی داشتم آیا امکان ساخت transmitter هایی مث hackrf وجود داره ممنون میشیم راهنمایی کنین
سلام
خیر ، امکان پذیر نیست
با سلام ، از ماژول فرستنده و گیرنده 315/433 مگاهرتز RF آیا می شود برای انتقال تصویر دوربین های مداربسته مینیاتوری استفاده کرد؟
با سلام
این ماژول برای انتقال دیتا با سرعت پایین استفاده می شود و برای انتقال تصویر کاربرد ندارد
با سلام ، تشکر می کنم اگر بتوانید چند تا ماژول برای انتقال تصویر و صدا معرفی کنید
در صورتی که در زمینه انتقال هم زمان بر روی ربات ها میخواهید قرار بدهید، پیشنهاد میکنم از نسخه های آماده استفاده کنید.
این موارد را می توانید از فروشگاه هایی که در زمینه کوادکوپتر کار میکنند تهیه کنید.
با سلام ، آیا میشه از این ماژول برای ارسال تصویر دوربین مداربسته مینیاتوری استفاده کرد؟ و اینکه اگر امکانش باشه برد آن تا چند متر خواهد بود؟
با سلام
این ماژول ها برای ارسال دیتا با سرعت پایین استفاده می شود و امکان انتقال تصویر را ندارند.
سلام و عرض ادب
بنده یک ماژول گیرنده رادیویی کدلرن RX06 315MHZ و یک ریموت خودرو تهیه کردم که باهاش بدون برد آردینو led ها رو خاموش روشن می کنم اما نمیدونم برای آرودینو انو باید چه دستوراتی وارد کنم؟ لطفا راهنماییم کنید
با سلام
ماژول RX06 از نوع کد لرن نمی باشد. این ماژول گیرنده تمامی کد های فرکانس 315MHZ می باشد.
از طرفی نیز ریموت های خودرو بیشتر 433 هستند. اما در صورتی که مدلی که شما تهیه کرده اید از نوع 315 می باشد مشکلی ندارد.
شما کد سمت گیرنده آموزش را بر روی برد آردوینو خود آپلود کنید سپس سیم کشی مربوط به گیرنده را نیز انجام بدهید. با زدن دکمه های ریموت خود باید ID ریموت شما در سمت آردوینو نمایش داده شود.
در صورتی که به درستی نمایش داده شد در بخش else کد یک if دیگر نیز اضافه میکنید که بررسی کند مقدار value آیا برابر ID ریموت شما می باشد یا خیر. در صورت برابر بودن دستوراتی که میخواهید انجام شود را در آنجا قرار میدهید.
سلام وقتتون بخیر، ببخشید من چندین گیرنده ریموت 433 دارم که هر کودوم یک رله ای رو فعال/غیرفعال میکنه، میخواستم ببینم با این روشی که آموزش دادین و یک میکروکنترولر ESP32 میشه کد ریموت گیرنده هارو کپی کنم و با ماژول فرستنده 433 رله هارو با موبایل کنترل کنم ؟؟
اگر آره رنج حدودی فرستنده چقدر هست ؟ آیا امکان افزایش رنجش هست ؟
ممنون میشم راهنماییم کنید.
با سلام بله
شما ابتدا با یک ماژول گیرنده 433 کد هایی که ریموت های شما ارسال میکنند را میخوانید و سپس با ماژول فرستنده می توانید دستور بدهید این کد ها را ایجاد کنید و به عنوان یک کپی از این ریموت ها عمل کنید.
PS: از تمامی مدل میکرو کنترلر نیز برای این کار نیز میتوانید استفاده کنید
برای رنج نیز ماژول فرستنده این مدل دستگاه ها حدودا مشابه ریموت ها می باشد. فقط توجه داشته باشید که بعضی از مدل ها 5 ولت و بعضی دیگر 3.3 ولت هستند (یک سری از مدل ها تا 12 ولت نیز ساپورت میکنند)
همچنین تغذیه را به صورت کامل و بدون نویز به فرستنده بدهید رنج افزایش نیز میابد
همچنین استفاده از آنتن نیز تا حدی مناسبی رنج را افزایش میدهد.
توی اطلاعات ماژول نوشته شده 3-5 متر ولی برد اش حتی بدون آنتن بالای ده متره
با سلام
حداقل اندازه ای که میتواند برد بدهد را اعلام کرده ایم.
توجه داشته باشید که شرایط محیطی تاثیر بسیار زیادی در این زمینه دارد.
خیلی عالی بود دستتون درد نکنه
استفاده کردم
با سلام
ممنون بابت نظر شما