استخدام مرسل/مستقبل راديوي ( 433MHz ) مع الاردوينو


بــــسم الله الرحمن الرحيــــم


قد تحتاج احياناً لصنع جهاز تحكم عن بعد (مرسل و مستقبل )  , أو استخدام الاردوينو بدلاً من اجهزة التحكم الراديوي الموجودة لديك ,  أو ارسال بيانات من حساس موجود في مكان ما الى متحكم في مكان آخر !

توجد العديد من الوسائل لنقل البيانات بين متحكمي اردوينو مثل البلوتوث , و الـWiFi  و الـ XBee  و غيرهـا .
في هذه التجربة سوف نستخدم مرسل و مستقبل راديوي 433Mhz RF Module ..
لقراءة قيمة حساس عن بعد !



RF 315/433 MHz
تحتاج الى :

• متحكم آردوينو ( عدد 2 ) .

• 433Mhz RF Module .
  ( يمكنك شراءه من هــنــا )

• مقاومة متغيرة  (potentiometer) .

• لوحة تجارب مثقبة + اسلاك توصيل .

• مكتبة rc-switch (حملها من هنا ) .

• مكتبة virtual Wire (حملها من هنا ) .





يتكون الموديول من جزئين ( المرسل و المستقبل ) :



المرسل TX


المستقبل RX


خصائص هذا النوع  :

- المرسل Tx  :  الفولتية ( من 3.3 - 12 فولت ) . 
- المستقبل Rx : الفولتية ( من 4.5 - 5 فولت ) .
- القدرة الكهربائية : 25mW . 
- سرعة ارسال البيانات : لا تتعدى 9Kbps .
- اقصى مدى : 100 متر (عند سرعة ارسال 400bps )
- التيار الأعظمي Imax : اقل من 50 ملي امبير . 



نقوم بتوصيل المقاومة المتغيرة مع الاردوينو الأولى و نصل المرسل معها , بحيث يقرأ الاردوينو قيمة الحساس و ثم يقوم بأرسالها الى بطاقة الاردوينو الثانية ..





التوصيل مع الاردوينو يكون كالتالي 
 : 










البرمجة  :

سوف نستخدم مكتبة rc-switch في كتابة الكود .
| يمكنك الاطلاع عى الامثلة المرفقة مع المكتبة فهي كافية لفهم عمل المكتبة |


كود المرسل(على الاردوينو رقم 1 ) :
____________________________

#include <RCSwitch.h>

RCSwitch mySwitch = RCSwitch();

void setup() 
{
  mySwitch.enableTransmit(10);
 // المرسل موصول مع المخرج 10في الاردوينو
}


void loop() {
 int sensorValue = analogRead(A0);
 delay(100);
 mySwitch.send(sensorValue , 12);
// رقم 12 يعني ارسال القيمة عبر 12 بت
 delay(2000);  
}






كود المستقبل(على الاردوينو رقم 2 ):

سوف نستخدم مثال جاهز موجود داخل المكتبة اسمه ReceiveDemo_simple 


#include <RCSwitch.h>

RCSwitch mySwitch = RCSwitch();

void setup() {
  Serial.begin(9600);
  mySwitch.enableReceive(0); 
 // Receiver on inerrupt 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();
  }
}






بعد تحميل الكود سيبدأ الاردوينو الاول بقراءة قيمة الحساس و ارسالها الى المستقبل .. 
و يقوم الاردوينو الثاني بقراءة هذه القيمة و عرضها على  serial monitor. 

ستظهر هذه النتيجة :










هناك تطبيقات عديدة على هذا الموضوع . 

- حيث يمكنك ببساطة صنع جهاز تحكم عن بعد .
( للتحكم بالروبوتات أو الابواب او الاضاءة .. إلخ ) !



هذه تجربة لعمل جهاز تحكم عن بعد لسيارة باستخدام نفس الموديل :









- و يمكن استبدال  الأردوينو بـجهاز التحكم الراديوي ليقوم بنفس المهام بشكل تلقائي .
على سبيل المثال ريموت اغلاق و فتح السيارة , بعد معرفة الاوامر التي يرسلها عند الضغط على الازرار فيه !   يمكن استبداله بآردوينو و مرسل راديوي , ليرسل الاردوينو نفس الاوامر دونة الحاجة للضغط على ازرار ! 
يمكن مثلاً جعل الابواب تفتح بشكل تلقائي عند دخول شخص للكراج ! 


هذه تجربة لفك تشفير اجهزة التحكم و اعادة ارسال الاوامر :
رابط التجربة 








المصادر :

• Genotronex .

• Ninja block  .


هل أعجبك الموضوع ؟

هناك 7 تعليقات :

  1. رائع :)
    شكرا جزيلاً

    ردحذف
  2. ممكن حضرتك توضح تجربة لفك تشفير اجهزة التحكم و اعادة ارسال الاوامر

    ردحذف
  3. هل استطيع الحصول عليه في العراق

    ردحذف
  4. اخي الكريم ممكن شرح الدرس باستخدام pic16f690

    ردحذف
  5. ما اسم المتحسس لكشف المواد الكيميائية؟

    ردحذف
  6. ما اسم المتحسس لكشف المواد الكيميائية؟

    ردحذف

جميع الحقوق محفوظة - علي الهضابين ©2012-2013 | ، يرجى ذكر المصدر عند النقل . Privacy-Policy | أنضم ألى فريق التدوين


تصميم alwan-blogger | تطوير Reda Yagoub