Как изменить скорость передачи данных ESP8266 (12e) на постоянной основе?
ВАЖНО: НЕ ИСПОЛЬЗУЙТЕ `AT+IPR=9600`! (см. обновление)
У меня есть модуль ESP8266 12E, который обменивается данными на скорости 115 200 бод. Поскольку я использую его с Arduino Nano с SoftwareSerial, все становится беспорядочным. Поэтому я обнаружил, что мне следует уменьшить скорость передачи данных модуля ESP.
Я нашел эту ссылку о том, как это сделать.
Я задаюсь вопросом
-
Это постоянное изменение или нужно делать это каждый раз после включения модуля?
-
Могу ли я добиться того же, посылая команду с Arduino через SoftSerial? Ну, я думаю, что нет, так как я пробовал и всегда получал ошибку на
AT+CIOBAUD=9600
илиAT+IPR=9600
. -
Я где-то читал, что в новых версиях прошивки ESP8266 скорость передачи данных по умолчанию равна 9600. Может ли кто-нибудь подтвердить это, и если да, то лучше ли прошить эту новую прошивку?
Производитель модуля:
Ai-Thinker Technology Co.,Ltd.
Я думаю, что текущая версия прошивки 0.3.0. Если я посылаю AT+GMR
, я получаю:
sending AT+GMR
response: ?AT¥TJÕ¨H(Q�²•ÉÍ¥½¹é‚r¢‚r‚r‚BÕ��Â’‚ŠªŠ¢Ò¢ªÒªÂJm
SDK versioo:0.3.0
Ai�½½
‚Šj
Опять какой-то мусор из-за слишком высокой скорости передачи данных.
Другая информация о модуле:
sending AT+RST
response: ?AT+RST
OK
WRT
"%M
<99CT
ets Jan 8 2013,rst catse:2, boot lode:(3,7)
load 0x40100000ntail 4
chksum 0x89
ld tail 4
chm3 tail 8 r 0 aM
ón't use rtc mem dat`
sl��oÌÿ
Ai-Thinker Technology Co.,Ltd.
UPDATE
(*) Я использовал модуль FTDI232 для отправки AT+IPR=9600
на мой модуль ESP8266-12E и я сломал его!
НЕ ИСПОЛЬЗУЙТЕ AT+IPR=9600
НА ESP8266(-12E).
Мне не удалось восстановить его до сих пор! Я пытался перепрошить его, но получаю исключения Invalid head.
На новом модуле я послал команду AT+CIOBAUD=9600
и все заработало. Постоянно!
Характеристики моего модуля:
AT+GMR
AT version:0.40.0.0(Aug 8 2015 14:45:58)
SDK version:1.3.0
Ai-Thinker Technology Co.,Ltd.
Build:1.3.0.2 Sep 11 2015 11:48:04
OK
В зависимости от того, какая последняя версия интерпретатора AT Instruction Set установлена на вашем чипе, две инструкции, которые вы пробовали, могут быть недопустимыми; они не перечислены в документе ESP8266 AT Instruction Set компании Espressif'. Поиск "CIOBAUD" или "IPR" в текущем документе (версия 1.5.3) не дал результатов.
Команды скорости передачи данных теперь "AT+UART_CUR" и "AT+UART_DEF", которые конфигурируют весь UART для текущей сессии или текущей и будущей сессий, соответственно. Прототипом команды в руководстве является:
Я использовал их и могу подтвердить, что они работают.
Что я обнаружил при использовании программного последовательного интерфейса, так это то, что он может достаточно хорошо передавать 115200 бод для отправки команд на устройство (хотя я бы не стал создавать приложение, которое зависит от этого), но он может надежно читать только до 9600 бод. Я'смог изменить скорость передачи данных моих устройств' с 115200 бод на 9600 через программный последовательный порт; вы просто должны ожидать возвращения мусора и игнорировать его:
Я подключил модуль FTDI232 со скоростью 115200 бод и теперь могу читать спецификации модуля ESP8266:
После этого я отправил команду
AT+IPR=9600
, которая сначала показалась мне правильной. Но после перезагрузки модуля я получил только мусорный ответ на любой скорости передачи данных.НЕ ОТПРАВЛЯЙТЕ AT+IPR=9600 НА ВАШ МОДУЛЬ ESP8266(12e).
Возможно, команда
AT+UART_DEF
, как упомянул JRobert, работает, но я использовал командуAT+CIOBAUD=9600
и она сработала. Постоянно!Надеюсь, это может помочь другим.
Похоже, что у вас проблемы с блоком питания. Каков номинал вашего блока питания? И попробуйте добавить небольшой конденсатор между vcc и землей. Также стоит обновить прошивку до версии 0.9, в которой исправлена проблема со скоростью передачи данных.
Вы можете найти новую прошивку на https://github.com/espressif/esp8266_at