الثلاثاء، 8 أكتوبر، 2013

المرسل و المستقبل الراديوي RF 315/433 MHz

   

هناك طرق عديدة لارسال البيانات او أوامر التحكم لاسلكياً , فهناك البلوتوث , و ال Xbee و ال WiFi , و الأمواج الراديوية Radio Frequency , و تختلف كل تقنية عن الأخرى بمدى الأرسال , و سرعة ارسال البيانات في الثانية , و كمية الطاقة التي يستهلكها , بالأضافة للسعر .


اليوم سأتحدث عن مرسل راديوي مناسب للكثير من المشاريع , سعره رخيص مقارنة من انواع الارسال الأخرى "لا يتعدى ثمنه 6 دنانير في الاردن" و مدى جيد للكثير من التطبيقات .

صورة للمستقبل Receiver
صورة للمرسل Transmitter


لو أردنا عمل ريموت كنترول بسيط , بمرسل و مستقبل من صنعك فهذا النوع مناسب جداً .



الخصائص الكهربائية لهذا الموديل كالآتي :

المرسل Tx : الفولتية : من 3.3 - 12 فولت .
المستقبل Rx :الفولتية 4.5 - 5 فولت .
القدرة الكهربائية = 25mW .
سرعة ارسال البيانات لا تتجاوز 9Kbps
المدى لغاية 100 متر "عند سرعة ارسال 400bps " .
التيار الأعظمي Imax اقل من 50 ملي امبير .
تقنية التعديل Modulation tech : يستخدم ASK .

ما ستحتاجه لتنفيذ هذه التجربة :
ستحتاج إلى :



1) بطاقة أردوينو عدد 2 "او يمكن استخدام متحكم اصغري على ال BreadBoard " .


2) الموديول RF 315MHz




3)مصدر جهد "بطارية 9 فولت " اختياري .

4) اسلاك توصيل

5) BreadBoard .

التوصيل :

هذين المخططين يبينان التوصيل لكل من دارة الارسال و الاستقبال .









المرسل Transmitter 

البرمجة .

سأقوم الآن بتنفيذ برنامج بسيط , حيث يقوم المرسل بارسال امر للمستقبل ليضيء الباعث الضوئي الموصل على المدخل الرقمي Pin D13 لمدة ثانيتين و اطفاءه بنفس المدة .

ستحتاج لتحميل مكتبة ال virtual Wire و هي مكتبة للتعامل مع مثل هذه الانواع من المرسلات الراديوية.

لتحميل المكتبة من خلال هذا الرابط

استخدامها سهل و سأوضحه بهذا المثال



كود المرسل  و 
كود المستقبل .
//simple Tx on pin D12
//Written By : Mohannad Rawashdeh 
// 3:00pm , 13/6/2013 
//http://www.genotronex.com/
//..................................
#include <VirtualWire.h>
char *controller;
void setup() {
  pinMode(13,OUTPUT);
vw_set_ptt_inverted(true); // 
vw_set_tx_pin(12);
vw_setup(4000);// speed of data transfer Kbps
}

void loop(){
 controller="1"  ;
 vw_send((uint8_t *)controller, strlen(controller));
 vw_wait_tx(); // Wait until the whole message is gone
 digitalWrite(13,1);
 delay(2000);
 controller="0"  ;
 vw_send((uint8_t *)controller, strlen(controller));
 vw_wait_tx(); // Wait until the whole message is gone
 digitalWrite(13,0);
 delay(2000);

}

//simple Rx on pin D12
//Written By : Mohannad Rawashdeh 
// 3:00pm , 13/6/2013 
//http://www.genotronex.com/
//..................................
#include <VirtualWire.h>
void setup()
{
    vw_set_ptt_inverted(true); // Required for DR3100
    vw_set_rx_pin(12);
    vw_setup(4000);  // Bits per sec
    pinMode(13, OUTPUT);

    vw_rx_start();       // Start the receiver PLL running
}
    void loop()
{
    uint8_t buf[VW_MAX_MESSAGE_LEN];
    uint8_t buflen = VW_MAX_MESSAGE_LEN;

    if (vw_get_message(buf, &buflen)) // Non-blocking
    {
      if(buf[0]=='1'){

   
   digitalWrite(13,1);
      }   
   if(buf[0]=='0'){
  digitalWrite(13,0);
    }

}
}








و هذا الفيديو يوضح العملية .




لشرح أكثر تفصيلاً لهذا المرسل يمكنك زيارة المقال الذي كتبته لهذه القطعة على موقع instructables من هنا 

تحياتي

5 التعليقات :

  1. الله يعطيك العافية شكراً على هذا المجهود

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

    ردحذف
  3. ما السبب ف استخدام ٢ اردوينو

    ردحذف

 
Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.