Подключение радиомодулей 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.

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

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

  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 внешний вид
Прошивка МК и исходник передатчика и приемника

По ссылке ниже представлена модифицированная прошивка, изменена скорость передачи данных для режима FU3 на 4800 Бит/сек.
Модифицированная версия прошивки

Обновление от 24.02.18:
Частота внутреннего генератора микроконтроллера зависит от напряжения питания и температуры окружающей среды, поэтому возможен уход частоты и некорректная работа UART модуля микроконтроллера. Поэтому для большей надежности к микроконтроллеру в передатчике и приемнике можно дополнительно подключить кварцевый резонатор на 4 МГц, схема подключения представлена ниже:
Схема подключения кварцевого резонатора

Ниже приведены ссылки на прошивки под кварцевый резонатор:
Прошивка передатчика и приемника под кварцевый резонатор 4МГц

Модифицированная версия под кварцевый резонатор, изменена скорость передачи данных для режима FU3 4800 Бит/сек.
Модифицированная версия под кварцевый резонатор 4МГц

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

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

  1. Круто!!!
    Мои HC-12 уже три недели едут с Али.Подпрыгиваю от нетерпения.
    Буду пробовать.UART по проводу я делал.
    Работает без ошибок.

    • И как бы увеличить скорость передачи данных.
      Читай-уменьшить время передачи до минимума?
      Пусть в ущерб дальности.

      • Максимальная скорость передачи данных обеспечивается в режиме FU3, при скорости порта UART от 57600 Бит/сек, исходя из таблиц в спецификации минимальное время передачи 4 мс, быстрее никак)

  2. Решаю тему работы пяти трансиверов,объединеных в сеть.
    Каждый должен общаться с каждым.Может возникнуть ситуация одновременного включения передатчиков.Но расхронизация может в 0.01 секунды.Никак не могу обойти коллизию.
    Может что посоветуете?

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

      Другой вариант, если один трансивер начнет передавать, то все остальные начнут принимать данные, получив первый байт, никто из них не должен будет передавать данные, до тех пор пока пакет данных не будет полностью получен (при фиксированной длине пакета). Но этот вариант полностью не исключает коллизию, а уменьшает вероятность ее появления, так как от начала передачи и до приема 1-го байта проходит некоторое время, в течении которого другой трансивер может начать передачу.

  3. У вас ошибочка в таблице чувствительности в первой колонке. Вместо 5000 должно быть 500.

  4. У меня версия прошивки 2.4. На скоростях выше 2400 в FU3 работает нормально (ожидаемо). А вот на 1200 и 2400 вообще не работает. Менял каналы, устанавливал мощность передачи пониже — не связываются. Только подниму скорость на 4800 — коннект моментальный. Так и не понял причину нестыковки.
    По поводу взаимодействия нескольких трансиверов.
    Дело в том, что 4463 это пакетный полудуплексный трансивер. То есть пока он не примет весь пакет, он не выставит сигнал наличия данных в приемном буфере. Соответственно, только сканируя наличие входящих данных, невозможно узнать наличие передачи в данный момент с другого модуля. Поэтому, кмк, единственным решением разграничения времени передачи разными трансиверами будет передача только в своем тайм-слоте и коррекция таймслота по предыдущим передачам других модулей.
    Поясню. Пускай ширина таймслота 10мс. Каждому трансиверу назначаем номер и в пакете передаем номера источника и получателя. Все стоят на приеме. Как только получен пакет, смотрим на отправителя. Допустим, мы номер 5. А пакет пришел от номера 2. Значит мы еще ждем (5-2-1) = 2*10 = 20мс (то есть пока передадут 3 и 4 модули). А если принят пакет от 4 модуля, то осталось ждать (5-4-1) = 0мс, то есть уже надо передавать. Таким образом, вся сеть постоянно подстраивается под таймслот и выпадение одного из трансиверов не остановит передачу другим, просто будет пропущен один таймслот вхолостую.

    • У меня модули версии 2.3, режим FU3 на скорости 2400 Бит/сек функционирует нормально, пока ничего не могу сказать по вашей проблеме, если попадутся модули версии 2.4 обязательно проверю.

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

      • Вам повезло больше 😉 А проверяли на столе рядышком? Я в терминалке все смотрел и модули рядом на столе. Попробую еще разнести их подальше, может оглушают друг друга.

        • Да на близком расстоянии около 15-20 см, и вплоть до 1 км. Я в терминале не смотрел, у меня собраны передатчик и приемник описанные в этой статье.

    • Иными словами-пока все не примет передача невозможна?
      То есть на очереди передачи он на втором месте.
      И на оборот.

  5. Афигеть!!!!
    Получил наконец свои модули.
    Прописал UART на передатчик и на приемник на разных макетках.
    И оно все заработало.
    Брал с потолка разные цифры (123,112,42 и т.д.) и посылал передатчиком.
    Контролировал индикатором TIC55.
    И оно все принимает.Без ошибок.Никаких танцев с бубном.Даже скушно.
    Будем развивать тему дальше.
    И это после почти двух-трех безрезультатных месяцев стражений с NRF24L01.

    • Отлично! Все верно здесь ничего сложного нет, модули просты в подключении. А NRF24L01 там целые дебри в даташите, замучаешься все изучать, поэтому у меня даже желания не возникло возиться с ними.

      • И все же.
        Спасибо вам Руслан.
        Хоть пинаете в нужную сторону.
        А то ведь часто не знаешь где взять и с чего начать.
        А тут посмотришь что люди делают и …….

        • Руслан.
          Признаться я новичок по работе с АТ командами.
          Не могли бы вы написать подробную статью по этому поводу?
          Что то ничего не могу найти в интернете.
          Очень хочется пообщаться с HC-12.
          Да и вообще восполнить этот пробел.

          • А что конкретно в командах вам не понятно? Все команды для модулей я привел в этой статье. И основное отличие от стандарта AT команд тоже указал.

            • AT+SLEEP так нужно отправлять?
              Последовательно по буквам?
              A .129 B’10000001′ 0X81
              T .148 B’10010100′ 0X94
              + .107 B’01101011′ 0X6B
              S .147 B’10010011′ 0X93
              L .140 B’10001100′ 0X8C
              E .133 B’10000101′ 0X85
              E .133 B’10000101′ 0X85
              P .144 B’10010000′ 0X90

  6. Я заказал E30-ttl10 — при питании 3.3В и дефолтных настройках дальность составила в прямой видимости около 500 метров(антенна кручёная спиралька)! После установки на сервер антенны — прямой штырь и питании 5В — дальность стала около 700 метров! Если скорость радиоканала не поднимать — работает изюмительно!(проверял на максимальной скорости — дальность падает почти в два раза)
    По потреблению — в режиме сна — вообще мкамперы, передача 6 байт- по времени около 30млсек — дальше опять спать!
    Почему я с ними начал работать — из 5 NRF24l01 — только одна дала заявленный ток в спящем режиме — а так до 6 млА доходила! При батарейном питании — это смерти подобно!

    • Серию E30 китайцы сделали на много правильнее, чем НС-12. У НС-12 основная проблема в том, что скорость в эфире зависит от скорости порта. При односторонней связи это еще катит, но когда обмен типа «запрос-ответ», то теряем слишком много времени. К примеру, работаем на низкой скорости и один пакет передается 10мс. Значит тратим 10мс на закачку в НС-12, затем он передает до 10мс (от чего зависит не знаю, то он сразу передает, то ждет наполнения буфера), и опять 10мс на выкачку приемником из буфера. Если должна быть ответка, то опять 10 мс закачка, эфир и 10мс выкачка. А вот E30 позволяет закачку-выкачку делать на максимальной скорости, то есть в нашем случае только на эфир тратим 10+10, а на обмен в разы меньше. Ди а вариантов скорости в эфире у E30 больше, что позволяет балансировать дальность-скорость. Жаль, цена больше, хотя внутри там тот же трансивер и мелкий дешевый МК.

    • По поводу NRF24l01. У меня уже больше двух лет работают три разных устройства на батарейном питании.
      Самое прожорливое при питании од двух батареек АА в режиме сна “кушают” около 2,3мкА (ATMega168P, nRF24L01+, BMP085, SHT10). Батарейки за два года разрядились 3,25V до 3,07V, так как на протяжении всей работы, проводились эксперименты по продолжительности времени между пробуждениями МК.

  7. собрал приемник и передатчик по вашей схеме проверил установки hc-12 с помощью терминал
    при включении все как описано, светодиоды включаются на секунду при загрузке,но передачи нет,ток передатчика при нажатии кнопок 18 миллиампер, перепрошил ,перепроверил правильность монтажа, hc-12 проверял в режиме U3. пару раз включались светодиоды на приемнике когда я передатчик держал в руке.Питание от сетевых источников +5в.

    • Если светодиод загорается на 1 сек, значит микроконтроллер соединяется с модулем и прописывает в него настройки. Возможно передатчик и приемник настраиваются на разные режимы, надо выставлять одинаковые режимы и на передатчике и на приемнике, то есть в EEPROM микроконтроллера записывать одинаковые цифры для обоих микроконтроллеров.

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

      Попробуйте запитать передатчик и приемник от аккумуляторов либо батареек, отдельно для передатчика и приемника.

      Может дело в антеннах, используйте для начала одножильный провод длиной 17 см.

  8. OK+B9600[.][.]OK+RC001[.][.]OK+RP:+20dBm[.][.]OK+FU3[.][.]
    это это я записываю в hc-12 ,выпаиваю и проверяю hc-12, вместо B9600 записано B2400
    может это записывает микроконтроллер.

    • Да, это записывает микроконтроллер (скорость 2400 кБит/сек для режима FU3), вы статью читали? Я специально написал такой код чтобы микроконтроллер все сам настраивал.

  9. Если несколько HC-12 настроенs на один канал, при передаче с одного принимать будут все? То есть устанавливается ли связь устройство-устройство или все видят всех? Хочу сделать беcпроводное подобие RS-485.

  10. здравствуйте,проверял команды AT на модуле HC-12 , не проходит команда AT+U801 отвечает ошибка ,с другими командами все ok. может нужно перепрошить HC-12
    верси_v2.4

    • В команде AT+U801, после цифры 8 должна быть буква, а не число, например N – без бита четности, E – с битом проверки на четность, O – с битом проверки на нечетность, вы случаем цифру не поставили вместо буквы?

      И хотел узнать, у вас заработали прошивки приемника и передатчика? В комментариях пользователь sslobodyan писал что у него модули не связывались в режиме FU3 на скорости 2400 Бит/сек, версия его модулей была также 2.4, по его словам связь устанавливалась только на скорости 4800 Бит/сек и выше, может у вас такая же проблема? Просто у меня нет модулей с версией 2.4, есть только 2.3, и проверить я не могу пока.

      Может мне стоит подредактировать прошивки и поднять скорость для режима FU3 до 4800 Бит/сек (на данный момент в прошивках скорость для FU3 2400 Бит/сек).

  11. спасибо за внимание. пока запустить не удалось , точно команду записал неправильно .
    если у вас есть возможность подредактировать прошивки было хорошо. очень нужен ваш проект.

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

  13. проверял на дальность,работает не далее семи -восьми метров.Дальше явно теряется раборчивость приема .Ток потребления во время передачи 16ma.Подключал разные антенны. Не понравилось управления включение -выключение,при одном нажатии может два -три раза включится и выключится управление, а с дальностью не понятно ,явно не выходит на штатную мощность .

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

      При кратковременном нажатии кнопки передатчика, выход приемника не может включится выключится много раз, может вы что-то путаете? именно на выходе приемника срабатывает много раз?

      В программе стоит пауза как минимум 0,25 сек на опрос кнопок в передатчике, так что при кратковременном нажатии (которое длиться примерно 0,1 сек) выход приемника не успеет много раз переключится, если кнопку удерживать то выход приемника будет постоянно переключаться минимум каждые 0,25 сек.

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

      Когда снова нажимаем кнопку на передатчике, выходной канал на приемнике отключается, сигнал обратной связи поступает на передатчик, где включается красный светодиод, который оповещает о том, что один из каналов на приемнике отключился. Далее если кнопки не будут нажаты, передатчик переходит в спящий режим и отключает светодиод. Красный и зеленый это сигнал обратной связи, зеленый — означает что включился один каналов на приемнике, при этом не важно какой из 2-х каналов, красный означает что один из каналов выключился. Надеюсь понятней стало.

  14. Здравствуйте.хочу обяснить, по срабатыванию кнопок .При коротком нажатии кнопок все нормально срабатывает,но если я зажимаю кнопку присходит постоянное переключение
    команд вкл выкл.Если это возможно изменить команду . Чтобы при нажатии кнопки выполнялся один цикл .Нажал команда выполнена,отпустил кнопка готова к выполнению следующей команды .Или увеличить время опроса кнопок.Вы уж меня извините за назойливость.Прошивку скачал детали есть попробую с внешним генератором.Сообщу.Спасибо.

  15. прошивка с внешним генератором не пошла совсем , загружается, но связи нет.
    Вторая с внешним генератором FU3-4800_xt4Mxz работает один канал. Кнопка передачи на 10 контакт при включении срабатывает примерно через 1 сек не останавливаясь. Видимо прблемы с hc_12.Дальность связи примерно метров 7.с уважением CC.

    • Даже не знаю в чем еще может быть проблема, возможно модули неисправны. Чтобы выяснить надо модули подключить к двум разным компьютерам через USB-COM преобразователи, и просто вручную с одного компьютера послать данные на второй компьютер.

      А режим не пробовали менять? при программировании микроконтроллера в ячейку EEPROM с адресом 0x00 необходимо записать число от 1 до 4, что соответствует режимам FU1-FU4, по умолчанию если ничего не записано включается режим FU3. Попробуйте режим FU1, он почти идентичен режиму FU3, только дальность связи до 100м, и потребление меньше в 4 раза.

      Может быть у вас при программировании микроконтроллеров в EEPROM записываются разные данные? посмотрите какие данные записывается в EEPROM при программировании.

  16. при программировании в EEPROM ничего не записывается , с миганием канала мой косяк, замкнула дорожка.

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

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