Комплект односторонней беспроводной связи. В комплекте 1 приемник и 1 передатчик. Оба настроены на частоту 433МГц. Является самым дешевым вариантом для беспроводной связи, в том числе и в системах «умный дом». Однако следует помнить, что частота 433МГц является очень загруженной в крупных городах, следовательно, работа устройства может быть затруднена. Отличительной особенностью приемника и передатчика является возможность начала работы сразу после подачи напряжения.
В примере тестируется отправка данных о количестве секунд с момента запуска контроллера. И прием вторым устройством отправленных данных. (Для тестирования примеров использовались контроллеры Smart UNO)
Что нужно | Кол-во, шт |
---|---|
Контроллер | 2 |
Комплект беспроводной RF 433MHz | 1 |
Провода папа-мама | 6 |
Подключение:
Скетч для передатчика:
#include <VirtualWire.h> // Подключение библиотеки VirtualWire.h
const int led = 13; // Пин светодиода
const int transmit = 12; // Пин передатчика
void setup()
{
vw_set_tx_pin(transmit); // Установка пина передачи данных
vw_setup(2000); // Скорость передачи (Бит в секунду)
pinMode(led, OUTPUT);
}
void loop()
{
digitalWrite(led, HIGH); // Зажечь светодиод перед передачей
int seconds = (millis() / 1000); // Получение количества прошедших секунд
String secondsresult = String(seconds); // Присвоить полученное значение строковой переменной
char msg[14];
secondsresult.toCharArray(msg, 14); //Скопировать символы строки в буфер.
vw_send((uint8_t *)msg, strlen(msg)); // Отправить сообщение
vw_wait_tx(); // Подождать до окончания отправки
digitalWrite(led, LOW); // Сообщение отправлено - погасить светодиод
delay(1000); // Задержка 1 секунда
}
Подключение:
Скетч для приемника:
#include <VirtualWire.h> //Подключение библиотеки VirtualWire.h
byte message[VW_MAX_MESSAGE_LEN]; // Буфер хранения данных
byte messageLength = VW_MAX_MESSAGE_LEN; // Размер сообщения
const int receiver = 11; // Пин для приемника
void setup()
{
Serial.begin(9600); // Для тестирования принятых сообщений
Serial.println("Receiver is waiting for messages"); //Вывод сообщения
vw_set_rx_pin(receiver); // Установка пина для приема
vw_setup(2000); // Скорость передачи данных (бит в секунду)
vw_rx_start(); // Инициализация приемника
}
void loop()
{
messageLength = VW_MAX_MESSAGE_LEN; //Определение длины сообщения
if (vw_get_message(message, &messageLength)) // Если данные получены
{
for (int i = 0; i < messageLength; i++) //В цикле
{
Serial.write(message[i]); // вывод их посимвольно в строку
}
Serial.write(" seconds from start"); //завершить сообщение
Serial.println(); //Вывести набранную строку
}
}