Модуль приемопередатчика RF 315/433 МГц и подключение его к Arduino

Модуль приемопередатчика RF 315/433 МГц и подключение его к ArduinoМодуль приемопередатчика RF 315/433 МГц и подключение его к ArduinoИз этой статьи мы с вами узнаем, о работе простого модуля радиочастотного передатчика-приемника, который используется в дистанционном управлении для автомобилей или для управления простыми задачами, такими как включение / выключение реле управления. Так же будет рассмотрена схема подключения его к Ардуино.
Инструменты и материалы:
-Две платы Arduino Uno;
-Модуль приемопередатчика RF 315MHz или 433MHz;-Перемычки;-Макетная плата;-Две батареи 9В;
Модуль приемопередатчика RF 315/433 МГц и подключение его к ArduinoШаг первый: спецификация модуля
На фото первый приемник, второй — передатчик.
Модуль приемопередатчика RF 315/433 МГц и подключение его к ArduinoМодуль приемопередатчика RF 315/433 МГц и подключение его к ArduinoЭти модули имеет следующие характеристики:
Передатчик:
Рабочее напряжение: 3–12 В.
Потребляемая мощность: 12 В
Рабочий ток: макс. 40 мА и мин. 9 мА
Режим резонанса: SAW
Режим модуляции: ASK
Рабочая частота: 315 МГц или 433 МГц
Мощность передачи: 25 мВт (315 МГц при 12 В)
Погрешность частоты: +150 кГц (макс)
Скорость: менее 10 Кбит / с.
Таким образом, этот модуль будет передавать сигнал до 90 м на открытой местности.
Приемник:
Рабочее напряжение: 5,0 В постоянного тока
Рабочий ток: макс. ≤5,5 мА
Метод работы: OOK / ASK
Рабочая частота: 315–433,92 МГц
Полоса пропускания: 2 МГц
Чувствительность: 100 дБм (50 Ом)
Скорость передачи: <9,6 Кбит / с (на 315 МГц и -95 дБм)
Использование дополнительной антенны повысит эффективность беспроводной связи.
Шаг второй: схема
Подключение модулей очень простое:
передатчик
Vcc >>>> 5V
ATAD >>> D12 (можно изменить в коде)
Gnd >>> Gnd
приемник
Vcc >>>> 5V
Data >>> D12
Gnd >>> Gnd
Модуль приемопередатчика RF 315/433 МГц и подключение его к ArduinoМодуль приемопередатчика RF 315/433 МГц и подключение его к ArduinoШаг третий: библиотека виртуальных проводов Arduino
Существует популярная библиотека для arduino под названием «VirtualWire», созданная Майком МакКоли.
VirtualWire — это библиотека Arduino, которая предоставляет функции для отправки коротких сообщений без адресации, повторной передачи или подтверждения. Поддерживает ряд недорогих радиопередатчиков и приемников.
Эта библиотека позволяет легко отправлять и получать данные.
Сначала нужно загрузить библиотеку отсюда.
Затем нужно извлечь папку и переместить ее в «Библиотеки» в папке arduino. Это простой код, он отправит символ «1», а через 2 секунды отправит символ «0» и так далее. Светодиод D13 на плате arduino должен быть включен, когда получен символ ‘1’ и выключен, когда получен символ ‘0’.
Код для передатчика:

Самый востребованный вид авточехлов из экокожи
7 часов назад
Мужской триммер для бороды и волос. -50%!
9 часов назад

//simple Tx on pin D12  //Written By : Mohannad Rawashdeh  // 3:00pm , 13/6/2013  //http://www.genotronex.com/  //..................................  #include  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 Tx on pin D12  //Written By : Mohannad Rawashdeh  // 3:00pm , 13/6/2013  //http://www.genotronex.com/  //..................................  #include  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);  }    }  }

Модуль приемопередатчика RF 315/433 МГц и подключение его к ArduinoМодуль приемопередатчика RF 315/433 МГц и подключение его к ArduinoМодуль приемопередатчика RF 315/433 МГц и подключение его к ArduinoШаг четвертый: один передатчик, несколько приемников
Можно подключить несколько приемников и отправлять данные с одного главного передатчика.
При этом понадобится декодер/энкодер.
Энкодер — это схема, которая преобразует набор сигналов в код.
Декодер — это схема, которая преобразует код в набор сигналов.
Если нужна микросхема кодировщика / декодера, можно использовать PT2262 и PT2272.
Ниже простой пример, для 1 главного передатчика, 2 приемников. Отправка команды через последовательный порт для приемника, чтобы включить / выключить светодиод.
Код передатчика:

//simple Tx on pin D12  //Written By : Mohannad Rawashdeh  // 3:00pm , 13/6/2013  //http://www.genotronex.com/  //..................................  #include   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="A1"  ;  vw_send((uint8_t *)controller, strlen(controller));  vw_wait_tx(); // Wait until the whole message is gone  digitalWrite(13,1);  delay(1000);  digitalWrite(13,0);  delay(1000);  controller="B1"  ;  vw_send((uint8_t *)controller, strlen(controller));  vw_wait_tx(); // Wait until the whole message is gone  digitalWrite(13,1);  delay(1000);  digitalWrite(13,0);  delay(1000);    }

Код первого приемника:

//simple Tx on pin D12  //Written By : Mohannad Rawashdeh  // 3:00pm , 13/6/2013  //http://www.genotronex.com/  //..................................  #include   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]=='A')&&(buf[1]=='1')){           digitalWrite(13,1);        delay(1000);        }          }        else{    digitalWrite(13,0);      }    }

Код второго приемника:

//simple Tx on pin D12  //Written By : Mohannad Rawashdeh  // 3:00pm , 13/6/2013  //http://www.genotronex.com/  //..................................  #include   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]=='B')&&(buf[1]=='1')){           digitalWrite(13,1);        delay(1000);        }          }        else{    digitalWrite(13,0);      }    }

Модуль приемопередатчика RF 315/433 МГц и подключение его к ArduinoМодуль приемопередатчика RF 315/433 МГц и подключение его к ArduinoМодуль приемопередатчика RF 315/433 МГц и подключение его к ArduinoМодуль приемопередатчика RF 315/433 МГц и подключение его к ArduinoМодуль приемопередатчика RF 315/433 МГц и подключение его к ArduinoМодуль приемопередатчика RF 315/433 МГц и подключение его к ArduinoШаг пятый: о VirtualWire
VirtualWire — это библиотека Arduino, которая предоставляет функции для отправки коротких сообщений без адресации, повторной передачи или подтверждения, что немного похоже на UDP по беспроводной сети, с использованием ASK (амплитудная манипуляция). Поддерживает ряд недорогих радиопередатчиков и приемников.
Сообщения отправляются с обучающей преамбулой, длиной сообщения и контрольной суммой. Сообщения отправляются с кодированием от 4 до 6 бит для хорошего баланса постоянного тока и контрольной суммой CRC для целостности сообщения.
Можем ли мы использовать последовательную связь ?
Приемникам ASK требуется серия обучающих импульсов для синхронизации передатчика и приемника, а также требуется хороший баланс между 0 и 1 в потоке сообщений для поддержания баланса постоянного тока в сообщении. UARTs не предоставляет их. Они немного работают с ASK wireless, но не так хорошо, как этот код.
Поэтому ответ будет — нет.
Чтобы использовать библиотеку VirtualWire, необходимо

#include  

Чтобы выбрать PIN-код приемника, аннулируем:

vw_set_tx_pin

Чтобы выбрать PIN-код приемника, аннулируем:

Средство для восстановления суставов и укреплению тканей
7 часов назад
Лазерный проектор рождество купить по выгодной цене...
9 часов назад

vw_set_rx_pin

Устанавливаем скорость передачи, скорость Tx должна быть такой же, как и On Rx.
Скорость будет составлять количество бит в секунду в диапазоне 0-9600. Для небольших расстояний можно использовать быструю скорость , для дальних расстояний «до 90 м» нужно использовать как можно более низкую скорость передачи.

vw_setup(uint16_t speed);

Запускаем программу PLL приемника:

vw_rx_start ();

Когда сообщение доступно, функция vw_have_message() вернет значение true:

vw_rx_stop ();

Блокируем и ждем пока передатчик не будет в режиме ожидания:

vw_wait_tx ();

Блокируем пока сообщение не станет доступным от получателя:

vw_wait_rx ();

Отправляем сообщение заданной длины:

vw_send (uint8_t * buf, uint8_t len);

Возвращает значение, если сообщение не прочитано:

vw_have_message ();

Модуль приемопередатчика RF 315/433 МГц и подключение его к Arduino

Революционное средство для потенции...
6 часов назад
Умные часы Smart Watch V8 + Power Bank и наушники в подарок
10 часов назад

Читайте также