• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Нужна помощь Не могу прошить ESP8266-01

abr_esp2866

New member
Добрый день! Модуль подключен к ардуино по такой схеме:


Собирал данную схему по статье ESP8266 и Arduino, подключение, распиновка. Модуль с родной прошивкой по данной схеме работает. Все команды AT отрабатывают. В общем, к схеме подключения претензии минимальные.

Начал прошивать по данному мануалу: ESP8266 прошивка, программирование в Arduino IDE. И теперь не могу добится от модуля ничего. Программирование вроде как проходит. По крайней мере, esptool ошибок не выдаёт:

esptool -vv -cd ck -cb 115200 -cp /dev/ttyUSB0 -ca 0x00000000 -cf /tmp/arduino_build_492355/Blink.ino.bin
esptool v0.4.9 - (c) 2014 Ch. Klippel <ck@atelier-klippel.de>
setting board to ck
setting baudrate from 115200 to 115200
setting port from /dev/ttyUSB0 to /dev/ttyUSB0
setting address from 0x00000000 to 0x00000000
espcomm_upload_file
espcomm_upload_mem
opening port /dev/ttyUSB0 at 115200
tcgetattr
tcsetattr
serial open
opening bootloader
resetting board
trying to connect
espcomm_send_command: sending command header
espcomm_send_command: sending command payload
trying to connect
espcomm_send_command: sending command header
espcomm_send_command: sending command payload
espcomm_send_command: receiving 2 bytes of data
espcomm_send_command: receiving 2 bytes of data
espcomm_send_command: receiving 2 bytes of data
espcomm_send_command: receiving 2 bytes of data
espcomm_send_command: receiving 2 bytes of data
espcomm_send_command: receiving 2 bytes of data
espcomm_send_command: receiving 2 bytes of data
espcomm_send_command: receiving 2 bytes of data
Uploading 226272 bytes from /tmp/arduino_build_492355/Blink.ino.bin to flash at 0x00000000
erasing flash
size: 0373e0 address: 000000
first_sector_index: 0
total_sector_count: 56
head_sector_count: 16
adjusted_sector_count: 40
erase_size: 028000
espcomm_send_command: sending command header
espcomm_send_command: sending command payload
setting timeout 15000
setting timeout 100
espcomm_send_command: receiving 2 bytes of data
writing flash
................................................................................ [ 36% ]
................................................................................ [ 72% ]
............................................................. [ 100% ]
starting app without reboot
espcomm_send_command: sending command header
espcomm_send_command: sending command payload
espcomm_send_command: receiving 2 bytes of data
closing bootloader

Во время экспериментов с разными параметрами заметил такую особенность, что выбранный бодрейт не влияет на ход процесса заливки прошивки. Я так понял, что esptool не проверяет успешность хода прошивки. Однако, перепробовал все скорости - не помогает.
Щё одну важную деталь, которую я заметил - после прошивки на скорости 115200 на порту появляется текст:
Код:
tail 8
chksum 0xef
csum 0xef
На других бодрейтах сообщение другое
Код:
0xef
csum 0xef
csum err
ets_m
Чем этот вывод примечателен - это тем, что в порт эту инфу не кидает никто, кроме модуля, ибо ардуина работает просто в роли преобразователя USB -> UART мимо контроллера. Ну а больше на порту никто и не сидит. Соответственно, есть предположение, что модуль не испорченный.
Второе же сообщение говорит о том, что прошивка на скорости 115200 проходит успешно, а на других скоростях завершается с ошибкой. Значит, бодрейт я выбрал правильный.

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

abr_esp2866

New member
Удалось при помощи wireshark пронаблюдать за процессом заливки прошивки. Оказывается, диагностические сообщения пишет не модуль, а сам esptool. По-ходу, дело оказалось не в модуле. Косяк в программной части программатора.
 

abr_esp2866

New member
Нет, всё-таки, что-то не так с модулем. Попробовал прошивать esptool из-под линукса
Код:
esptool -vv -cd ck -cb 115200 -cp /dev/ttyUSB0 -ca 0x00000000 -cf /tmp/arduino_build_492355/Blink.ino.bin
из-под windows
Код:
esptool -vv -cd ck -cb 115200 -cp COM3 -ca 0x00000000 -cf C:\arduino_build_492355\Blink.ino.bin
пробовал прошивать при помощи XTCOM_UTIL.exe по этой инструкции Прошивка WiFi модуля ESP8266 | Blablacode. Причём, пробовал прошивать и свою blink и стоковую.
Пробовал собрать SDK для прошивки по этому мануалу: Работа с ESP8266: Собираем компилятор и пишем первую прошивку. При помощи неё пробовал собрать blinky из статьи, а также стоковую.
Поигрался с esptool.py - интересная штука. Достаточно много опций, в том числе верификация и скачивание с флешки бинарного образа. Протестировал модуль со всех сторон: mac-адрес, chip ID, flash ID определяется. Образ, записанный на флешку, верифицируется по бинарным файлам. Попробовал скачать с флехи данные, которые были записаны ранее - один-в-один с бинарниками. Короче, флешка рабочая. Судя по тому, что обмен данными происходит, проц тоже живой.

Одного не пойму, почему залитая прошивка так и не хочет работать?
 

abr_esp2866

New member
Всё получилось достаточно прозаично. У меня погорел модуль. Спецификации говорят, что порт GPIO должен выдавать не более 6мА. Я же к нему подключил напрямую диод. Вот и результат. Купил новый модуль, он рабочий.
Есть надежда на то, что не работают только порты GPIO. Тогда можно будет попробовать использовать только RX и TX, которые работают.
 
Последнее редактирование:
Сверху Снизу