Подключение радиомодулей HC-12 на основе трансивера Si4463

Подключение HC-12 Si4463
Радиомодули 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.

В следующей таблице представлены данные по чувствительности приемника, в зависимости от скорости передачи данных по радиоканалу:

Скорость по радиоканалу, Бит/сек 5000 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. Имеется два способа входа в командный режим:

  1. Установка низкого логического уровня на входе SET, во время нормальной работы модуля (питание все время присутствует).
  2. Установка низкого логического уровня на входе SET (подключение к шине GND), перед подачей питания на модуль.

Любой из этих способов приведет к переключению модуля в командный режим, отличие второго способа в том, что модуль примет фиксированные настройки порта UART, а именно: скорость 9600 Бит/сек, 8 бит данных, без проверки четности, 1 стоп-бит (8N1). Таким образом, этот способ удобен, когда настройки порта UART неизвестны.

При входе в командный режим (после установки низкого уровня на входе SET) необходимо выдержать паузу не менее 40 мс, перед тем как передавать команды на модуль.  После изменения параметров модуля, новые настройки вступят в силу после выхода из командного режима. Для выхода из командного режима и переключения в режим передачи данных, необходимо установить высокий логический уровень на входе SET, после чего выдержать паузу не менее 80 мс, необходимую для применения новых настроек и переключения режимов.

Вывод SET подтянут к высокому логическому уровню внутри модуля, для управления требуется выход с открытым коллектором.

В командном режиме модуль HC-12 поддерживает стандартные AT команды, любая команда начинается с символов AT, в конце команды должен присутствовать символ возврата каретки <CR> (шестнадцатеричное значение 0x0D, в языках программирования “\r”). Ответное сообщение модуля отличается от стандарта AT команд, ответ непосредственно начинается с сообщения и заканчивается символами <CR> и <LF>, в то время в стандарте, ответное сообщение начинается и заканчивается символами <CR><LF>, где <LF> – символ перевода строки, шестнадцатеричное значение 0x0A, в языках программирования “\n”. С помощью USB-UART преобразователя модуль можно подключить к компьютеру и установить соединение, например, с помощью терминальной программы Terminal 1.9b.

Ниже представлены все основные команды модуля:

Описание Тестовая команда
Формат 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+SLEEP
Ответ OK+SLEEP Спящий режим активирован
Примечание После передачи команды, необходимо выйти из командного режима, после чего модуль перейдет в спящий режим, ток потребления составляет 22 мкА. В спящем режиме модуль не реагирует на данные передаваемые по UART.

Для выхода из спящего режима, необходимо заново войти в командный режим.

 

Описание Команда возврата к заводским настройкам
Формат AT+DEFAULT
Ответ OK+DEFAULT заводские настройки восстановлены
Примечание Заводские настройки: скорость порта UART 9600 Бит/сек, номер канала 001, режим передачи данных FU3, мощность передатчика +20 дБм

Все настройки модуля сохраняются в энергонезависимой памяти, и не сбиваются при отключении питания.

 

Подключение модуля HC-12 к микроконтроллеру

Для тестирования я использовал микроконтроллеры PIC16F628A, из-за наличия аппаратного USART модуля, что упрощает подключение радиомодулей HC-12. Схема подключения представлена ниже:
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В, то в разрыв цепи питания необходимо установить диод, в целях снижения перегрузки стабилизатора напряжения на плате модуля.

Программы передатчика и приемника (неполный код) представлены ниже:

В программах много общего, так как используются одинаковые подпрограммы автоматической настройки модуля HC-12, а также подпрограммы приема и передачи данных по UART.

Как я и говорил, в микроконтроллере задействован аппаратный USART, прием данных от радиомодуля ведется в подпрограмме обработки прерываний, полученные данные сохраняются в регистры ОЗУ (начиная с регистра data_rx) с помощью косвенной аддресации. В командном режиме (когда на линии микроконтроллера set_hc12 низкий лог. уровень) данные по UART принимаются до получения символа <LF> (0x0A), который является завершающим в сообщении. Далее устанавливается флаг получения ответа от модуля flag,0. Сообщение анализируется с помощью подпрограммы sravn_otv, где происходит сравнение с правильными ответами, которые хранятся в таблице данных tab1.

В прозрачном режиме (когда линия set_hc12 настроена на вход) по UART ведется прием данных, полученных по радиоканалу от другого модуля. Длину пакета данных, которыми обмениваются радиомодули, я установил на уровне 3-х байт (в счетчик tmp_byte записывается число 3), причем первый байт синхронизирующий, его значение всегда равно 64 (ASCII вариант @).  Только после приема синхронизирующего байта, разрешается прием остальных двух байт, это сделано на случай потери синхронизации, например, если один или несколько байтов в пакете данных будут утеряны. После приема правильного пакета данных, устанавливается ранее упомянутый флаг flag,0.

AT команды передаются с помощью подпрограммы message, команды хранятся в таблице данных tab. Перед вызовом подпрограммы, в аккумулятор (W) надо записать число: порядковый номер первого символа соответствующей команды в таблице данных, то же самое справедливо и для подпрограммы сравнения ответов sravn_otv.

Подпрограмма настройки режимов zap_regim выполняет автоматическое соединение с радиомодулем, путем перебора скорости UART микроконтроллера в пределах 1200-19200 Бит/сек, при этом проверяется правильный ответ от модуля (OK) на команду AT, после чего определяется режим передачи данных, считанный ранее из EEPROM (ячейка 0x00) в регистр regim. Далее в соответствии с режимом выполняется настройка параметров радиомодуля.

Большинство временных задержек организованы на основе таймера TMR1, в частности кнопки SB1, SB2 опрашиваются не ранее 250 мс с момента последнего нажатия. В программе приемника дополнительно используется таймер TMR0, для организации задержки включенного состояния выходного канала в режиме повторения (канал включен, пока нажата кнопка на передатчике), задержка составляет 300 мс.

Настало время тестирования, и я провел измерение дальности связи модулей HC-12 в условиях городской застройки для различных режимов и условий, результаты объединил в следующую таблицу:

Внешние условия, тип антенны Режим передачи данных
FU1 FU2 FU3 FU4
Прямая видимость, штыревая антенна

150 м (450 м)

150 м (400 м) 600 м (1 км) 1 км *
Прямая видимость, спиральная антенна 100м (250 м) 100м (200 м) 400 м (550 м)
Непрямая видимость (среди многоэтажек), штыревая антенна ~200 м ~500 м
* Примечание На расстоянии более 1 км измерения не проводились

Таблица содержит данные по дальности уверенной связи, а в скобках указано максимальное расстояние, на котором удалось поймать сигнал обратной связи (зона слабого и неуверенного приема). В качестве штыревой антенны использовался медный одножильный проводник длиной 17 см.

Режим FU4 отличается значительной задержкой передачи данных, около 1 сек, то есть для получения ответа от приемника после отправки команды потребуется не менее 2 сек, кроме этого не рекомендуется отправлять пакет данных чаще, чем один раз в 2 сек. Данные особенности не позволяют использовать режим повторения (канал включен пока нажата кнопка на передатчике) для каналов на приемнике, только режим чередования. То же самое относится к режиму FU2 (режим сверхнизкого потребления), где задержка передачи данных составляет 0,5 сек. У меня не было возможности протестировать модули на расстоянии более 1 км, мешала городская застройка, не было прямой видимости, поэтому пока не могу судить о максимальной дальности связи (для режима FU4 заявленная дальность составляет 1,8 км).

В режиме FU2 я заметил особенность, при снижении скорости UART модуля до 1200-2400 Бит/сек, сигнал обратной связи от приемника начинал пропадать, и не достигал передатчика (независимо от расстояния), хотя команда до приемника доходила. На скорости 4800 Бит/сек таких проблем не возникало.

В устройствах (передатчик/приемник) микроконтроллеры работают от внутреннего тактового генератора в 4 МГц, при больших перепадах температуры окружающего воздуха лучше использовать внешний кварцевый резонатор, так как возможен уход рабочей частоты и нарушение функционирования UART интерфейса между модулем и микроконтроллером.

В общем радиомодули HC-12 показали себя очень хорошо, обладают широко распространенным интерфейсом связи UART, достаточно простые настройки, большая дальность связи, возможность реализации обратной связи. До этого я тестировал радиомодули WL101-341 WL102-341, а также комплект XY-MK-5V FS1000A, это простые менее навороченные модули, и значительно дешевле по стоимости.

HC-12 внешний вид
Прошивка МК и исходник передатчика и приемника

Последние записи:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *