Главная » 2016 » Март » 30 » Радиомодули на 433MHz
22:13
Радиомодули на 433MHz

Радиомодули

Технические характеристики передатчика:

  • Рабочее напряжение: 3 В - 12 В. Чем больше напряжение, тем больше мощность передатчика.
  • Рабочая сила тока: максимально - 40 мА, минимально - 9 мА.
  • Режим резонанса: (SAW).
  • Режим модуляции: ASK.
  • Рабочий частотный диапазон: 315 МГц или 433 МГц.
  • Мощность: 25 мВ (315 МГц при 12 В).
  • Погрешность частот: +150 кГц (макс.).
  • Скорость: не больше 10 Кб/с.

Этот модуль обеспечивает передачу данных на расстояние до 90 метров на открытом пространстве при рабочем напряжении 12 В..

 

 

 

 

 

 

 

 

 

 

Технические характеристики приемника:

  • Рабочее напряжение: 5 В +0.5 В- постоянный ток.
  • Рабочая сила тока: <5.5 мА.
  • Метод приема данных: OOK/ASK.
  • Рабочие частоты: 315 МГц - 433.92 МГц.
  • Пропускная способность: 2 МГц.
  • Чувствительность: более 100 дБм (50 Ом).
  • Скорость приемника: <9.6 Кб/сек (при 315 МГц и -95 дБм).

Можно использовать дополнительную антенну для улучшения качества беспроводного соединения.

Это простые радиомодули, передатчик (модель FS1000A) собран на двух транзисторах, модуляция сигнала амплитудная, несущая частота равна 433 Мгц, стабилизирована ПАВ резонатором. Плата передатчика имеет три вывода: Vcc, Gnd для питания (3,5-12В), вывод data является входом для модуляции данных, высокий логический уровень на этом выводе включает передатчик. Генератор передатчика выполнен на одном транзисторе Q1. Частота генерации стабилизирована фильтром SAW (ПАВ). Благодаря применению фильтра схема становится простой и надежной. Транзистор Q2 позволяет включить или выключить генератор. Через конденсатор C2 генерируемая частота идет в антенну. При напряжении на входе TXD 4,5 В транзистор Q2 открывается и схема генератора подключается к общему проводу. Происходит генерация сигнала несущей частоты.

Приемник (модель XY-MK-5V) представляет собой сверхгенератор, на выходе которого стоит компаратор, приемники такого типа являются очень простыми из-за малого количества деталей, обладают высокой чувствительностью и автоматической регулировкой усиления, однако есть и недостатки, из-за высокой чувствительности и широкой полосы пропускания, он ловит много помех, на выходе всегда присутствует шум. Плата приемника имеет четыре вывода: Vcc, Gnd – питание 5В, и выход в виде двух совмещенных выводов (data).

После сборки комплекта приемник + передатчик 433MHZ может потребоваться настроить приемник. Для этого предусмотрена подстроечная катушка L0. Для настройки необходимо включить передатчик в режим отправки сигналов с частотой модуляции несущей 2-5 Гц и проверить наличие сигнала на выходе приемника. Перед настройкой следует проверить работу канала связи в таком режиме при удалении между приемником и передатчиком на 1, 5 м и более. Если сигнала нет, то следует вращать сердечник катушки L0, добиваясь наилучшего приема. Далее подать на передатчик цифровой сигнал который будет использоваться для связи между приборами, установить щуп осциллографа в точку соединения конденсаторов C8 и С9 и растягивая, сжимая витки катушки L1 добиться наибольшей амплитуды сигнала на экране осциллографа. После этого опять подстроить индуктивность L0. Окончательную настройку следует проводить при разнесении модулей на расстояние, соответствующему предполагаемому в проекте расстоянию.

 

Библиотека VirtualWire

Есть библиотека VirtualWire, поддерживающая эти (и им подобные) радио-модули. С помощью этой библиотеки очень легко организовать передачу и приём небольших пакетов информации.

Принцип использования: на передатчике формируем набор данных для пересылки (в виде строки символов либо байт-кодов), а на приёмнике, при получении "корректного" пакета данных, их отображаем.

Функции, которые использованы для работы с библиотекой описаны ниже.

Для работы библиотеки VirtualWire ее надо включить в скетч:

#include <VirtualWire.h>

Для выбора пина с данными для передатчика:

vw_set_tx_pin(pin)

Для выбора пина с данными для приемника:

vw_set_rx_pin(pin)

Необходимо настроить скорость передачи. Скорость трансмиттера должна быть одинаковой со скоростью ресивера.

Скорость передачи данных будет числом в диапазоне от 0 до 9600. При передаче данных на короткие расстояния, можно использовать большую скорость, при больших расстояниях (вплоть до 90 метров), скорость передачи данных надо максимально уменьшать.

vw_setup(uint16_t speed);

Запуск ФАЧП надо провести до приема сигнала:

vw_rx_start();

Когда данные будут получены, vw_have_message() вернет состояние true.

vw_rx_stop();

Блокировка и ожидание трансмиттера при простое:

vw_wait_tx();

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

vw_send(uint8_t* buf, uint8_t len);

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

vw_have_message();

Дополнительную информацию можно почитать на Seeed Wiki (английский язык)

 

 

Пример кода передатчика отправляющего данные с датчика DHT11

    #include <VirtualWire.h>
    #include "DHT.h"
    DHT dht;

    const int led_pin = 13; // Пин светодиода
    const int transmit_pin = 12; // Пин подключения передатчика

    void setup()
    {
      dht.setup(3); // data pin 3
      
      vw_set_tx_pin(transmit_pin);
      vw_setup(2000);       // Скорость передачи (Бит в секунду)
      pinMode(led_pin, OUTPUT);
    }

    void loop()
    {
  int humidity = dht.getHumidity();
  int temperature = dht.getTemperature();
  int ID = 1;
 
    char msg[26];
    // формирум сообщение в формате IDномер.Tтемпература.Hвлажность
    snprintf(msg, 26, "ID%d.T%u.H%u ", ID, temperature, humidity);
      
      digitalWrite(led_pin, HIGH); // Зажигаем светодиод в начале передачи
      vw_send((uint8_t *)msg, strlen(msg)); // Отправка сообщения
      vw_wait_tx(); // Ожидаем окончания отправки сообщения
      digitalWrite(led_pin, LOW); // Гасим светодиод в конце передачи
      delay(1000); // Пауза 1 секунда
    }

 

 

Пример кода приёмника

 

    #include <VirtualWire.h>

    byte message[VW_MAX_MESSAGE_LEN]; // Буфер для хранения принимаемых данных
    byte messageLength = VW_MAX_MESSAGE_LEN; // Размер сообщения

    const int led_pin = 13; // Пин светодиода
    const int receiver_pin = 12; // Пин подключения приемника

    void setup()
    {
      Serial.begin(9600); // Скорость передачиданных
      Serial.println("MX-RM-5V is ready");
      vw_set_rx_pin(receiver_pin); // Пин подключения приемника

      vw_setup(2000); // Скорость передачи данных (бит в секунду)
      vw_rx_start(); // Активация применика
    }
    void loop()
    {
      if (vw_get_message(message, &messageLength)) // Если есть данные..
      {
        digitalWrite(led_pin, HIGH); // Зажигаем светодиод в начале приема пакета
        for (int i = 0; i < messageLength; i++)
        {
          Serial.write(message[i]); // выводим их в одной строке
        }
        messageLength = VW_MAX_MESSAGE_LEN;
        Serial.println();
        digitalWrite(led_pin, LOW); // Гасим светодиод в конце
      }
    }

 

Категория: Электроника | Просмотров: 1105 | Добавил: graftsv | Теги: Радиомодули, 433мгц
Всего комментариев: 0
avatar