آموزش راه‌اندازی ماژول فرستنده و گیرنده 315/433 مگاهرتز RF با آردوینو

فهرست مطالب

ویژگی های ماژول فرستنده و گیرنده 315/433 مگاهرتز RF

در بسیاری از مواقع نیاز است که تجهیزات الکترونیکی به صورت بی سیم به یکدیگر متصل شوند. در این مواقع از تجهیزات Radio Frequency یا به اختصار RF استفاده می شود. RF ها شامل تمامی امواج رادیویی هستند که با توجه به فرکانس و دامنه می‌توانند فاصله‌های مختلفی را طی کنند و به گیرنده برسند.

ماژول فرستنده و گیرنده وایرلس شامل یک فرستنده و یک گیرنده بوده که می‌توانند در امواج رادیویی با فرکانس 433MHz و 315MHz کار کنند.

این ماژول در دو نوع مختلف 433MHz و 315MHz تولید می‌شود.

نکته

تمامی ماژول‌هایی که از باند فرکانسی 315/433 مگاهرتز استفاده می‌کنند می‌توانند با یکدیگر صحبت کنند و هیچ گونه امنیت اطلاعاتی در این نوع ارتباط وجود ندارد. در صورتی که نیاز به امنیت باشد، باید در فرستنده و گیرنده از کد گذاری (قفل گذاری) استفاده شود.

توجه

این ماژول به صورت یک طرفه می‌باشد و فقط از سمت فرستنده به سمت گیرنده اطلاعات ارسال می شود. در صورت نیاز به ارتباط دو طرفه باید از دو جفت از این ماژول استفاده شود.

جهت دریافت دیتاشیت ماژول فرستنده و گیرنده 433MHz-315MHz اینجا کلیک کنید.

معرفی پایه ها (Pinout) ماژول فرستنده و گیرنده 315/433 مگاهرتز RF

هر کدام از ماژول‌های فرستنده و گیرنده دارای 3 پایه به شرح زیر است:

  • VIN: تغذیه ماژول
  • GND: زمین
  • Data: خط داده ارسالی یا دریافتی

لوازمی که به آن احتیاج دارید

قطعات مورد نیاز

Arduino UNO R3 × 1
ماژول فرستنده و گیرنده 433MHz × 1
ماژول فرستنده و گیرنده 315MHz × 1
سیم جامپر نری به مادگی × 1

نرم افزارهای کاربردی

آردوینو IDE

راه اندازی مماژول فرستنده و گیرنده 315/433 مگاهرتز RF

گام اول: سیم بندی

مطابق مدار زیر، هر یک از ماژول‌های فرستنده و گیرنده را به یک برد آردوینو وصل کنید.

گام دوم: نصب کتابخانه

کتابخانه زیر را بر آردوینوی خود نصب کنید. 

https://github.com/sui77/rc-switch

توجه

اگر نیاز به راهنمایی بیشتر برای نصب کتابخانه بر روی آردوینو دارید، می توانید به آموزش نصب کتابخانه بر آردوینو مراجعه کنید.

گام سوم: کد

کد زیر را بر روی آردوینوی فرستنده آپلود کنید.

/*
  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)

  • متین Reply

    سلام میشه از این ماژول برای کنترل ریموت گیرنده های ماشین و خانه استفاده کرد؟

    اکتبر 13, 2021 at 9:45 ق.ظ
    • مهران ملکی Reply

      سلام.
      به شرطی که ریموت ماشین و خانه دارای همین فرکانس باشه، بله.

      اکتبر 13, 2021 at 3:43 ب.ظ
      • کیوان Reply

        سلام لطفا روش راه انداریش بدون استفاده از آردینو رو بگید که مثلا یه میکروسوئیچ رو فشار بدیم در قسمت گیرنده یه رله روشن بشه

        جولای 11, 2022 at 8:53 ب.ظ
        • مهران ملکی Reply

          سلام.
          این ماژول برای راه‌اندازی به یک میکروکنترلر مثل آردوینو و یا هر میکروکنترلر دیگه‌ای مثل انواع میکروکنترلرهای ESP، STM، AVR و … نیاز داره و انجام پروژه مورد نظر شما بدون میکروکنترلر امکان‌پذیر نیست.

          جولای 15, 2022 at 10:33 ب.ظ
  • سیدرضا Reply

    سلام میشه کد روتوضیح بدید
    اگه بخوام از این کد استفاده کنم تا یک سری اطلاعات رو ارسال کنم مثلن حروف کارکتری”hi” روارسال کنم و اونور اینو دریافت کنم

    اکتبر 20, 2021 at 8:11 ب.ظ
    • مهران ملکی Reply

      سلام.
      برای انجام این پروژه دو عدد میکروکنترلر یکی برای قسمت فرستنده و دیگری گیرنده لازم هست که در نتیجه برای هر کدوم یک کد جداگونه نوشته شده. در هر دو کد هم از کتابخونه RCSwitch استفاده شده. در کد مربوط به میکروکنترلر فرستنده، در خط 17، فرستنده فعال شده و عدد 10 نشان دهنده اینه که پایه DATA ماژول فرستنده به پایه شماره 10 آردوینو متصل شده. پس از اون و در ادامه همین کد، عدد 5393 به 4 روش مختلف به گیرنده ارسال شده.
      در کد مربوط به گیرنده هم، در خط 13، گیرنده فعال شده و عدد 0 نشان دهنده اینه که پایه DATA ماژول گیرنده به پایه interrupt 0 آردوینو که معادل پایه 2 هست متصل شده. پس از اون هم، داده فرستاده شده دریافت و در Serial Monitor نمایش داده شده.
      در صورتی که میخواید رشته ای مانند hi رو ارسال کنید کافیه که در قسمت کد فرستنده در بخش فرستادن، به جای عدد 5393، کلمه hi رو قرار بدید و در قسمت گیرنده هم، در خط 19، به جای int از string استفاده کنید.

      اکتبر 23, 2021 at 9:39 ق.ظ
  • رضا Reply

    سلام.
    چطوری می‌تونیم برای امنیتش کدگزاری کنیم؟

    می 8, 2022 at 12:37 ق.ظ
  • آرین فرزادفر Reply

    سلام اگر بخواهیم یک float مانند 27.5 را بفرستیم و بگیریم در سریال مانیتور نمایش دهیم باید چیکار کنیم

    می 20, 2022 at 12:24 ب.ظ
    • مهران ملکی Reply

      سلام.
      با استفاده از این ماژول‌ها شما میتونید یک متن (string) ارسال کنید. اگر میخواید که پیام ارسال شده به صورت float باشه، میتونید همون عدد رو مثل 27.5 به صورت string و مشابه کد این آموزش (()mySwitch.getReceivedValue و (“”)mySwitch.send) ارسال و دریافت کنید. در نهایت هم میتونید متن دریافت شده رو (مثلا با اسم myString) توسط تابع ()toFloat و به صورت ()myString.toFloat به float تبدیل کنید و در سریال مانیتور نمایش بدید.

      می 22, 2022 at 11:53 ب.ظ
  • ebi Reply

    تصویر مدار شما اشتباه است. روی ماژول مربوطه جای پین VCC و GND رو برعکس زدید طبق شکل

    می 31, 2022 at 11:01 ب.ظ
    • مهران ملکی Reply

      سلام
      بله درست میفرمایید، اصلاح میشه. ممنون از توجه‌تون

      ژوئن 10, 2022 at 12:47 ب.ظ
  • محمد ارمان Reply

    بدون اردوینو هم میشه راه اندازی کرد با ترانزیستور منفی و رله

    آگوست 18, 2022 at 11:23 ق.ظ
    • مهران ملکی Reply

      سلام.
      بعید میدونم که همچین چیزی امکان داشته باشه و تا جایی که بنده اطلاع دارم برای راه‌اندازی این ماژول‌ها حتما به میکروکنترلر نیاز هست.

      سپتامبر 12, 2022 at 9:49 ب.ظ
  • حمید Reply

    سلام
    ماژول فرستنده را طبق تصویر شما متصل کردم و متاسفانه در تصویر VIN و DATA جابجا نشان داده شده. فکر کنم ماژولم سوخت.

    آگوست 25, 2022 at 1:40 ق.ظ
    • مهران ملکی Reply

      سلام.
      جای پایه‌ها در تصویر بر اساس ماژولی که در این آموزش استفاده شده، کاملا درست هست. احتمالش هست که نوع ماژولی که شما استفاده کردید متفاوت بوده باشه.

      سپتامبر 12, 2022 at 9:52 ب.ظ
  • رضا Reply

    با سلام من ماژول فرستنده رو طبق آموزش شما متصل کردم ولی باعث میشه اردینو خاموش بشه یا اگه از ابتدا سیم های ماژول وصل باشن اردینو کلا روشن نمیشه.ممنون میشم راهنمایی کنید چرا این اتفاق میفته؟

    اکتبر 27, 2022 at 1:01 ق.ظ
    • مهران ملکی Reply

      سلام.
      احتمالا مشکلی در خود ماژول وجود داره. احتمالش هست که ماژول سوخته یا نیم‌سوز باشه و بین VIN و GND ماژول اتصال کوتاه شده باشه. این مورد رو میتونید توسط یک مولتی‌متر هم تست کنید.

      اکتبر 28, 2022 at 5:18 ب.ظ
      • رضا Reply

        بله تست کردم همه پایه ها اتصالی داشتن الان میشه مرجوعش کرد؟هزینه ارسالش بیشتر از قیمت خودش میشه

        اکتبر 29, 2022 at 8:20 ق.ظ
        • مهران ملکی Reply

          سلام.
          در رابطه با این مسائل میتونید از بخش انجمن کافه‌ربات https://forum.thecaferobot.com/ اقدام کنید.

          نوامبر 11, 2022 at 2:19 ب.ظ
  • سید قاسم‌ Reply

    مرسی بابط اطلاعات خوبتون اگه من بخوام برای دزدگیر خودرو با فرستنده ۳۱۵ و اردوینو ریموت درست کنم باید چه کدی بنویسم

    اکتبر 31, 2022 at 3:24 ق.ظ
    • علی عبدالملکی Reply

      سلام
      تا جایی که بنده اطلاع دارم، هر سیستم رادیویی قابل کنترل دارای ID خاص خودشه که فقط با ریموت خودش که کد منحصر به فردی داره کار میکنه، مگر اینکه شما کد های مربوط به ریموت رو دیکد کنید با یه گیرنده خودتون و بعد رو فرستنده خودتون پیاده سازی کنید.

      اکتبر 31, 2022 at 9:58 ق.ظ
  • علیرضا Reply

    ببخشید استاد این کد الان دارای پروتکل ارتباطی یا همون رمز گذاری شده هستش و اگه نباشه میتونیم اون رو دارای پروتکل یا رمز دار بکنیم برای امنیت ارتباطی مون؟

    نوامبر 5, 2022 at 3:16 ب.ظ
    • مهران ملکی Reply

      سلام.
      در این کد از نحوه رمزگذاری خاصی استفاده نشده. ولی در صورتی که مایل باشید بله میشه متن‌های ارسالی رو با روش مورد نظر خودتون کد کنید و در سمت گیرنده هم دیکود رو انجام بدید.

      نوامبر 11, 2022 at 2:22 ب.ظ
  • Masoud Reply

    سلام عبدالملکی
    یک متغیر استرینگ دارم که ۲۴ کارکتر ۰و ۱ داره
    چطور میتونم توسط فرستند rc سویچ به گیرنده ارسالش کنم

    نوامبر 7, 2022 at 5:12 ب.ظ
    • مهران ملکی Reply

      سلام.
      در این برنامه و در خط 45 و 47 کد مربوط به آردوینو فرستنده دقیقا همین کار انجام شده. میتونید با روند همین پروژه کار مورد نظرتون رو انجام بدید.

      نوامبر 11, 2022 at 2:25 ب.ظ
  • آهید Reply

    سلام ممنون بات آموزشهای خوبتون. جسارتا چرا دو جفت فرستنده و گیرنده با فرکانس های متفاوت توی تجهیزات مورد نیاز آورده شده؟ هر دو نیاز هست یا هر کدوم ترجیح دادیم؟

    دسامبر 30, 2022 at 7:04 ب.ظ
    • علی عبدالملکی Reply

      سلام
      ممنون از توجهتون
      خیر نیاز به داشتن هر 2 جفت نیست
      یک عدد گیرنده و یک عدد فرستنده با یک فرکانس کاری یا 433 یا 315 مگاهرتز میتونید استفاده کنید

      فوریه 27, 2023 at 6:32 ب.ظ
  • M Reply

    سلام جناب یسوالی داشتم آیا امکان ساخت transmitter هایی مث hackrf وجود داره ممنون میشیم راهنمایی کنین

    ژانویه 12, 2023 at 2:33 ب.ظ
    • علی عبدالملکی Reply

      سلام
      خیر ، امکان پذیر نیست

      فوریه 28, 2023 at 10:22 ق.ظ
  • محمود Reply

    با سلام ، از ماژول فرستنده و گیرنده 315/433 مگاهرتز RF آیا می شود برای انتقال تصویر دوربین های مداربسته مینیاتوری استفاده کرد؟

    مارس 29, 2023 at 5:50 ب.ظ
    • محمد دمیرچی Reply

      با سلام
      این ماژول برای انتقال دیتا با سرعت پایین استفاده می شود و برای انتقال تصویر کاربرد ندارد

      آوریل 8, 2023 at 4:58 ب.ظ
      • محمود Reply

        با سلام ، تشکر می کنم اگر بتوانید چند تا ماژول برای انتقال تصویر و صدا معرفی کنید

        نوامبر 11, 2023 at 8:16 ق.ظ
        • محمد دمیرچی Reply

          در صورتی که در زمینه انتقال هم زمان بر روی ربات ها میخواهید قرار بدهید، پیشنهاد میکنم از نسخه های آماده استفاده کنید.
          این موارد را می توانید از فروشگاه هایی که در زمینه کوادکوپتر کار میکنند تهیه کنید.

          نوامبر 11, 2023 at 8:43 ق.ظ
  • محمود Reply

    با سلام ، آیا میشه از این ماژول برای ارسال تصویر دوربین مداربسته مینیاتوری استفاده کرد؟ و اینکه اگر امکانش باشه برد آن تا چند متر خواهد بود؟

    مارس 30, 2023 at 4:47 ب.ظ
    • محمد دمیرچی Reply

      با سلام
      این ماژول ها برای ارسال دیتا با سرعت پایین استفاده می شود و امکان انتقال تصویر را ندارند.

      آوریل 8, 2023 at 4:56 ب.ظ
  • سعید Reply

    سلام و عرض ادب
    بنده یک ماژول گیرنده رادیویی کدلرن RX06 315MHZ و یک ریموت خودرو تهیه کردم که باهاش بدون برد آردینو led ها رو خاموش روشن می کنم اما نمیدونم برای آرودینو انو باید چه دستوراتی وارد کنم؟ لطفا راهنماییم کنید

    آوریل 19, 2023 at 12:06 ق.ظ
    • محمد دمیرچی Reply

      با سلام
      ماژول RX06 از نوع کد لرن نمی باشد. این ماژول گیرنده تمامی کد های فرکانس 315MHZ می باشد.
      از طرفی نیز ریموت های خودرو بیشتر 433 هستند. اما در صورتی که مدلی که شما تهیه کرده اید از نوع 315 می باشد مشکلی ندارد.
      شما کد سمت گیرنده آموزش را بر روی برد آردوینو خود آپلود کنید سپس سیم کشی مربوط به گیرنده را نیز انجام بدهید. با زدن دکمه های ریموت خود باید ID ریموت شما در سمت آردوینو نمایش داده شود.
      در صورتی که به درستی نمایش داده شد در بخش else کد یک if دیگر نیز اضافه میکنید که بررسی کند مقدار value آیا برابر ID ریموت شما می باشد یا خیر. در صورت برابر بودن دستوراتی که میخواهید انجام شود را در آنجا قرار میدهید.

      آوریل 25, 2023 at 9:25 ق.ظ
  • محمد Reply

    سلام وقتتون بخیر، ببخشید من چندین گیرنده ریموت 433 دارم که هر کودوم یک رله ای رو فعال/غیرفعال میکنه، میخواستم ببینم با این روشی که آموزش دادین و یک میکروکنترولر ESP32 میشه کد ریموت گیرنده هارو کپی کنم و با ماژول فرستنده 433 رله هارو با موبایل کنترل کنم ؟؟
    اگر آره رنج حدودی فرستنده چقدر هست ؟ آیا امکان افزایش رنجش هست ؟
    ممنون میشم راهنماییم کنید.

    می 6, 2023 at 5:15 ب.ظ
    • محمد دمیرچی Reply

      با سلام بله
      شما ابتدا با یک ماژول گیرنده 433 کد هایی که ریموت های شما ارسال میکنند را میخوانید و سپس با ماژول فرستنده می توانید دستور بدهید این کد ها را ایجاد کنید و به عنوان یک کپی از این ریموت ها عمل کنید.
      PS: از تمامی مدل میکرو کنترلر نیز برای این کار نیز میتوانید استفاده کنید
      برای رنج نیز ماژول فرستنده این مدل دستگاه ها حدودا مشابه ریموت ها می باشد. فقط توجه داشته باشید که بعضی از مدل ها 5 ولت و بعضی دیگر 3.3 ولت هستند (یک سری از مدل ها تا 12 ولت نیز ساپورت میکنند)
      همچنین تغذیه را به صورت کامل و بدون نویز به فرستنده بدهید رنج افزایش نیز میابد
      همچنین استفاده از آنتن نیز تا حدی مناسبی رنج را افزایش میدهد.

      می 10, 2023 at 5:40 ب.ظ
  • bijan Reply

    توی اطلاعات ماژول نوشته شده 3-5 متر ولی برد اش حتی بدون آنتن بالای ده متره

    ژوئن 24, 2023 at 10:58 ق.ظ
    • محمد دمیرچی Reply

      با سلام
      حداقل اندازه ای که میتواند برد بدهد را اعلام کرده ایم.
      توجه داشته باشید که شرایط محیطی تاثیر بسیار زیادی در این زمینه دارد.

      ژوئن 25, 2023 at 9:57 ق.ظ
  • عباس Reply

    خیلی عالی بود دستتون درد نکنه
    استفاده کردم

    فوریه 19, 2024 at 6:44 ب.ظ
    • محمد دمیرچی Reply

      با سلام
      ممنون بابت نظر شما

      فوریه 21, 2024 at 11:52 ق.ظ

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.