Arduino:Примеры/Гайд по использованию приемника/передатчика RF 433 MHz с Arduino

Материал из Онлайн справочника
Версия от 12:35, 20 мая 2023; EducationBot (обсуждение | вклад)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.



Гайд по использованию приемника/передатчика RF 433 MHz с Arduino[1]

Эта статья о популярных радиочастотных приемниках/передатчиках RF 433 MHz. В ней объясняется, как они работают, рассказывается об их функциях и содержится скетч Arduino, который вы можете использовать в собственных проектах.

Описание

Радиочастотные модули типа RF 433 MHz очень популярны среди людей, увлекающихся проектами на базе Arduino. Приемники и передатчики RF 433 MHz применимы во множестве ситуаций, где требуется беспроводное управление.

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

  • Частотный диапазон: 433,92 МГц
  • Модуляция: ASK
  • Входное напряжение: 5 вольт
  • Цена: 1-2 доллара

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

  • Частотный диапазон: 433,92 МГц
  • Входное напряжение: 3-12 вольт
  • Цена: 1-2 доллара

Где купить?

Приемники и передатчики типа RF 433 MHz можно купить на eBay. К примеру, тут.

Необходимые компоненты

Для нашего проекта понадобятся следующие компоненты:

Библиотека Radiohead

Кроме того, для этого проекта понадобится библиотека Radiohead. Она работает почти со всеми радиочастотными модулями, имеющимися на рынке. Более подробно об этом проекте можно почитать тут.

  • Загрузите библиотеку Radiohead отсюда
  • Распакуйте архив с библиотекой
  • Установите библиотеку в IDE Arduino
  • Перезапустите IDE Arduino

Схема и код для приемника

Теперь подключите компоненты друг к другу как показано на картинке ниже:

Затем загрузите на плату Arduino вот этот код:

#include <RH_ASK.h>
#include <SPI.h> // в скетче не используется, но нужна для компиляции 

RH_ASK driver;

void setup()
{
    Serial.begin(9600); // только в отладочных целях
    if (!driver.init())
         Serial.println("init failed");
         //  "Инициализация не удалась"
}

void loop()
{
    uint8_t buf[12];
    uint8_t buflen = sizeof(buf);
    if (driver.recv(buf, &buflen)) // неблокирующая функция
    {
      int i;
      // пришло сообщение с хорошей контрольной суммой,
      // выгружаем его:
      Serial.print("Message: ");  //  "Сообщение: "
      Serial.println((char*)buf); 
    }
}

Схема и код для передатчика

Соберите компоненты для передающей стороны, как показано на схеме ниже:

Затем загрузите на Arduino код, показанный ниже:

#include <RH_ASK.h>
#include <SPI.h>  //  в скетче не используется,
                  //  но нужна для компиляции 

RH_ASK driver;

void setup()
{
    Serial.begin(9600);  //  для отладочных целей
    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);
}

Демонстрация

В этом проекте передатчик по радиочастоте отправляет приемнику сообщение «Hello, world!» Затем приемник печатает это сообщение в мониторе порта IDE Arduino. Выглядит это примерно так:

Качество связи

Не ждите от этих модулей слишком многого. Приемник и передатчик RF 433 MHz работают очень хорошо, когда находятся близко, но если разместить их далеко друг от друга, то связь может оборваться.

Дальность действия сигнала зависит от ряда факторов: от того, сколько напряжения подано на передатчик, от радиочастотного шума в окружающем пространстве и того, используете ли вы внешнюю антенну.

См.также

Внешние ссылки