Передача данных с помощью радиомодулей на Ардуино

Радиомодули на 433 МГц или RF модули очень полезная штуки которые вместе с Arduino позволяют передавать данные от передатчика к приемнику без проводов. В среде Arduino для этого есть специальная библиотека с примерами программ для работы с такими радиомодулями. Данные модули отлично подойдут для реализации проектов с дистанционным управлением и небольшим объемом передаваемых данных. Радиус действия таких модулей порядка 150 метров.

Данные модули не используют какие либо протоколы передачи данных, все что поступает на вход data in передатчика передается приемнику. И приемник и передатчик имеют 4 вывода - земля,питание,антенна и данные.

Для того чтобы посмотреть что приходит в приемник его можно подключить к com порту компьютера. И посмотреть данные через программы мониторинга порта, можно  использовать тернинал порта среды Arduino. При подключении в терминале будет непрерывный поток данных, среди которого появляются те данные что мы шлем в передатчик. Библиотека VirtualWire позволяет извлекать из этого потока данные отсылаемые передатчиком.

Передатчик

trans

 

Характеристики передатчика:

  • напряжение - от 3 до 12 В;
  • мощность на выходе - 32 мВт;
  • рабочий ток - 8мА;
  • скорость передачи данных - 8 кб/сек;
  • рабочие температуры - от -20 до 80 градусов С.

Приемник

res>

Характеристики приемника:

  • напряжение:  5 В;
  • ток: 5,5 мА;
  • рабочая частота: 315-433 МГц;
  • скорость приема 9,6 кб/сек.

Код передатчика

#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);

Код приемника

#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);
    }
 
}
}

Схемы подключения радиомодулей передатчика и приемника

trans c

reciver c

Загрузка...