Jump to content

    
Sign in to follow this  
Rroma47

Не оживает радиомодуль HC-12 (UART) на SI4463

Recommended Posts

Прошу не пинаться, если задаю чаниковский вопрос, но ответа, за ближайшую неделю поисков по инету, я так и не нашел  (включая англоязычный инет и даже китайский)

Давеча приобрел сабж  - HC-12 (UART) на SI4463, прикрутил его к переходнику UART-USB, вошел в терминале, как положено и....
На любое нажатие любых клавиш, модуль выдает "ERROR".
Попытка набрать
"AT"-команду ни к чему не приводит.
Что бы не нажималось с клавиатуры (или даже посылалось пакетом) - на все ответ "ERROR".

Исключение английская буква "d" или русская буква "Ю" коды 0х3F (dec 63) или 0xDE (dec 222)
На "d" - просто повторяет этот символ в эхо ответе
А на 0xDE (dec 222) почему-то выдает "ОК+".
Есть еще пара кодов, на которые модуль просто никак не реагирует.

Никакие, положенные по документации, команды "AT" - модуль не жует. И вообще общаться отказывается.
Что я делаю неправильно ?

Edited by Rroma47

Share this post


Link to post
Share on other sites
14 минут назад, Pyku_He_oTTyda сказал:

А скорость?

Вывод S прижат к земле?

КОНЕЧНО !

На вход подается положенные 9600 8N1
А Set - уперт в землю.

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

19 минут назад, x893 сказал:

А SET ?

 

Все, что показано на ролике и на страничке этого ролика я проделывал много раз.
И напрямую с компом (через UART-USB), и через Ардуино.

Ничего не помогает.

Такое ощущение, что модуль находится в каком-то странном режиме (типа как в спящем), но вывести его обратно никак не удается. На AT команды - не реагирует.

 

19 минут назад, x893 сказал:

А SET ?

 

Все, что показано на ролике и на страничке этого ролика я проделывал много раз.
И напрямую с компом (через UART-USB), и через Ардуино.

Ничего не помогает.

Такое ощущение, что модуль находится в каком-то странном режиме (типа как в спящем), но вывести его обратно никак не удается. На AT команды - не реагирует.

 

Share this post


Link to post
Share on other sites
2 минуты назад, x893 сказал:

Там есть режимы FU1... FU4

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

На команндный режим и на режим работы терминала UART - это не влияет.

Share this post


Link to post
Share on other sites

Почему думаете что 9600? Лучше попробовать перебрать все скорости. Мои например при переходе в командный режим, работают на 38400.

Share this post


Link to post
Share on other sites
5 минут назад, jcxz сказал:

Почему думаете что 9600? Лучше попробовать перебрать все скорости. Мои например при переходе в командный режим, работают на 38400.

Перебирал. Само собой перебирал. Чисто на шару. Вдруг заработает.
Но ответ приходит в 9600.
На терминале, при других скоростях просто ничего не отображается.
Подключался осциллографом и в двоичном режиме читал посылки от этого модуля (там всего-то пяток байтов) - все верно. Работает на 9600.
 

Share this post


Link to post
Share on other sites
1 hour ago, Rroma47 said:

Почему думаете что 9600?

Потому что у него на этой скорости "ERROR" выдаёт.

Остаётся питание. Попробуйте поставить конденсатор микрофарад на 1000-4700. Иногда помогает, особенно кто пытается запитаться по USB от ноута. Ещё нужно убедится, что в конце у вас 0x0D0A передаётся. Попробуйте только 0x0D передать. Если покупали на алиэкспрес,  то вероятность брака почти 100%.

Share this post


Link to post
Share on other sites

Господа!
Прошу прощения за беспокойство и искренне благодарю тех кто проявил участие и отписался.
ОЖИЛО.

Прошивка HC-12_V2.4 - жуткая вещь.

Эта прошивка НЕ работает под терминалом и через UART-USB.
Дело в том, что терминал отправляет нажатия клавиш непосредственно в порт по мере нажатий их оператором.
Микропрограмма контроллера принимает очередной символ и если в течение какого-то в ней заданного интервала не приходит следующий символ - то идентифицирует ошибку и выдает "ERROR"
Для полноценной работы необходимо высылать AT-команды ПАКЕТОМ. Без временных разрывов. (на ютубе - полно роликов, где аналогичные модули с другой версией прошивок прекрасно работают из PuTTY)
Скетч на Ардуино как раз и делает именно это - ждет полную строку и после нажатия энтера - высылает ее в HC-12 целиком.
(те, кто работал с модемами и другими терминальными устройствами будут приятно удивлены - такой "странности" микропрограммы. Походу у китайцев закончилась оперативка в этом контроллере)

Далее.
В отличие от других прошивок (сам не тестировал, но на ю-тубе полно роликов) - для ЭТОЙ ВЕРСИИ прошивки, в конце строки должен стоят именно символ NL (новая строка)
Если не ошибаюсь, это код 0x0A.
Не возврат каретки. Не оба символа, как это принято во многих системах. А именно NL и никак иначе.

Ну и третье - это уж совсем китайский беспредел - в большинстве систем - AT команды являются регистронезависимы.
В ЭТОЙ ПРОШИВКЕ команды можно подавать ТОЛЬКО в верхнем английском регистре и никак иначе.

Несоблюдение хотя бы одного из перечисленных условий - приводит к описанному результату.

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

Поэтому тему можно закрывать. Но удалять - нет смысла.

Share this post


Link to post
Share on other sites

Прикольный баг. Я такого не замечал, но виндозным терминалом никогда не пользовался, работал в этом - https://digitalchip.ru/terminal-1-9b-rabotaem-s-com-portom/ и команды всегда вводил ТОЛЬКО большими буквами.

 

Зато могу поделиться другим багом - у меня 2 модуля, оба работают в режиме FU2. В этом режиме у модуля пониженное энергопотребление с прослушкой эфира. При этом куча ограничений - скорость только 4800 и какие-то задержки при передаче. Плюс ещё и длинные последовательности байт (по моим наблюдениям больше 10) не передаёт. Но мне этого оказалось достаточно.

Так вот, один из модулей при входе в командный режим (SET:=0) всегда включает скорость уарта 9600, другой то включит 9600, то так и остаётся на 4800. Пришлось сделать в прошивке проца хак - сперва он стучится в модуль по 4800, если тот не ответил - врубает 9600. Только после этого система стабильно заработала.

 

Процы у меня - один STM32F030, другой - STM32L152.

И ещё раздражает то, что невозможно переключить радиоканал без запоминания его в EEPROM управляющего STM8. Где-то попадалась статья, чуваки пытались поменять STM8 на какой-то STM32, но там, по-моему, дело ничем внятным не закончилось.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this