Установка сигнализации собственными силами. Использование RF-модулей

  • 22.04.2019

Иногда, между устройствами требуется установить беспроводное соединение. В последнее время для этой цели все чаще стали применять Bluetooth и Wi-Fi модули. Но одно дело передавать видео и здоровенные файлы, а другое - управлять машинкой или роботом на 10 команд. С другой стороны радиолюбители часто строят, налаживают и переделывают заново приемники и передатчики для работы с готовыми шифраторами/дешифраторами команд. В обеих случаях можно использовать достаточно дешевые RF-модули. Особенности их работы и использования под катом.

Типы модулей

RF-модули для передачи данных работают в диапазоне УКВ и используют стандартные частоты 433МГц, 868МГц либо 2,4ГГц (реже 315МГц, 450МГц, 490МГц, 915МГц и др.) Чем выше несущая частота, тем с большей скоростью можно передавать информацию.
Как правило, выпускаемые RF-модули предназначены для работы с каким-либо протоколом передачи данных. Чаще всего это UART (RS-232) или SPI. Обычно UART модули стоят дешевле, а так же позволяют использовать нестандартные (пользовательские) протоколы передачи. Вначале я думал склепать что-то типа такого , но вспомнив свой горький опыт изготовления аппаратуры радиоуправления выбрал достаточно дешевые HM-T868 и HM-R868 (60грн. = менее $8 комплект). Существуют также модели HM-*315 и HM-*433 отличающиеся от нижеописанных лишь несущей частотой (315МГц и 433МГц соответственно). Кроме того есть множество других модулей аналогичных по способу работы, поэтому информация может быть полезной обладателям и других модулей.

Передатчик

Почти все RF-модули представляют собой небольшую печатную плату с контактами для подключения питания, передчи данных и управляющих сигналов. Рассмотрим передатчик(трансмиттер) HM-T868
На нем имеется трехконтактный разъем: GND(общий), DATA(данные), VCC(+питания), а также пятачок для припайки антенны(я использовал огрызок провода МГТФ на 8,5см - 1/4 длинны волны).

Приемник

Ресивер HM-R868, внешне, очень похож на соответствующий ему трансмиттер

но на его разъеме есть четвертый контакт - ENABLE, при подаче на него питания приемник начинает работать.

Работа

Судя по документации, рабочим напряжением является 2,5-5В, чем выше напряжение, тем большая дальность работы. По сути дела - это радиоудлинитель: при подаче напряжения на вход DATA передатчика, на выходе DATA приемника так же появится напряжение (при условии что на ENABLE также будет подано напряжение). НО, есть несколько нюансов. Во-первых: частота передачи данных (в нашем случае - это 600-4800 бит/с). Во-вторых: если на входе DATA нету сигнала более чем 70мс, то передатчик переходит в спящий режим(по-сути отключается). В-третьих: если в зоне приема ресивера нету работающего передатчика - на его выходе появляется всякий шум.

Проведем небольшой эксперимент: к контактам GND и VCC трансмиттера подключим питание. Вывод DATA соединим с VCC через кнопку или джампер. К контактам GND и VCC ресивера также подключаем питание, ENABLE и VCC замыкаем между собой. К выходу DATA подключаем светодиод (крайне желательно через резистор). В качестве антенн используем любой подходящий провод длинной в 1/4 длинны волны. Должна получиться такая схемка:


Сразу после включения приемника и/или подачи напряжения на ENABLE должен загореться светодиод и гореть непрерывно (ну или почти непрерывно). После нажатии кнопки на передатчике, со светодиодом также ничего не происходит - он продолжает гореть и дальше. При отпускании кнопки светодиод мигнет(погаснет и снова загорится) и продолжает гореть дальше. При повторном нажатии и отпускании кнопки все должно повторится. Что же там происходило? Во время включения приемника, передатчик находился в спящем состоянии, приемник не нашел нормального сигнала и стал принимать всякий шум, соответственно и на выходе появилась всякая бяка. На глаз отличить непрерывный сигнал от шума нереально, и кажется, что светодиод светит непрерывно. После нажатия кнопки трансмиттер выходит из спячки и начинает передачу, на выходе ресивера появляется логическая «1» и светодиод светит уже действительно непрерывно. После отпускания кнопки передатчик передает логический «0», который принимается приемником и на его выходе также возникает «0» - светодиод, наконец, гаснет. Но спустя 70мс передатчик видит что на его входе все тот же «0» и уходит в сон, генератор несущей частоты отключается и приемник начинает принимать всякие шумы, на выходе шум - светодиод опять загорается.

Из вышесказанного следует, что если на входе трансмиттера сигнал будет отсутствовать менее 70мс и находится в правильном диапазоне частот, то модули будут вести себя как обычный провод (на помехи и другие сигналы мы пока не обращаем внимания).

Формат пакета

RF-модули данного типа можно подключить напрямую к аппаратному UART или компьютеру через MAX232, но учитывая особенности их работы я бы посоветовал использовать особые протоколы, описанные программно. Для своих целей я использую пакеты следующего вида: старт-биты, байты с информацией, контрольный байт(или несколько) и стоп-бит. Первый старт-бит желательно сделать более длинным, это даст время чтобы передатчик проснулся, приемник настроился на него, а принимающий микроконтроллер(или что там у Вас) начал прием. Затем что-то типа «01010», если на выходе приемника такое, то это скорее всего не шум. Затем можно поставить байт идентификации - поможет понять какому из устройств адресован пакет и с еще большей вероятностью отбросит шумы. До этого момента информацию желательно считывать и проверять отдельными битами, если хоть один из них неправильный - завершаем прием и начинаем слушать эфир заново. Дальше передаваемую информацию можно считывать сразу по байтам, записывая в соответствующие регистры/переменные. По окончании приема выполняем контрольное выражение, если его результат равен контрольному байту - выполняем требуемые действия с полученной информацией, иначе - снова слушаем эфир. В качестве контрольного выражения можно считать какую-нибудь контрольную сумму, если передаваемой информации немного, либо Вы не сильны в программировании - можно просто посчитать какое-то арифметическое выражение, в котором переменными будут передаваемые байты. Но необходимо учитывать то, что в результате должно получится целое число и оно должно поместится в количество контрольных байт. Поэтому лучше вместо арифметических операций использовать побитовые логические: AND, OR, NOT и, особенно, XOR. Если есть возможность, делать контрольный байт нужно обязательно так как радиоэфир - вещь очень загаженная, особенно сейчас, в мире электронных девайсов. Порой, само устройство может создавать помехи. У меня, например, дорожка на плате с 46кГц ШИМ в 10см от приемника очень сильно мешала приему. И это не говоря о том, что RF-модули используют стандартные частоты, на которых в этот момент могут работать и другие устройства: рации, сигнализации, радиоуправление, телеметрия и пр.

433/315 МГц, вы узнаете из этого небольшого обзора. Эти радиомодули обычно продают в паре - с одним передатчиком и одним приемником. Пару можно купить на eBay по $4, и даже $2 за пару, если вы покупаете 10 штук сразу.

Большая часть информации в интернете обрывочна и не очень понятна. Поэтому мы решили проверить эти модули и показать, как получить с их помощью надежную связь USART -> USART.

Распиновка радиомодулей

В общем, все эти радиомодули имеют подключение 3 основных контакта (плюс антенна);

Передатчик

  • Напряжение vcc (питание +) 3В до 12В (работает на 5В)
  • GND (заземление -)
  • Приём цифровых данных.

Приемник

  • Напряжение vcc (питание +) 5В (некоторые могут работать и на 3.3 В)
  • GND (заземление -)
  • Выход полученых цифровых данных.

Передача данных

Когда передатчик не получает на входе данных, генератор передатчика отключается, и потребляет в режиме ожидания около нескольких микроампер. На испытаниях вышло 0,2 мкА от 5 В питания в выключенном состоянии. Когда передатчик получает вход каких-то данных, он излучает на 433 или 315 МГц несущей, и с 5 В питания потребляет около 12 мА.

Передатчик можно питать и от более высокого напряжения (например 12 В), которое увеличивает мощность передатчика и соответственно дальность. Тесты показали с 5 В питанием до 20 м через несколько стен внутри дома.

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

Важно знать, что приемник тратит некоторое количество времени, чтобы отрегулировать усиление, так что никаких "пакетов" данных! Передачу следует начинать с "вступления" до основных данных и затем приемник будет иметь время, чтобы автоматически настроить усиление перед приёмом важных данных.

Тестирование RF модулей

При испытаниях обоих модулей от +5В источника постоянного тока, а также с 173 мм вертикальной штыревой антенной. (для частоты 433,92 МГц это "1/4 волны"), было получено реальных 20 метров через стены, и тип модулей не сильно влияет на эти тесты. Поэтому можно предположить, что эти результаты типичны для большинства блоков. Был использован цифровой источник сигнала с точной частотой и 50/50 скважностью, это было использовано для модуляции данных передатчика.

Обратите внимание, что все эти модули, как правило, стабильно работают только до скорости 1200 бод или максимум 2400 бод серийной передачи, если конечно условия связи идеальные (высокий уровень сигнала).

Выше показан простой вариант блока для последовательной передачи информации микроконтроллеру, которая будет получена с компьютера. Единственное изменение - добавлен танталовый конденсатор 25 В 10 мкф на выводы питания (Vcc и GND) на оба модуля.

Вывод

Множество людей используют эти радиомодули совместно с контроллерами Arduino и другими подобными, так как это самый простой способ получить беспроводную связь от микроконтроллера на другой микроконтроллер, или от микроконтроллера к ПК.

Обсудить статью RF РАДИОМОДУЛИ НА 433 МГЦ

17 марта 2012 в 18:30

Использование RF-модулей

  • Электроника для начинающих

Иногда, между устройствами требуется установить беспроводное соединение. В последнее время для этой цели все чаще стали применять Bluetooth и Wi-Fi модули. Но одно дело передавать видео и здоровенные файлы, а другое - управлять машинкой или роботом на 10 команд. С другой стороны радиолюбители часто строят, налаживают и переделывают заново приемники и передатчики для работы с готовыми шифраторами/дешифраторами команд. В обеих случаях можно использовать достаточно дешевые RF-модули. Особенности их работы и использования под катом.

Типы модулей

RF-модули для передачи данных работают в диапазоне УКВ и используют стандартные частоты 433МГц, 868МГц либо 2,4ГГц (реже 315МГц, 450МГц, 490МГц, 915МГц и др.) Чем выше несущая частота, тем с большей скоростью можно передавать информацию.
Как правило, выпускаемые RF-модули предназначены для работы с каким-либо протоколом передачи данных. Чаще всего это UART (RS-232) или SPI. Обычно UART модули стоят дешевле, а так же позволяют использовать нестандартные (пользовательские) протоколы передачи. Вначале я думал склепать что-то типа такого , но вспомнив свой горький опыт изготовления аппаратуры радиоуправления выбрал достаточно дешевые HM-T868 и HM-R868 (60грн. = менее $8 комплект). Существуют также модели HM-*315 и HM-*433 отличающиеся от нижеописанных лишь несущей частотой (315МГц и 433МГц соответственно). Кроме того есть множество других модулей аналогичных по способу работы, поэтому информация может быть полезной обладателям и других модулей.

Передатчик

Почти все RF-модули представляют собой небольшую печатную плату с контактами для подключения питания, передчи данных и управляющих сигналов. Рассмотрим передатчик(трансмиттер) HM-T868
На нем имеется трехконтактный разъем: GND(общий), DATA(данные), VCC(+питания), а также пятачок для припайки антенны(я использовал огрызок провода МГТФ на 8,5см - 1/4 длинны волны).

Приемник

Ресивер HM-R868, внешне, очень похож на соответствующий ему трансмиттер

но на его разъеме есть четвертый контакт - ENABLE, при подаче на него питания приемник начинает работать.

Работа

Судя по документации, рабочим напряжением является 2,5-5В, чем выше напряжение, тем большая дальность работы. По сути дела - это радиоудлинитель: при подаче напряжения на вход DATA передатчика, на выходе DATA приемника так же появится напряжение (при условии что на ENABLE также будет подано напряжение). НО, есть несколько нюансов. Во-первых: частота передачи данных (в нашем случае - это 600-4800 бит/с). Во-вторых: если на входе DATA нету сигнала более чем 70мс, то передатчик переходит в спящий режим(по-сути отключается). В-третьих: если в зоне приема ресивера нету работающего передатчика - на его выходе появляется всякий шум.

Проведем небольшой эксперимент: к контактам GND и VCC трансмиттера подключим питание. Вывод DATA соединим с VCC через кнопку или джампер. К контактам GND и VCC ресивера также подключаем питание, ENABLE и VCC замыкаем между собой. К выходу DATA подключаем светодиод (крайне желательно через резистор). В качестве антенн используем любой подходящий провод длинной в 1/4 длинны волны. Должна получиться такая схемка:


Сразу после включения приемника и/или подачи напряжения на ENABLE должен загореться светодиод и гореть непрерывно (ну или почти непрерывно). После нажатии кнопки на передатчике, со светодиодом также ничего не происходит - он продолжает гореть и дальше. При отпускании кнопки светодиод мигнет(погаснет и снова загорится) и продолжает гореть дальше. При повторном нажатии и отпускании кнопки все должно повторится. Что же там происходило? Во время включения приемника, передатчик находился в спящем состоянии, приемник не нашел нормального сигнала и стал принимать всякий шум, соответственно и на выходе появилась всякая бяка. На глаз отличить непрерывный сигнал от шума нереально, и кажется, что светодиод светит непрерывно. После нажатия кнопки трансмиттер выходит из спячки и начинает передачу, на выходе ресивера появляется логическая «1» и светодиод светит уже действительно непрерывно. После отпускания кнопки передатчик передает логический «0», который принимается приемником и на его выходе также возникает «0» - светодиод, наконец, гаснет. Но спустя 70мс передатчик видит что на его входе все тот же «0» и уходит в сон, генератор несущей частоты отключается и приемник начинает принимать всякие шумы, на выходе шум - светодиод опять загорается.

Из вышесказанного следует, что если на входе трансмиттера сигнал будет отсутствовать менее 70мс и находится в правильном диапазоне частот, то модули будут вести себя как обычный провод (на помехи и другие сигналы мы пока не обращаем внимания).

Формат пакета

RF-модули данного типа можно подключить напрямую к аппаратному UART или компьютеру через MAX232, но учитывая особенности их работы я бы посоветовал использовать особые протоколы, описанные программно. Для своих целей я использую пакеты следующего вида: старт-биты, байты с информацией, контрольный байт(или несколько) и стоп-бит. Первый старт-бит желательно сделать более длинным, это даст время чтобы передатчик проснулся, приемник настроился на него, а принимающий микроконтроллер(или что там у Вас) начал прием. Затем что-то типа «01010», если на выходе приемника такое, то это скорее всего не шум. Затем можно поставить байт идентификации - поможет понять какому из устройств адресован пакет и с еще большей вероятностью отбросит шумы. До этого момента информацию желательно считывать и проверять отдельными битами, если хоть один из них неправильный - завершаем прием и начинаем слушать эфир заново. Дальше передаваемую информацию можно считывать сразу по байтам, записывая в соответствующие регистры/переменные. По окончании приема выполняем контрольное выражение, если его результат равен контрольному байту - выполняем требуемые действия с полученной информацией, иначе - снова слушаем эфир. В качестве контрольного выражения можно считать какую-нибудь контрольную сумму, если передаваемой информации немного, либо Вы не сильны в программировании - можно просто посчитать какое-то арифметическое выражение, в котором переменными будут передаваемые байты. Но необходимо учитывать то, что в результате должно получится целое число и оно должно поместится в количество контрольных байт. Поэтому лучше вместо арифметических операций использовать побитовые логические: AND, OR, NOT и, особенно, XOR. Если есть возможность, делать контрольный байт нужно обязательно так как радиоэфир - вещь очень загаженная, особенно сейчас, в мире электронных девайсов. Порой, само устройство может создавать помехи. У меня, например, дорожка на плате с 46кГц ШИМ в 10см от приемника очень сильно мешала приему. И это не говоря о том, что RF-модули используют стандартные частоты, на которых в этот момент могут работать и другие устройства: рации, сигнализации, радиоуправление, телеметрия и пр.

Модули предназначены для беспроводной передачи данных на большие (до 1 км) расстояния в условиях прямой видимости. Максимальная скорость потока при модуляции данными задающего генератора около 3 кбит / сек.
Если требуются большие скорости передачи, модулировать данными следует буферный каскад перед усилителем мощности. Приемную же часть после детектора следует несколько изменить, как .
(резистор в ФНЧ 10 к - закоротить, убрать емкость на входе компаратора 1000пик и уменьшить "замедляющую"емкость 1 микрофарад до 0,01 микрофарад) . Тогда "пропускная способность" пары приемник / передатчик значительно вырастет (до 100 - 150 кбит/сек).Пьезокерамический фильтр (10,7 МГц) , в случае высокоскоростного обмена, следует применять с полосой пропускания не менее 300 кГц.
Ниже схема приемной части.

Приемник - супергетеродин с однократным преобразованием частоты (ПЧ - 10,7 МГц).
Промежуточная частота - разница между частотой передатчика и частотой гетеродина приемника. Передатчик излучает на частоте 418 МГц. Частота гетеродина приемника 407,3 МГц (ПАВ резонаторы в приемнике и передатчике можно менять местами).
ВЧ часть без особенностей - все ее узлы стандартные.
Она неоднократно испытана в различных устройствах и неплохо себя зарекомендовала.
ВЧ сигнал, прошедший необходимые ступени преобразования и усиления, детектируется и его огибающая, прошедшая через ФНЧ подается на вход компаратора, включенного по схеме с "плавающим порогом " срабатывания, что обеспечивает максимальную его чувствительность.
Приемник имеет чувствительность 1 - 2 мкв, что не уступает промышленным микросборкам. Схема оптимизирована для напряжения питания 2,5 - 3 вольта.
Потребляемый приемником ток около 15 мА.
На выходе компаратора данные выводятся в инверсном виде (осциллограмма ниже).

Передатчик данных.

Передатчик - схема без особенностей. Он также оптимизирован для напряжения питания 2,5 - 3 вольта.
Мощность при напряжении питания 3 вольта, 50 - 70 милливатт. Потребляемый ток - около 60 мА. Мощность можно повысить включив передатчик от 5 вольт, она может достигнуть 120 - 150 милливатт. Ток при этом поднимется до 120 мА, что может быть опасным для оконечного каскада. Транзистор в оконечном каскаде, при повышенном напряжении питания, целесообразнее применить 2SC3357 без каких либо изменений в схеме.

Прикупил на пробу парочку новых беспроводных модулей HC-12. Эти модули работают на частоте 433 МГц и, если верить описанию, работают на дистанции до 1,8 км. при максимальной мощности передатчика 100 мВт. Но самый смак в том, что они подключаются к устройству по стандартному протоколу UART, также присутствует поддержка AT-команд, для кое-каких настроек. И все это по 4$ за один модуль.

Модуль построен на трансивере SI4463 и микроконтроллере STM8S003F3 . SI4463 это универсальная микросхема трансивер от Silicon Labs, способная работать на частотах 119-1050 МГц, и скоростью передачи данных до 1 Мбит/с. Интерфейс для подключения используется SPI. Но микроконтроллер берет на себя всю работу с трансивером, и нам не нужно заботится о тонкостях работы с ним. Помимо стандартной обвязки трансивера на модуле имеется понижающий стабилизатор, поэтому модуль можно запитывать от 5 вольтового источника питания. Ниже кратенько приведу характеристики модуля:

  • Диапазон рабочих частот: 433,4 - 473,0 МГц
  • Выбор частоты с шагом 400 кГц
  • 8 уровней мощности передатчика, максимальная мощность 100 мВт
  • Дальность связи до 1,8 км
  • Напряжение питания в диапазоне 3,2 - 5,5 В
  • Размеры модуля 28х14 мм

Вид со стороны элементов

С обратной ничего нет, только маркировка

Сложностей в работе с модулями никаких нет, подключай и передавай. По умолчанию они работают на частоте 433,4 МГц (канал 001), мощность передачи выставлена 100мВт, скорость порта 9600 бод. Все эти параметры можно изменить с помощью специальных АТ-команд. Для того чтобы модуль перевести в режим настроек необходимо ножку SET замкнуть на землю. Список поддерживаемых команд ниже:

АТ-команда Описание команды
АТ Тестовый запрос. Модуль должен ответить "ОК"
AT+Bxxxx Установка скорости порта. Доступные значения 1200, 2400, 4800, 9600, 19200, 38400, 57600 и 115200 бод. По умолчанию стоит 9600 бод.
AT+Cxxxx Установка канала связи от 001 до 100. Изменение частоты работы происходит с шагом 400 кГц. По умолчанию модуль работает на канале 001, что соответствует частоте 433,4 МГц.
AT+FUx

Установка режима работы (FU1, FU2, FU3, FU4).

FU1 - режим сохранения энергии, потребляемый ток 3,6 мА.

FU2 - экстремальный режим сохранения энергии, потребляемый ток 80 мкА.

FU3 - режим полной скорости, потребляемый ток 16 мА. (режим стоит по умолчанию)

FU4 - режим максимальной дальности, потребляемый ток 16 мА. скорость порта понижается до 1200 бод.

AT+Px Установка мощности передачи данных (от 1 до 8). По умолчанию стоит значение 8, что соответствует максимальному значению мощности (100 мВт)
AT+RB Запрос установленной скорости порта UART (baud rate)
AT+RC Запрос установленного канала связи (проще говоря, узнаем частоту работы трансивера)
AT+RF Запрос установленного режима работы
AT+RP Запрос установленной мощности передачи
AT+RX Эта команда объединяет 4 предыдущие и позволяет узнать все установленные параметры
AT+V Запрос версии прошивки
AT+SLEEP Перевод модуля в спящий режим, в котором потребление составляет около 22 мкА. Вывод из спящего режима происходит автоматически при поступлении любых данных.
AT+DEFAULT Сброс всех настроек по умолчанию

Пример запросов установленных параметров

Самым интересным для меня было проверить максимально возможное расстояние, на котором модуль сможет передавать/принимать данные. Поэтому настроил на обоих модулях режим максимальной дальности FU4, остальные настройки оставил по умолчанию (мощность 100 мВт, частота связи 433,4 МГц). Первый модуль использовал как репитер, замкнув ножки Tx и Rx, запитал от Li-Ion аккума и закрепил его на крыше. Второй модуль подсоединил к , взял с собой GPS трекер, сел на велосипед и поехал в сторону где меньше всего построек на пути сигнала. По пути отправлял минитерминалом какое-нибудь сообщение, до тех пор пока сообщения не перестали возвращаться. Добавлю, что дело происходило за пределами города, поэтому помехи и сторонние сигналы сведены к минимуму.

Получившееся расстояние уверенного приема (кликабельно)

По итогу могу сказать что в режиме FU4 модуль уверенно бьет на пересечёнке 1,5 км (прямая видимость между модулями пропала через 500 метров), на скриншоте видно что сигнал шел через большой лесной массив. Все это время связь была стабильной. И заглох он только тогда, когда я свернул на трассу вдоль которой идет лесополоса, которая и заглушила весь сигнал. Уверен, что в прямой видимости модуль отработает заявленные 1,8 км. И это на антенну что шла в комплекте, думаю если использовать выносную направленную (для этого как раз есть специальный разъем на модуле) можно выжать из него гораздо большую дистанцию.

Модуль мне понравился: заявленные характеристики держит, потребление не большое, миниатюрные размеры, простота работы и самое главное невысокая цена.