Беспроводной передатчик FS1000A и приемник MX-RM-5V
Содержание
Обзор беспроводного передатчика и приемника 433 МГц
Для разработчикам Arduino-устройств существует множество модулей для организации различных технологий беспроводной связи: модули WiFi, GSM/GPRS, IR, Bluetooth, радиомодули для работы в различных частотных диапазонах. Комплект радиомодулей : передатчик (FS1000A) и приемник (MX-RM-5V), предназначен для передачи данных по радиоканалу на частоте 433 МГц. Указанное производителем расстояние уверенного приема 50-100 м в пределах прямой видимости (в зависимости от условий связи и напряжения питания), которое можно увеличить подключением антенн к передатчику и приёмнику. В качестве простейшей антенны можно использовать кусок провода длиной 17 см. Преимуществом данного вида ридиомодулей является их дешевизна и простота подключения к платам Арудино. К недостаткам отнесем отсутствие обратной связи, низкую скорость передачи и наличие шумов от большого количества других устройств (радиолюстр, радиорозеток, брелков, радиоуправляемых моделей), работающих на этой частоте.Технические характеристики модуля
- Напряжение питания передатчика: 3-12 В
- Напряжение питания приемника: 5 В
- Несущая частота: 433 МГц
- Потребляемый ток передатчиков: 8 мА
- Потребляемый ток приемником: 4,5 мА
- Чувствительность приемника: −106…-110 дБм
- Выходная мощность передатчика: 32 мВт
- Макс пропускная способность передатчика: 8 кб/сек
- Макс пропускная способность приемника: 5 кб/сек
- Диапазон рабочих температур: −20…+80 °C
Подключение
Передатчик FS1000A имеет 3 вывода и контакт для подпайки антенны (рисунок 1):- VCC — (питание 3-12 В);
- GND — (земля).
- DATA — вход для модуляции данных;
- ANT — антенна.

Рисунок 1. Контакты передатчика FS1000A
Передатчик собран на двух транзисторах, модуляция сигнала амплитудная, контакт ATAD является входом для модуляции данных, высокий логический уровень на этом выводе включает передатчик. Приемник MX-RM-5V имеет 4 вывода и контакт для подпайки антенны (рисунок 2):- VCC — (питание 3-12 В);
- GND — (земля).
- DATA — вход для модуляции данных;
- ANT — антенна.

Рисунок 2. Контакты приемника MX-RM-5V
- VCC — (питание 5 В);
- GND — (земля).
- DATA — вход данных;
- ANT — антенна.
Пример использования
Обычно передатчик (FS1000A) и приемник (MX-RM-5V) используют для передачи данных с одного Arduino-устройства на другое Arduino-устройствo. Но это не единственное их применение. Большое количество бытовых устройств (радиолюстры, радиорозетки, брелки), работают на частоте 433 МГц, и можно создавать с помощью данных модулей нестандартные устройства для управления бытовыми устройствами. Рассмотрим пример создания самодельного пульта для управления радиорозетками UNIEL (рисунок 3). Если количества кнопок идущего в комплекте пульта не хватает, создадим пульт управления радиорозетками UNIEL на Arduino.
Рисунок 3. Радиорозетки UNIEL
Нам понадобятся следующие детали:- плата Arduino UNO
- плата прототипирования
- передатчик FS1000A
- клавиатура 4x4
- соединительные провода
- приемник MX-RM-5V

Рисунок 4. Установка кодов группы и индивидуальных кодов для радиорозеток.
Прежде чем управлять радиорозетками с платы Arduino, необходимо получить данные о протоколе передачи данных между пультом и розетками. Для этого нам и пригодится приемник MX-RM-5V. Соберем схему, показанную на рис. 5.
В итоге получаем:

Рисунок 6. Схема в сборе.
Загрузим на плату Arduino скетч из листинга 1 –пример из библиотеки RCswitch – ReceiveDemo_Advanced. Листинг 1#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch();
void setup() {
Serial.begin(9600);
mySwitch.enableReceive(0); // Receiver on inerrupt 0 => that is pin #2
}
void loop() {
if (mySwitch.available()) {
output(mySwitch.getReceivedValue(), mySwitch.getReceivedBitlength(),
mySwitch.getReceivedDelay(),mySwitch.getReceivedRawdata(),
mySwitch.getReceivedProtocol());
mySwitch.resetAvailable();
}
} После загрузки скетча, открываем монитор последовательного порта Arduino IDE, нажимаем кнопки пульта и видим, что приемник принимает данные с пульта (рисунок 8). Для написания следующего скетча (пульт управления радиорозетками UNIEL на Arduino) нам понадобятся следующие параметры: - Decimal – 24 Bit;
- PulseLength – 312 microseconds;
- Protocol – 1.

Рисунок 7. Обработка данных со стандартного пульта UNIEL.
Теперь у нас все есть для создания своего пульта на Arduino для управления радиорозетками. Соберем схему согласно рис. 8.
Рисунок 8. Схема соединений для самодельного пульта для управления радиорозетками UNIEL
Получаем следующие:
Рисунок 9. Схема в сборе.
Загружаем на плату Arduino скетч из листинга 2. В скетче используем библиотеки RCswitch и Keypad (для работы с клавиатурой). Мы можем назначать розеткам любую группу и любой код. Нажатие на клавишу вызывает изменение состояние радиорозетки (включение/выключение). Листинг 2#include <Keypad.h>
const byte ROWS = 4; //4 rows
const byte COLS = 4; //4 columns
char keys[ROWS][COLS] = {
{'1','2','3','a'},
{'4','5','6','b'},
{'7','8','9','c'},
{'*','0','#','d'}
};
byte rowPins[ROWS] = {13, 12, 11, 10}; // контакты row
byte colPins[COLS] = {7, 6, 5, 4}; //контакты row
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch();
// группы отправки по RF
char kodGroup[][6] = {"00001","00001","00001","00001","00001",
"00010","00010","00010","00010","00010",
"00011","00011","00011","00011","00011",
"00100"
};
// коды отправки по RF
char kodModule[][6] = {"10000","01000","00100","00010","00001",
"10000","01000","00100","00010","00001",
"10000","01000","00100","00010","00001",
"10000","01000","00100","00010","00001",
"10000"
};
// состояние розеток
int stat[]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
// для считывания нажатой клавиши
char key;
void setup() {
// запуск последовательного порта
Serial.begin(9600);
// радиомодуль
mySwitch.enableTransmit(10);
mySwitch.setPulseLength(312);
mySwitch.setProtocol(1);
// выключить все розетки
for(int i=0;i<16;i++)
mySwitch.switchOff(kodGroup[i], kodModule[i]);
}
void loop() {
// проверка на нажатие
key = keypad.getKey();
if(key) { // если нажатие
Serial.println(key);
doForKey(key);
}
}
// обработка нажатия кнопки
void doForKey(char key) {
int ind=16;
switch(key) {
case '1': ind=0;
break;
case '2': ind=1;
break;
case '3': ind=2;
break;
case '4': ind=3;
break;
case '5': ind=4;
break;
case '6': ind=5;
break;
case '7': ind=6;
break;
case '8': ind=7;
break;
case '9': ind=8;
break;
case '*': ind=9;
break;
case '0': ind=10;
break;
case '#': ind=11;
break;
case 'a': ind=12;
break;
case 'b': ind=13;
break;
case 'с': ind=14;
break;
case 'd': ind=15;
break;
default:
break;
}
// изменить состояние розетки
stat[ind]=1-stat[ind];
// отправка кодов
if(stat[ind]==1) // включить
mySwitch.switchOn(kodGroup[ind], kodModule[ind]);
else // выключить
mySwitch.switchOff(kodGroup[ind], kodModule[ind]);
}
Часто задаваемые вопросы FAQ
1. Нет связи между модулями- Проверьте правильность подключения модулей приемника и передатчика.
- Подпаяйте к приемнику и передатчику антенну длиной 17 см;
- Превышено максимальное расстояние между модулями.
- Проверьте правильность установки кода группы и кода розетки;
- Проверьте правильность установки параметров радиопередачи.
Товары из статьи
Это интересно
- Комментарии
Загрузка комментариев...










