Полное руководство по модулю RF 433 МГц (передатчик/приемник) с Arduino
Эта статья представляет собой руководство по популярным модулям RF 433 МГц передатчика/приемника с Arduino. Мы объясним, как они работают, и покажем пример проекта на Arduino, который вы сможете использовать в своих собственных проектах.
У нас есть другие руководства по передатчику/приемнику 433 МГц, которые могут оказаться полезными:
Описание
В этом руководстве мы будем использовать передатчик FS1000A и соответствующий приемник, но приведенные инструкции также работают с другими модулями передатчика/приемника 433 МГц, которые функционируют аналогичным образом. Эти RF-модули очень популярны среди любителей Arduino и используются в самых разных приложениях, требующих беспроводного управления.
Эти модули очень дешевые, и вы можете использовать их с любым микроконтроллером, будь то Arduino, ESP8266 или ESP32.
Характеристики RF 433 МГц приемника
Диапазон частот: 433,92 МГц
Модуляция: ASK
Входное напряжение: 5 В
Цена: от $1 до $2
Характеристики RF 433 МГц передатчика
Диапазон частот: 433,92 МГц
Входное напряжение: 3-12 В
Цена: от $1 до $2
Где купить?
Вы можете приобрести эти модули всего за несколько долларов. Нажмите здесь, чтобы сравнить RF 433 МГц передатчик/приемник в нескольких магазинах и найти лучшую цену.
Arduino с модулями RF 433 МГц передатчика/приемника
В этом разделе мы создадим простой пример, который отправляет сообщение с одного Arduino на другую плату Arduino с помощью частоты 433 МГц. Одна плата Arduino будет подключена к передатчику 433 МГц и будет отправлять сообщение «Hello World!». Другая плата Arduino будет подключена к приемнику 433 МГц для получения сообщений.
Необходимые компоненты
Для этого примера вам понадобятся следующие компоненты:
2x Arduino – читайте Лучшие стартовые наборы Arduino
Вы можете воспользоваться ссылками выше или перейти непосредственно на MakerAdvisor.com/tools, чтобы найти все компоненты для ваших проектов по лучшей цене!
Установка библиотеки RadioHead
Библиотека RadioHead предоставляет простой способ работы с передатчиком/приемником 433 МГц на Arduino. Выполните следующие шаги, чтобы установить эту библиотеку в Arduino IDE:
Нажмите здесь, чтобы скачать библиотеку RadioHead. В папке Downloads должен появиться файл .zip.
Распакуйте библиотеку RadioHead.
Переместите папку библиотеки RadioHead в папку libraries установки Arduino IDE.
Перезапустите Arduino IDE.
Библиотека RadioHead великолепна и работает практически со всеми RF-модулями на рынке. Вы можете узнать больше о библиотеке RadioHead здесь.
Схема передатчика
Подключите модуль передатчика к Arduino, следуя приведенной ниже схеме.
Важно: всегда проверяйте распиновку используемого модуля передатчика. Обычно рядом с выводами есть подписи. Кроме того, вы также можете ознакомиться с техническим описанием (datasheet) вашего модуля.
Скетч передатчика
Загрузите следующий код на плату Arduino, которая будет выступать в роли передатчика. Этот код основан на одном из примеров, предоставленных библиотекой RadioHead.
#include <RH_ASK.h>
#include <SPI.h> // Not actually used but needed to compile
RH_ASK driver;
void setup()
{
Serial.begin(9600); // Debugging only
if (!driver.init())
Serial.println("init failed");
}
void loop()
{
const char *msg = "Hello World!";
driver.send((uint8_t *)msg, strlen(msg));
driver.waitPacketSent();
delay(1000);
}
Как работает скетч передатчика
Сначала подключите библиотеку RadioHead ASK.
#include <RH_ASK.h>
Для работы этой библиотеки необходима библиотека SPI. Поэтому вам также нужно подключить библиотеку SPI.
#include <SPI.h>
После этого создайте объект RH_ASK с именем driver.
В функции setup() инициализируйте объект RH_ASK с помощью метода init().
Serial.begin(9600); // Debugging only
if (!driver.init())
Serial.println("init failed");
В функции loop() мы записываем и отправляем наше сообщение. Сообщение сохраняется в переменной msg. Обратите внимание, что сообщение должно быть типа char.
const char *msg = "Hello World!";
Это сообщение содержит текст «Hello World!», но вы можете отправить что угодно, при условии, что данные будут в формате char.
Наконец, мы отправляем наше сообщение следующим образом:
driver.send((uint8_t *)msg, strlen(msg));
driver.waitPacketSent();
Сообщение отправляется каждую секунду, но вы можете настроить это время задержки.
delay(1000);
Схема приемника
Подключите модуль приемника к другому Arduino, следуя приведенной ниже схеме.
Важно: всегда проверяйте распиновку используемого модуля приемника. Обычно рядом с выводами есть подписи. Кроме того, вы также можете ознакомиться с техническим описанием (datasheet) вашего модуля.
Скетч приемника
Загрузите приведенный ниже код на Arduino, подключенный к приемнику. Этот код основан на одном из примеров, предоставленных библиотекой RadioHead.
#include <RH_ASK.h>
#include <SPI.h> // Not actualy used but needed to compile
RH_ASK driver;
void setup()
{
Serial.begin(9600); // Debugging only
if (!driver.init())
Serial.println("init failed");
}
void loop()
{
uint8_t buf[12];
uint8_t buflen = sizeof(buf);
if (driver.recv(buf, &buflen)) // Non-blocking
{
int i;
// Message with a good checksum received, dump it.
Serial.print("Message: ");
Serial.println((char*)buf);
}
}
Как работает скетч приемника
Аналогично предыдущему скетчу, вы начинаете с подключения необходимых библиотек:
#include <RH_ASK.h>
#include <SPI.h>
Вы создаете объект RH_ASK с именем driver:
RH_ASK driver;
В функции setup() инициализируйте объект RH_ASK.
void setup(){
Serial.begin(9600); // Debugging only
if (!driver.init())
Serial.println("init failed");
}
В функции loop() нам нужно задать буфер, размер которого соответствует размеру сообщения, которое мы будем получать. «Hello World!» содержит 12 символов. Вы должны соответствующим образом настроить размер буфера в зависимости от сообщения, которое будете получать (пробелы и знаки препинания тоже считаются).
uint8_t buf[12];
uint8_t buflen = sizeof(buf);
Затем проверьте, получено ли корректное сообщение. Если получено корректное сообщение, выведите его в монитор последовательного порта.
if (driver.recv(buf, &buflen)) {
int i;
// Message with a good checksum received, dump it.
Serial.print("Message: ");
Serial.println((char*)buf);
}
Демонстрация
В этом проекте передатчик отправляет сообщение «Hello World!» приемнику по радиоканалу. Эти сообщения отображаются в мониторе последовательного порта приемника. На следующем рисунке показано, что вы должны увидеть в мониторе последовательного порта Arduino IDE.
Заключение
Вам нужно иметь реалистичные ожидания при использовании этого модуля. Они работают очень хорошо, когда приемник и передатчик находятся близко друг к другу. Если вы разместите их слишком далеко друг от друга, связь будет потеряна. Дальность связи может варьироваться. Она зависит от напряжения, подаваемого на модуль передатчика, радиочастотных помех в вашей среде и от того, используете ли вы внешнюю антенну.
Если вы хотите использовать пульты дистанционного управления 433 МГц для связи с Arduino, следуйте этому руководству: :doc:`Декодирование и отправка RF-сигналов 433 МГц с Arduino </arduino/rnt/decode-and-send-433-mhz-rf-signals-with-arduino/index>`_.
Если вы начинающий пользователь Arduino, мы рекомендуем пройти наш мини-курс по Arduino. Он поможет вам быстро начать работу с этой замечательной платой (и он бесплатный!).
Вам также могут понравиться следующие ресурсы:
Вы можете найти все наши проекты и руководства по Arduino здесь.