Hc 12 подключение к компьютеру
Trema-модуль HC-12 - это беспроводной полудуплексный модуль UART позволяющий передавать и принимать данные в диапазоне частот от 433,4 МГц до 473МГц на скорости от 1200 до 115200 бод.
Видео:
Спецификация:
- Рабочая частота: 433 МГц
- Коэффициент стоячей волны: <=1.5 на 433МГц
- Импеданс: 50Ω
- Длина с коаксиальным шнуром: 10 . 15 см
- Разъём: IPEX
Все модули линейки "Trema" выполнены в одном формате
Подключение:
Trema-модуль HC-12 подключается к Arduino по шине UART (можно использовать как аппаратную так и программную шину).
- Вывод модуля TX подключается к аппаратному (фиксированному) или программному (назначенному) выводу RXArduino. Это линия шины UART для передачи данных от модуля к Arduino.
- Вывод модуля RX подключается к аппаратному (фиксированному) или программному (назначенному) выводу TXArduino. Это линия шины UART для передачи данных в модуль от Arduino.
- Вывод модуля S подключается к любому выводу Arduino номер которого указывается в скетче. Это линия перевода модуля в режим AT-команд. Модуль будет воспринимать AT-команды, только во время подачи на этот вывод низкого уровня.
Модуль удобно подключать 4 способами, в зависимости от ситуации:
Способ - 1 : Используя провода, Piranha UNO и программный UART
Используя провода «Папа — Мама», подключаем напрямую к контроллеру Piranha UNO.
Способ - 2 : Используя провода, Piranha ULTRA и аппаратный UART
Используя провода «Папа — Мама», подключаем напрямую к контроллеру Piranha ULTRA.
С данным подключением будет использоваться второй аппаратный UART на Piranha ULTRA. Стоит заметить, что программный порт на UNO безошибочно работает на скорости до 57600 бод, в то время как аппаратный без проблем может работать на скорости 115200, вдвое большей.
Способ - 3 : Используя Trema Set Shield
В примерах ниже мы будем использовать программный UART на 8 и 9 цифровых выводах, поэтому для удобства подключения можно установить модуль в 3-ю ячейку Trema Set Shield. Так же на этих выводах находиться аппаратный порт Piranha ULTRA, что ещё больше упрощает работу с модулем.
Способ - 4 : Используя проводной шлейф и Shield
Используя 2-х и 3-х проводные шлейфы, к Trema Shield, Trema-Power Shield, Motor Shield, Trema Shield NANO и тд.
Способ - 5 : Напрямую к ПК через USB-UART
Используя USB-UART преобразователь Piranha можно подключить напрямую к ПК. При этом можно получать данные и отправлять команды на Arduino по радиоканалу, как если бы Arduino была подключена по проводу. Пример скетча для данного подключения.
Питание:
Подробнее о модуле:
Модуль работает в диапазоне частот от 433,4 МГц до 473МГц, имеет возможность выбора каналов от 1 до 100, возможность выбора восьми вариантов мощности передатчика от -1 дБм до 20 дБм при этом расстояние передачи может достигать 1000 метров на открытой местности при скорости передачи данных в эфире 5000 бит/с.
Модуль является полудуплексным, это означает что он может принимать или отправлять данные.
Режимы работы модуля
Модуль имеет четыре режима работы: FU1, FU2, FU3, FU4 и режим приём AT команд. Для перехода в режим приёма AT команд вывод S модуля необходимо прижать к земле (режим логического "0"). Режимы FU отвечают за приём и передачу данных последовательного порта.
Режим FU1 - режим относительно низкого энергопотребления, с током покоя 3,6 мА. В этом режиме можно выбирать скорость передачи данных по проводу arduino-модуль, но скорость в эфире постоянна и равна 250`000 бит/сек.
Режим FU2 - режим очень низкого энергопотребления, с током покоя 80 мкА. В этом режиме скорости передачи данных могут быть 1200, 2400 и 4800 бит/сек. Скорость в эфире фиксирована и равна 250`000 бит/сек. В этом режиме интервал между пакетами данных должен быть больше 1 секунды, иначе данные будут потеряны.
Режим FU3 - режим по умолчанию, потребляемый ток покоя 16 мА, скорость передачи данных в эфире автоматически переключается в зависимости от скорости проводного последовательного порта по следующей таблице:
Скорость передачи по проводу, бит/сек | 1`200/2`400 | 4`800/9`600 | 19`200/38`400 | 57`600/115`200 |
Скорость передачи в эфире, бит/сек | 5`000 | 15`000 | 58`000 | 236`000 |
Чем ниже скорость передачи по проводу — тем больше расстояние передачи модуля.
Режим FU4 - режим максимальной дальности, ток покоя 16 мА, поддерживает только одну скорость передачи равную 1200 бит/сек при этом скорость передачи в эфире уменьшается до 500 бит/сек, для наибольшей дальности связи. В этом режиме можно передавать не больше 60 байтов за раз, при этом интервал между пакетами должен превышать 2 секунды во избежание потерь данных.
Таблица режимов
Режимы: | FU1 | FU2 | FU3 | FU4 | Комментарий |
---|---|---|---|---|---|
Ток покоя | 3,6 мА | 80 мкА | 16 мА | 16 мА | Среднее значение |
Задержка передачи | 15-25 мс | 500 мс | 4-80 мс | 1000 мс | Передача одного байта |
Дальность передачи, W = 20 дБм | до 100 м | до 100 м | до 600м на 9600 бит/сек; до 1000 метров на 2400 бит/сек | до 1800 метров на 1200 бит/сек | Прямая видимость и идеальные условия, зависит от антенны. |
Для того чтобы модули могли связаться друг с другом у них должен быть выставлен одинаковый режим работы и скорость.
Чувствительность приёмника
Чувствительность приёмника модуля зависит от скорости передачи данных по следующей таблице:
Скорость передачи в эфире | 5`000 бит/сек | 15`000 бит/сек | 58`000 бит/сек | 236`000 бит/сек |
Чувствительность приёмника | -117 дБм | -112 дБм | -107 дБм | -100 дБм |
AT команды модуля:
Для перехода в режим AT команд необходимо притянуть вывод S модуля к земле (логическому нулю). Для входа в режим AT команд модулю необходимо 40 миллисекунд. Для выхода из режима AT команд модулю необходимо 80 миллисекунд.
тестовая команда, при удачном выполнении модуль возвращает "OK"
Команда установки скорости обмена данными с микроконтроллером, где "xxxx" это скорость. Может быть 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200. Пример:
AT+B4800, при удачном выполнении модуль вернёт "OK+B4800"
Команда смены канала, "xxx" - номер канала (001-100). Значение по умолчанию 001. Пример: "AT+C042" сменит канал на 42 и рабочая частота станет 449,8 МГц. Приёмник модуля очень чувствительный и при использовании на скорости больше 9600 бит в секунду или если модули находятся на небольшом расстоянии друг от друга каналы лучше использовать через один, так как возможны перекрёстные помехи на соседних каналах.
Команда смены режима работы модуля. По умолчанию FU3. Для передачи данных модули должны находится в одном режиме.
Команда установки уровня мощности передатчика, "x" - от 1 до 8 по следующей таблице:
X | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
Мощность (дБм) | -1 | 2 | 5 | 8 | 11 | 14 | 17 | 20 |
Чем выше мощность, тем больше расстояние излучения модуля. При уменьшении мощности на 6 дБ рабочее расстояние уменьшается в 2 раза. Значение по умолчанию - 8.
Запрос одного параметра модуля, где "y": B - запросить скорость передачи данных, C - запросить канал, F - запросить режим работы и P - запросить мощность передатчика. Например: при запросе"AT+RB" модуль ответит "OK+B9600".
Запросить все параметры модуля.
Установка параметров передачи данных. Биты данных, бит чётности, стоп-бит. Например, чтобы установить 8 бит данных, бит чётности и 1 стоп-бит посылаем модулю "AT+U8E1", модуль ответит "OK".
Запросить версию прошивки. При запросе "AT+V" модуль ответит "www.hc01.com HC-12 v2.6"
Перевод в режим сна. Потребляемый ток в данном режиме 22 микроампера. Передача данных в данном режиме невозможна
Сброс параметров модуля на значения по умолчанию
Установка модуля в режим ожидания обновления прошивки
Примеры:
Пример тестирования модуля и сброса настроек на заводские.
Данный скетч сбрасывает настройки модуля на заводские и включает встроенный светодиод Arduino если получен положительный ответ от модуля.
Перевод модуля в режим ручного ввода AT команд
Пример входа в режим ввода AT команд в мониторе порта Arduino. После каждой команды необходим символ новой линии или возврата каретки. Скорость передачи должна быть выставлена на 9600 бод.
Подключение модуля через USB-UART преобразователь
Пример дистанционной отправки команд Arduino, при этом один модуль подключён к ПК через USB-UART преобразователь, второй подключён к Arduino на которую загружен этот скетч. При отправке ключевого слова "toggle" из монитора последовательного порта встроенный светодиод платы будет менять своё состояние.
Соединение двух Arduino через беспроводной UART
Данный пример передаёт "как есть" всё что он получает от модуля в серийный порт Arduino. Пример можно использовать для проверки связи между модулями и для обмена данными между двумя Arduino через беспроводной UART. Для соединения двух Arduino необходимо загрузить данный скетч в обе.
Передача массива и включение светодиода на расстоянии
В примере используются два модуля и две платы Arduino. Модули должны быть установленны на один канал и режим работы (см. первый пример).
Пример передачи массива. Включаем светодиод значением первого байта. Arduino с передатчиком посылает заголовок и массив; Arduino с приёмником ждёт заголовок и принимает массив. Тип массива может быть только byte, char, int8_t или uint8_t,
Скетч принимает массив из скетча выше и включает встроенный светодиод по значению первого байта
Пример переключения каналов модуля.
Пример смены канала передатчика. Передаётся байт на 1-м канале, затем канал переключается и передаётся байт на 3-м канале.
Одинаковый скетч для двух приёмников. Приёмники должны быть установленны на 1-й и 3-й каналы.
Если в последовательный порт приходит байт 0xAA, встроенный светодиод включается. Если приходит любой другой байт, светодиод выключается. Канал модуля должен быть 001 или 003. Выставить канал можно при помощи скетча выше "Перевод модуля в режим ручного ввода AT команд". Для этого из монитора порта необходимо ввести AT+C001 и enter для одного модуля и AT+C003 и enter для другого. Так же это можно сделать автоматически, при помощи скетча "Пример тестирования модуля и сброса настроек на заводские" заменив при этом команду AT+DEFAULT на AT+C003 для одного из модулей.
Иногда возникает необходимость иметь связь между оборудованием, приборами, какими-то своими схемами на расстоянии и при этом нет возможности или не целесообразно использовать провода. В этом случае приходится строить беспроводную связь. Реализовать это можно большим количеством способов, но совсем недавно на глаза мне попались беспроводные модули HC-12 на GearBest (ссылка HC-12 на AliExpress), о которых речь пойдет дальше. Стоимость модулей составляет около 4-5$ за штуку.
Для начала технические характеристики беспроводных модулей HC-12:
- Рабочая частота – 433,4 – 473,0 МГц
- Используется только внешняя антенна, PCB антенна на модуле отсутствует
- Дальность передачи информации – до 1000 - 1800 м на открытом пространстве в зависимости от режима работы
- Мощность передатчика – до 100 мВт (доступны настройки для 8 уровней мощности)
- Количество каналов передачи данных – 100
- Четыре рабочих режима
- Встроенный микроконтроллер (присутствует на модуле) STM8S003F3
- Интерфейс для коммуникации с внешними устройствами – UART
- Потребляемый ток – от 3,6 мА до 16 мА в зависимости от режима работы
- Пиковое потребление тока – до 100 мА (передача данных)
- Потребление тока в ждущем режиме – 80 мкА
- Напряжение питания – от 3,2 В до 5,5 В
- Настройка модуля AT командами
Параметры модуля по умолчанию:
- UART: 9600, 8N1
- Канал 001 (433,4 МГц)
- Мощность передачи 100 мВт
Разработчики этого устройства предлагают следующие сферы применения продукта:
- Беспроводные датчики
- Устройства для охраны и безопасности
- Беспроводное управление роботами
- Телеметрия и дистанционное управление в промышленности
- Автоматическое получение данных
- Системы POS
- Системы входа без ключа
- Беспроводные сети для ПК и т.д.
Однако, предлагаемые производителем сферы применения не исчерпывают все области, где можно применить беспроводную связь. Ограничением в данном случае будет только фантазия радиолюбителей и инженеров.
Модули HC-12 работают как беспроводной удлинитель UART и не вносят каких-либо изменений в передачу информации - что отправил на одном конце, то получил на другом.
Данные модули позиционируются в продаже как заменяющие Bluetooth модули:
В некоторой степени это на самом деле более выгодно: намного больший радиус передачи, более компактное исполнение модуля (справа на фото Bluetooth модуль HC-05, о которых подробно рассказывалось в данной статье), возможность использования внешней антенны, однако отсутствие штатной PCB антенны можно поставить в минус, а кроме этого при соединении с ПК или планшетом понадобится еще один модуль для связи, в то время как Bluetooth есть практически во всех устройствах. Таким образом, модули HC-12 расширяют линейку беспроводных модулей и дают большее поле для конструирования собственных устройств.
Модуль представляет собой печатную плату с необходимыми элементами размером 27,8 х 14,4 мм. Беспроводной модуль имеет возможность подключения антенны двумя способами: подключение антенны через разъем IPEX20279-001E-03 (ANT1) или просто припаять кусочек провода (к контакту 6) (ANT2) или другой разъем (контакты 7,8 - земля). Для подключения к другим устройства модуль имеет пятиконтактный разъем (PLS/PBS), где 1 – плюс питания, 2 – земля, 3 – RxD, 4 – TxD, 5 – SET. Вывод 5 SET подтянут 10 кОм резистором к плюсу питания. Этот вывод необходим для активации настроек при помощи AT команд. Активация происходит при подключении вывода к низкому уровню, то есть к земле.
Диапазон питания модуля HC-12 определяет LDO (Low Dropout) регулятор напряжения (регулятор напряжения с низким падение напряжения на регулирующем элементе) XC6206 (элемент в корпусе SOT-23 с маркировкой 662K). Диод и транзистор на модуле под микроконтроллером STM относятся к схеме согласования UART. Элемент в шестиногом корпусе SC-70 – это переключатель AS179-92LF. Функционал наглядно показан на электрической схеме выше – переключение антенного выхода на приемный и передающий выводы микросхемы SI4463.
Контакты модуля HC-12 выполнены таким образом, что их можно использовать для пайки к разъемам PLS/PBS, либо припаивать напрямую к контактным площадкам другой печатной платы. При этом антенну может заменить печатный проводник (PCB антенна).
В продаже кроме модулей HC-12 (на базе микроконтроллера SI4463) есть так же практически идентичный модуль на базе микроконтроллера СС1101, обладающего практически теми же параметрами. Справа СС1101, слева SI4463:
Однако отличия между ними существуют как в плане элементной базы, так и в программной составляющей. Между собой в стоковом состоянии модули не соединяются. Для работы в паре одному из модулей необходимо модифицировать прошивку, если это возможно. А именно Зеленый модуль является модулем HC-11, что часто не указывают при продаже. HC-11 имеет несколько другую структуру работы и, хотя и схожие, но с различиями, AT команды.
Для подключения к компьютеру используем стандартный USB-UART переходник:
После подключения питания модуль начинает сразу работать со стандартными параметрами, заложенными производителем и ждет поступления данных по UART. Для изменения параметров модуля необходимо замкнуть вывод SET на землю, что активирует управление AT командами. Для HC-12 применимы 12 AT команд.
При построении схем с применением модулей HC-12 необходимо учитывать несколько факторов:
Радиомодули HC-12 построены на трансивере Si4463, и микроконтроллере серии STM8S, трансивер (приемопередатчик) обеспечивает двунаправленную радиосвязь, а микроконтроллер образует прозрачный интерфейс передачи данных, что позволяет с помощью двух модулей организовать беспроводной UART интерфейс. Максимальная заявленная дальность связи может достигать 1,8 км на открытой местности.
Я приобрел модули в Китае, заказать можно здесь , с виду представляют собой миниатюрную плату, размером 27,4х13,2 мм, на которой расположены микросхема трансивера, микроконтроллер, кварцевый генератор, антенный разъем, стабилизатор напряжения.
Модуль HC-12 поддерживает многоканальный режим передачи данных в пределах 433,4-473,0 МГц, с шагом 400 кГц, всего 100 каналов. Максимальная мощность передатчика составляет 100 мВт (+20 дБм), чувствительность приемника лежит в пределах -124…-100 дБм, в зависимости от скорости передачи данных.
Напряжение питания модуля может варьироваться в пределах 3,2…5,5 В, максимальный потребляемый ток составляет 100 мА (в режиме передатчика при максимальной мощности +20 дБм). Модуль имеет 5 выводов: VCC и GND для подключения питания, выводы TX и RX для передачи данных по интерфейсу UART, а также вывод SET для настройки модуля с помощью AT команд.
Радиомодули HC-12 позиционируются в качестве беспроводной замены физического (проводного) полудуплексного соединения UART, полудуплекс означает, что модуль не может вести прием и передачу данных одновременно.
Режимы передачи данных модуля HC-12
Модуль имеет 4 режима передачи данных: FU1, FU2, FU3, FU4, которые различаются скоростью передачи данных, и энергопотреблением в режиме ожидания. По умолчанию задействован режим FU3. Модули с разными режимами не могут передавать данные друг другу, необходимо выбрать одинаковые режимы, наиболее подходящие по требованиям к конкретной ситуации. Кроме режима, одинаковыми должны быть скорость передачи данных порта UART, и номер канала.
Количество передаваемых данных (байт) не ограничено (только для режимов FU1, FU3), но следует знать, что при непрерывной передаче большого количества данных, несколько байт могут быть утеряны, из-за воздействия различных помех и других факторов.
В режиме FU3 модуль функционирует на максимальной скорости, ток потребления в режиме ожидания составляет 16 мА. В этом режиме скорость передачи данных по радиоканалу автоматически регулируется в зависимости от установленной скорости порта UART, соотношение скоростей приведено в таблице ниже:
Скорость порта UART, Бит/сек | 1200 | 2400 | 4800 | 9600 | 19200 | 38400 | 57600 | 115200 |
Скорость по радиоканалу, Бит/сек | 5000 | 15000 | 58000 | 236000 |
Для увеличения дальности связи, рекомендуется снизить скорость передачи данных порта UART.
В следующей таблице представлены данные по чувствительности приемника, в зависимости от скорости передачи данных по радиоканалу:
Скорость по радиоканалу, Бит/сек | 500 | 5000 | 15000 | 58000 | 236000/250000 |
Чувствительность приемника, дБм | -124 | -116 | -111 | -106 | -100 |
Как правило, чувствительность уменьшается на 6…10 дБ, а дальность связи в 2 раза. Максимальная дальность связи на открытой местности (по технической документации) для режима FU3 составляет 1000 м.
Режим FU1 является энергосберегающим, ток потребление в режиме ожидания составляет 3,6 мА. Здесь также можно установить 8 различных скоростей порта UART (как в режиме FU3), но скорость передачи по радиоканалу фиксирована, и составляет 250000 Бит/сек, дальность связи небольшая, до 100 м.
FU2 – режим энергосбережения со сверхнизким энергопотреблением, ток потребления в режиме ожидания составляет около 80 мкА. Этот режим поддерживает следующие значения скорости порта UART: 1200, 2400, 4800 Бит/сек. Если до этого UART порт функционировал на более высокой скорости, то модуль автоматически снизить скорость порта до 4800 Бит/сек, изменения вступят в силу после выхода из режима настроек.
Передача данных возможна только небольшими пакетами (не более 20 байт), интервал времени между пакетами не должен быть слишком коротким (желательно не менее 2 сек), иначе возможна потеря данных. Скорость передачи по радиоканалу и дальность связи такие же, как и в режиме FU1.
Режим FU4 предназначен для максимальной дальности связи, ток потребления в режиме ожидания составляет 16 мА. Поддерживается только самая низкая скорость порта UART: 1200 Бит/сек, если установлена более высокая скорость UART порта, то модуль автоматически снизить ее. Скорость передачи по радиоканалу фиксирована и составляет 500 Бит/сек. Передача данных возможна только небольшими пакетами (не более 60 байт), интервал времени между пакетами не должен быть менее 2 сек, иначе возможна потеря данных. Дальность связи на открытой местности может достигать 1800 м.
В следующей таблице представлены характеристики радиомодуля HC-12 при различных режимах:
Режим | FU1 | FU2 | FU3 | FU4 | |
Ток потребления в режиме ожидания | 3,6 мА | 80 мкА | 16 мА | 16 мА | |
Время передачи данных | 15…25 мс | 500 мс | 4…80 мс | 1 сек | Передача одного байта |
Задержка цикла (время от передачи и до получения пакета данных) | 31 мс | Скорость UART 9600 Бит/сек Передача одного байта | |||
31 мс | Скорость UART 9600 Бит/сек Передача 10-ти байт | ||||
Дальность связи при максимальной мощности передатчика +20 дБм | 100 м | 100 м | 600 м при 9600 Бит/сек | 1800 м при 1200 Бит/сек | Значения даны для идеальных условий на открытой местности |
1000 м при 2400 Бит/сек |
Измерение задержки цикла производится, когда на одном модуле замкнуты вывода RX и TX (то есть принятые модулем данные снова отправляются), а с помощью второго модуля отправляют и принимают данные.
Описание AT команд и настройка параметров модуля HC-12
Модуль может функционировать в двух режимах, которые задаются выводом SET. При высоком логическом уровне на входе SET, модуль находится в режиме передачи данных, все байты, переданные по UART, будут отправлены по радиоканалу (прозрачный режим).
Второй режим (командный) предназначен для настройки параметров и управления функциями модуля. Переключение в этот режим осуществляется установкой низкого логического уровня на входе SET. Имеется два способа входа в командный режим:
- Установка низкого логического уровня на входе SET, во время нормальной работы модуля (питание все время присутствует).
- Установка низкого логического уровня на входе SET (подключение к шине GND), перед подачей питания на модуль.
Любой из этих способов приведет к переключению модуля в командный режим, отличие второго способа в том, что модуль примет фиксированные настройки порта UART, а именно: скорость 9600 Бит/сек, 8 бит данных, без проверки четности, 1 стоп-бит (8N1). Таким образом, этот способ удобен, когда настройки порта UART неизвестны.
При входе в командный режим (после установки низкого уровня на входе SET) необходимо выдержать паузу не менее 40 мс, перед тем как передавать команды на модуль. После изменения параметров модуля, новые настройки вступят в силу после выхода из командного режима. Для выхода из командного режима и переключения в режим передачи данных, необходимо установить высокий логический уровень на входе SET, после чего выдержать паузу не менее 80 мс, необходимую для применения новых настроек и переключения режимов.
Вывод SET подтянут к высокому логическому уровню внутри модуля, для управления требуется выход с открытым коллектором.
Ниже представлены все основные команды модуля:
Описание | Тестовая команда |
Формат | AT |
Ответ | ОК |
Описание | Команда установки скорости порта UART | |
Формат | AT+B<скорость передачи> | |
Параметр | <скорость передачи>: 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200 Бит/сек | |
Пример команды | AT+B4800 | |
Ответ | OK+B4800 | Скорость порта UART равна 4800 Бит/сек |
Примечание | По умолчанию скорость равна 9600 Бит/сек |
Описание | Команда установки номера канала | |
Формат | AT+С<номер канала> | |
Параметр | <номер канала>: 001…127 | |
Пример команды | AT+C001 | |
Ответ | OK+C001 | Номер канала равен 001 |
Примечание | По умолчанию номер канала равен 001, рабочая частота 433,4 МГц Каналу под номером 100, соответствует частота 473,0 МГц, шаг канала 400 кГц Не рекомендуется устанавливать канал с номером более 100 |
Описание | Команда установки режима передачи данных | |
Формат | AT+FU<номер> | |
Параметр | <номер>: 1…4 | |
Пример команды | AT+FU2 | |
Ответ | OK+FU2 | Установлен режим передачи данных FU2 |
OK+FU2,B4800 | Установлен режим FU2, автоматическая установка скорости 4800 Бит/сек (только после выхода из командного режима), при условии, что команда передана на скорости более 4800 Бит/сек. | |
Пример команды | AT+FU4 | |
Ответ | OK+FU4 | Установлен режим передачи данных FU4 |
OK+FU4,B1200 | Установлен режим FU4, автоматическая установка скорости 1200 Бит/сек (только после выхода из командного режима), при условии, что команда передана на скорости более 1200 Бит/сек. |
Описание | Команда установки мощности передатчика | |
Формат | AT+P<значение> | |
Параметр | <значение>: 1=-1 дБм (0,8 мВт) 2=+2 дБм, (1,6 мВт) 3=+5 дБм (3,2 мВт) 4=+8 дБм, (6,3 мВт) 5=+11 дБм, (12 мВт) 6=+14 дБм, (25 мВт) 7=+17 дБм, (50 мВт) 8=+20 дБм (100 мВт) | |
Пример команды | AT+P6 | |
Ответ | OK+P6 | Мощность передатчика равна 14 дБм |
Примечание | По умолчанию мощность передатчика равна +20 дБм Падение мощности на 6…10 дБм, пропорционально уменьшению дальности связи в 2 раза |
Описание | Команда запроса значения параметра | |
Формат | AT+R<параметр> | |
Параметр | <параметр>: B–скорость порта UART, C–номер канала, F–режим передачи данных, P–мощность передатчика | |
Пример команды | AT+RF | |
Ответ | OK+FU3 | Текущий режим передачи данных равен FU3 |
Описание | Команда запроса всех параметров | |
Формат | AT+RX | |
Ответ | OK+B9600 OK+RC001 OK+RP:+20dBm OK+FU3 | скорость порта UART 9600 Бит/сек номер канала 001 мощность передатчика +20 дБм режим передачи данных FU3 |
Описание | Команда установки параметров порта UART | |
Формат | AT+U<параметр1><параметр2><параметр3> | |
Параметр | <параметр1>: 8 – 8 бит данных, 9 – 9 бит данных <параметр2>: N – без бита четности, E – с битом проверки на четность, O – с битом проверки на нечетность <параметр3>: 1 – 1 стоп бит, 2 – 2 стоп бита, 3 – 1,5 стоп бита | |
Пример команды | AT+U8O1 | |
Ответ | OK+U8O1 | 8 бит данных, бит проверки на нечетность, один стоповый бит |
Описание | Команда проверки версии программного обеспечения модуля | |
Формат | AT+V | |
Ответ | HC-12_V2.3 | Версия 2.3 |
Описание | Команда возврата к заводским настройкам | |
Формат | AT+DEFAULT | |
Ответ | OK+DEFAULT | заводские настройки восстановлены |
Примечание | Заводские настройки: скорость порта UART 9600 Бит/сек, номер канала 001, режим передачи данных FU3, мощность передатчика +20 дБм |
Все настройки модуля сохраняются в энергонезависимой памяти, и не сбиваются при отключении питания.
Подключение модуля HC-12 к микроконтроллеру
Для тестирования я использовал микроконтроллеры PIC16F628A, из-за наличия аппаратного USART модуля, что упрощает подключение радиомодулей HC-12. Схема подключения представлена ниже:
В схеме передатчика с помощью двух кнопок (SB1, SB2) можно управлять двумя каналами на приемнике, к которым подключены светодиоды HL3 (1 канал) и HL2 (2 канал). Я реализовал обратную связь между передатчиком и приемником, при получении команды включения/выключения приемник активирует соответствующий канал и передает сигнал подтверждения, передатчик принимает сигнал и включает двухцветный светодиод HL2, зеленый цвет – канал включен, красный – выключен. Таким образом, модули HC-12 построенные на трансивере Si4463 предоставляют возможность контроля состояния каналов при отсутствии прямого обзора.
В программы микроконтроллеров заложены функции настройки и автоматического соединения с радиомодулями по UART интерфейсу, то есть сначала микроконтроллер перебирает значения скорости порта UART в пределах 1200-19200 кБит/сек, пока не получит правильный ответ от модуля. Если скорость порта радиомодуля выше 19200 кБит/сек, то микроконтроллер не сможет установить соединение, так как USART модуль микроконтроллера не поддерживает высокие скорости при тактовой частоте 4 МГц.
После определения скорости выполняется настройка параметров модуля. Настройки зависят от выбранного режима передачи данных, который необходимо предварительно запрограммировать в EEPROM микроконтроллера. В ячейку EEPROM с адресом 0x00 необходимо записать число от 1 до 4, что соответствует режимам FU1-FU4, если в ячейку ничего не записано, по умолчанию будет выбран режим FU3.
Настройки режимов в основном отличаются скоростью порта UART, но два параметра одинаковы и задаются для всех режимов, это номер канала – 001, и мощность передатчика +20 дБм. Для режима FU3 задается скорость 2400 кБит/сек, чтобы обеспечить наибольшую дальность связи. Для режима FU4 доступна лишь одна скорость: 1200 кБит/сек, для остальных режимов 4800 кБит/сек.
Микроконтроллер записывает настройки в модуль HC-12 при включении (после подачи питания), успешная настройка подтверждается однократным миганием светодиода HL1 в течение одной секунды, данное оповещение имеется у обоих устройств (передатчик/приемник). Если в процессе настройки произошла ошибка, либо нет соединения с модулем, то светодиод HL1 начнет непрерывно мигать, и на этом программа зациклится.
В целях энергосбережения микроконтроллер в передатчике переходит в спящий режим, если в течение определенного времени не будут нажаты кнопки SB1, SB2. Для режимов FU1, FU3 время ожидания для перехода в “сон” составляет 1,5 секунды, для FU2 – 3 секунды, FU4 – 5 секунд. Перед уходом в “сон” все светодиоды гаснут, радиомодуль переводится в спящий режим, общий ток потребления устройства снижается до 26 мкА. В микроконтроллере включены прерывания по изменению уровня на входах RB4-RB7, к которым подключены кнопки, незадействованная линия RB7 настроена на выход с низким логическим уровнем, в целях устранения ложного “пробуждения” микроконтроллера, так как индивидуальная настройка прерываний для каждой линии отсутствует.
В схеме приемника переключателями SA1, SA2 можно задать режим работы соответствующего канала. В разомкнутом состоянии действует режим чередования, то есть, каждое нажатие кнопки на передатчике вызывает поочередное включение/выключение канала. Замкнутое состояние переключателей активирует режим повторения, канал включен, пока нажата кнопка на передатчике.
Примечание из даташита: если модуль продолжительное время работает в режиме передатчика при напряжении питания более 4,5В, то в разрыв цепи питания необходимо установить диод, в целях снижения перегрузки стабилизатора напряжения на плате модуля.
50$) за один модуль, а модулей обычно нужно два. Еще есть APC220, который стоит 1500 рублей за пару. Это уже намного лучше, но все равно дороговато. Так вот, а модуль HC-12, о котором пойдет речь в этой заметке, предлагает полностью такой же функционал, но стоит всего лишь 150 рублей. Слишком хорошо, чтобы быть правдой? Давайте проверим!
Примечание: Существует аналогичный модуль HC-11. Он потребляет меньше электроэнергии, но передает данные на расстояние до 200 метров против максимальных 1000 метров, заявленных у HC-12.
Fun fact! HC-12 реализован на базе чипа SI4463 (даташит [PDF]). За UART отвечает микроконтроллер STM8S003.
Для проверки радиомодуля я залил в Arduino довольно банальный код:
К компьютеру HC-12 я подключил через адаптер на базе FT232 (естественно, подойдет и любой другой USB-UART адаптер):
К Arduino радиомодуль был подключен, как показано на фото:
Радиомодуль питается от 5 В. Как обычно, TX подключаем к RX, и на оборот, RX к TX. В общем, принцип минимального удивления в действии.
Интересно, что радиомодуль пригоден для впаивания в плату (у него по дэфоллту нет штырьков, обратная сторона абсолютно плоская, на нем нет RP-SMA разъема для антенны, и так далее), что позволяет использовать его в самопальных устройствах. Например, можно за вечер сделать пару компактных устройств для получения телеметрии с квадракоптера. Как использовать FT232 в собственных устройствах было показано в заметке Собираем USB-программатор для AVR из ATmega328P и FT232. Стоит также отметить, что HC-12 можно настраивать при помощи AT-команд, описанных в мануале [PDF].
Fun fact! Готовая телеметрия для квадрокоптера в сущности является еще одним сравнительно недорогим радиомодулем с UART-интерфейсом. Телеметрия, приведенная по ссылке, у меня заработала на baud rate 57600 (вместо указанных в описании 115200). Кроме того, в ней неправильно подписаны RX и TX. Но в остальном вполне себе нормальный радиомодуль. Корпус при необходимости легко открывается при помощи отвертки и затем собирается обратно.
В общем-то, это все, о чем я хотел сегодня рассказать. Если вам было интересно написанное выше, обратите также внимание на более раннюю заметку о радиомодуле NRF24L01. Как всегда, буду рад вашим вопросам и дополнениям.
Радиомодули на 433Мгц построенные на однокристальных трансиверах CC1101 (HC-11) и SI4463 (HC-12) и микроконтроллере STM8 который реализует UART интерфейс.
Ниже код, АТ команды и схема подключения из видео
Подключено было так:
Купить модули:
Инструкции на модули:
Описание АТ команд модулей:
Режим FU1. Умеренный режим энергосбережения, рабочий ток модуля составляет около 3,6 мА. В этом режиме модуль может работать на любой скорости последовательного порта, скорость передачи данных по воздуху является неизменной и равной 250,000bps. В этом режиме нет смысла занижать скорость UART. режим для быстрой передачи данных на короткие растояния.
Режим FU2. Режим максимального энергосбережения, рабочий ток модуля составляет около 80мкА, скорость передачи данных по воздуху является неизменной и равной 250,000bps (для HC12). В этом режиме доступная скорость последовательного порта 1200bps, 2400bps и 4800bps. Е сли в настройках скорость порта будет превышает 4800bps, она автоматически будет уменьшена до 4800bps. В режиме FU2 передается не большей объем данных, каждый пакет составляет менее 20 байт и требуется большой интервал между передачей пакетов, более двух секунды для HC12 и 400мс для HC11, в противном случае данные могут быть потеряны.
Режим FU3 (режим по умолчанию) . В этом режиме м одули автоматически регулирует с корость беспроводной передачи данных, в соответствии со скоростью передачи последовательного порта . Для того, чтобы получить максимальную дальность связи, скорость последовательной передачи данных должна быть минимальна , (1200bps или 2400bps). Соответственно на более высоких скоростях дальность связи уменьшится. Рабочий ток модуля составляет около 16мА
Режим FU4, Режим для максимальной дальности связи. У HC12 поддерживается только одна скорость последовательного порта, 1200bps, е сли в настройках скорость порта будет превышает 1200bps, она автоматически будет уменьшена. С корость передачи данных по воздуху снижается до 500bps. В режиме FU4 требуется очень большей интервал между передачей пакетов, более двух секунд, каждый пакет должен быть менее 60 байт, в противном случае данные могут быть потеряны. У HC11 этот режим также для максимальной дальности связи, но максимальная скорость порта ограничена 9600bps (может быть меньше) и заметно меньший интервал между передачей пакетов, задержка
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
-1 dBm | 2 dBm | 5 dBm | 8 dBm | 11 dBm | 14 dBm | 17 dBm | 20 dBm |
(0.8mW) | (1.6mW) | (3.2mW) | (6.3mW) | (12mW) | (25mW) | (50mW) | (100mW) |
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
-30dBm | -20dBm | -15dBm | -10 dBm | 0 dBm | 5 dBm | 7 dBm | 10 dBm |
(0.001 mW) | (0.01 mW) | (1mW) | (0.1 mW) | (1 mW) | (3 mW) | (5mW) | (10mW) |
Дополнительно:
Таблица соответствия беспроводной скорости передачи данных и скорость UART порта в режиме работы FU3 (режим по умолчанию). Д ля HC12:
Скорость UART | 1200 | 2400 | 4800 | 9600 | 19200 | 38400 | 57600 | 115200 |
Скорость по радио | 5000bps | 15000bps | 58000bps | 236000bps |
Таблица соответствия беспроводной скорости передачи данных и чувствительности приемника. Д ля HC12:
Скорость по радио | 500bps | 5000bps | 15000bps | 58000bps | 236000bps/250000bps |
Чувствительность приемника | -124dBm | -116dBm | -111dBm | -106dBm | -100dBm |
Некоторые характерные эталонные значения для различных режимов работы, Д ля HC12:
Читайте также: