بــــسم الله الرحمن الرحيــــم
قد تحتاج احياناً لصنع جهاز تحكم عن بعد (مرسل و مستقبل ) , أو استخدام الاردوينو بدلاً من اجهزة التحكم الراديوي الموجودة لديك , أو ارسال بيانات من حساس موجود في مكان ما الى متحكم في مكان آخر !
توجد العديد من الوسائل لنقل البيانات بين متحكمي اردوينو مثل البلوتوث , و الـWiFi و الـ XBee و غيرهـا .
في هذه التجربة سوف نستخدم مرسل و مستقبل راديوي 433Mhz RF Module ..
لقراءة قيمة حساس عن بعد !
لقراءة قيمة حساس عن بعد !
RF 315/433 MHz |
تحتاج الى :
• متحكم آردوينو ( عدد 2 ) .
• 433Mhz RF Module .
( يمكنك شراءه من هــنــا )
( يمكنك شراءه من هــنــا )
• مقاومة متغيرة (potentiometer) .
• لوحة تجارب مثقبة + اسلاك توصيل .
• مكتبة rc-switch (حملها من هنا ) .
• مكتبة virtual Wire (حملها من هنا ) .
يتكون الموديول من جزئين ( المرسل و المستقبل ) :
المرسل TX |
المستقبل RX |
خصائص هذا النوع :
- المستقبل 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);
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 .
رائع :)
ردحذفشكرا جزيلاً
العفو :)
حذفممكن حضرتك توضح تجربة لفك تشفير اجهزة التحكم و اعادة ارسال الاوامر
ردحذفهل استطيع الحصول عليه في العراق
ردحذفاخي الكريم ممكن شرح الدرس باستخدام pic16f690
ردحذفما اسم المتحسس لكشف المواد الكيميائية؟
ردحذفما اسم المتحسس لكشف المواد الكيميائية؟
ردحذف