يتم التشغيل بواسطة Blogger.

الأحد، 20 مارس 2016

استخدام الاردوينو بدلاً من اجهزة التحكم الراديوي الموجودة لديك 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. 

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










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

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



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









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


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


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

إرسال تعليق

تطوير : مدونة حكمات