Радиомодуль HC-12: беспроводной UART, AT-команды и примеры

Радиомодуль HC-12: беспроводной UART, AT-команды и примеры

HC-12 передаёт последовательные данные по радио на расстояние до 1800 м. Разбираем выводы, режимы работы, AT-команды и способы повысить надёжность обмена.

Беспроводная замена проводу UART

HC-12 — приёмопередатчик, задача которого — перенести цифровой сигнал по воздуху без каких-либо изменений. У модуля два сигнальных вывода, для входящего и исходящего потока: то, что подано на вход одного модуля, появляется на выходах всех таких же модулей в радиусе приёма. Два разнонаправленных канала — это, по сути, UART, и разрабатывался HC-12 именно под него, что видно и по названиям выводов. При этом приёмников может быть несколько, а сам сигнал не обязан быть последовательным протоколом: на одной стороне может стоять обычный выключатель, на другой — лампа.

Радиомодуль HC-12

Плата компактная, 15×28 мм без учёта ножек и антенны. Вместо штатной антенны можно подключить внешнюю — для неё предусмотрен отдельный разъём. Это особенно полезно, когда модуль размещают в металлическом корпусе.

Разъём для внешней антенны на плате HC-12

Выводы и подключение к Arduino

  • VCC — питание +5 В (на Arduino — 5V)
  • GND — общий провод
  • RXD — вход данных, соединяется с TX контроллера
  • TXD — выход данных, соединяется с RX контроллера
  • SET — выбор режима: при высоком уровне модуль работает как приёмопередатчик, при низком переходит в режим настройки

Вывод SET подтянут к питанию встроенным резистором 10 кОм, поэтому, если менять настройки не планируется, его можно не подключать. В противном случае его заводят на любой свободный вывод контроллера. В схему также рекомендуется добавить небольшой конденсатор, сглаживающий колебания питания во время сеансов связи.

Схема подключения HC-12 к Arduino с кнопкой и светодиодом

Характеристики и режимы

Рабочая частотаот 433,4 до 473,0 МГц, задаётся в настройках
Дальностьдо 1800 м на открытом пространстве при оптимальных условиях
Мощность передатчикадо 100 мВт, 8 уровней
Режимы работы4 (FU1–FU4)
Скорость обмена1200–115200, по умолчанию 9600
Шаг частотного канала400 кГц
ТрансиверSI4463

Режимов четыре. FU1 — экономичный, с потреблением 3,6 мА. FU2 — сверхэкономичный, 80 мкА. FU3 — скоростной, он установлен по умолчанию и потребляет 16 мА. FU4 — режим максимальной дальности с тем же током 16 мА, но с жёсткими ограничениями: скорость только 1200, не более 60 байт за передачу и пауза между пакетами не менее 2 секунд. Наиболее универсален третий режим, остальные нужны в специфических случаях.

Настройка AT-командами

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

  • AT — проверка связи; исправный модуль отвечает OK
  • AT-Bxxxx — скорость передачи: от 1200 до 115200 с удвоением на каждом шаге. После смены скорости общаться с модулем нужно уже на новой
  • AT+Cxxxx — номер частотного канала; независимые сети разносят не менее чем на 5 каналов
  • AT-FUx — выбор режима работы с 1 по 4
  • AT-Px — мощность от 1 до 8; по умолчанию максимальная, снижение уменьшает потребление и нагрев
  • AT-DEFAULT — возврат к заводским настройкам

С ростом скорости падают надёжность и дальность. Для большинства задач заводские параметры оптимальны; менять их имеет смысл, если на первом канале много помех, если рядом должны работать несколько независимых сетей, если нужна предельная дальность в ущерб скорости или требуется сверхнизкое энергопотребление.

Сети из нескольких модулей

Поскольку каждый модуль слышит все остальные в зоне приёма, на HC-12 можно строить не только связь точка-точка, но и простые сети по образцу RS-485, только без проводов. При этом приходится дополнительно заботиться о помехоустойчивости.

Сеть из нескольких модулей HC-12

От простой передачи к надёжной

В базовом примере на два одинаковых устройства загружается одна программа: нажатие кнопки на одном включает светодиод на другом. Кнопка подключена к выводу 2, светодиод — к 13, SET — к выводу 6 с высоким уровнем, порт открыт на 9600. При нажатии отправляется символ 1, при отпускании — 5. На практике такая схема срабатывает не всегда: радиоканал теряет байты даже на малом расстоянии, а при одновременном нажатии кнопок возникает коллизия.

Надёжность повышают избыточностью. Команда упаковывается в пакет из четырёх байт: стартовый 0x10, номер копии, сама команда и стоповый 0x20, и пакет отправляется три раза подряд. Приёмник выделяет пакет по первому и последнему байту, выполняет команду, а если принятая копия не последняя — отбрасывает остальные. После такой доработки сбои практически исчезают, и связка стабильно работает даже с тремя и более устройствами. Дальше систему можно улучшать: убрать delay(), добавить контрольную сумму, разделить опрос кнопок и отправку, а при риске одновременной передачи — ввести поочерёдный опрос устройств, как в RS-485.

Перед началом работы полезно убедиться, что модуль исправен: программа переводит SET в низкий уровень, отправляет AT и не идёт дальше, пока не получит OK.

Помехи и совместимость

Связи мешают толстые стены, крупные металлические предметы, а также электромоторы и другие мощные приборы. Часть помех удаётся обойти сдвигом частоты: эфир оценивают осциллографом или логическим анализатором на выводе TX и переходят на 5 каналов, пока не найдётся тихий участок. Аппаратно качество улучшают внешняя антенна и мощный стабильный источник питания. С любым UART-устройством HC-12 работает без особенностей, достаточно согласовать скорость. Модуль HC-11 похож в подключении и настройке, но построен на трансивере CC1101 и с HC-12 несовместим.

← Все статьи