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

Решено В клон esp32 devkit v1 автоматически не заливается прошивка.

SinglWolf

New member
Приветствую.
Прикупил на Али сей модуль. До него была плата с ESP-12F с USB-UART на чипе CH340. С одной кнопкой RESET. Любые прошивки заливались автоматически. А сабжем пришлось повозиться.
В Arduino IE перепробовал всё, что удалось нагуглить по запросу "failed to connect to esp32: timed out waiting for packet header".
Помогала только последовательность нажатий кнопок: Нажимаем сначала RESET(EN) и, не отпуская её, затем BOOT. Модуль переходит в режим прошивки, о чём сообщает в консоли.
Пока платка не была вставлена в корпус устройства, мирился с ситуацией, нажимал кнопки...
Прошивка по воздуху тоже не работала автоматом (или через раз), если модуль был подключен к консоли. К тому же, если выдернуть шнурок USB из модуля на который подано внешнее питание, то ESP32 тупо зависал, надо жать RESET(EN)... Мысль о возврате на ESP-12F появлялась всё чаще и чаще. Но там так мало GPIO, да и на Wemos ESP32 Lite (на чипе CH340) такого косяка не имела (её, блин, спалил ненароком :()...
Грешил на кривой драйвер для CP2102, который сама нашла Win10. Замена на драйвер с сайта производителя положительного результата не дала...
Стал искать схему обвязки чипа UART на эту плату. Всё соответствует, номиналы в норме. Гугл твердит, мол, смирись, косяк не лечится. o_O Проскакивающие в поиске советы в виде подтяжки на пины EN, GPIO0, etc не имели смысла - всё есть.
Засада оказалась в номинале конденсатора (Который в кружочке). Низкий уровень на EN пропадал на какие-то доли миллисекунд раньше, чем требовалось Arduino IE и ей подобным. Припаял по схеме (тупо на контакты внешней кнопки сброса модуля) дополнительный конденсатор 1 мкф и всё заработало как надо. Выпаивать штатный конденсатор не стал, нет подходящего номинала SMD.

P.S. Об устройстве, в котором установлен этот злополучный девайс ещё не готов. В процессе постоянной необходимости нажимать кнопку BOOT, случайно спалил 1 канал усилителя мощности :rolleyes:. Жду с Али замену LM3886TF. В проекте это будет домашний музыкальный центр с управлением от ИК-пульта, энкодера, андроида, через WEB.
Предварительный усилитель на чипе TDA7313 с управлением по I2C.
Дисплей LCD1602 с встроенной кириллицей.

Надеюсь, что мой опыт пригодится. Всем добра!;)



2019-02-15_10-00-09.png
 

Bydenkin

Member
Приветствую.
Прикупил на Али сей модуль. До него была плата с ESP-12F с USB-UART на чипе CH340. С одной кнопкой RESET. Любые прошивки заливались автоматически. А сабжем пришлось повозиться.
В Arduino IE перепробовал всё, что удалось нагуглить по запросу "failed to connect to esp32: timed out waiting for packet header".
Помогала только последовательность нажатий кнопок: Нажимаем сначала RESET(EN) и, не отпуская её, затем BOOT. Модуль переходит в режим прошивки, о чём сообщает в консоли.
Пока платка не была вставлена в корпус устройства, мирился с ситуацией, нажимал кнопки...
Прошивка по воздуху тоже не работала автоматом (или через раз), если модуль был подключен к консоли. К тому же, если выдернуть шнурок USB из модуля на который подано внешнее питание, то ESP32 тупо зависал, надо жать RESET(EN)... Мысль о возврате на ESP-12F появлялась всё чаще и чаще. Но там так мало GPIO, да и на Wemos ESP32 Lite (на чипе CH340) такого косяка не имела (её, блин, спалил ненароком :()...
Грешил на кривой драйвер для CP2102, который сама нашла Win10. Замена на драйвер с сайта производителя положительного результата не дала...
Стал искать схему обвязки чипа UART на эту плату. Всё соответствует, номиналы в норме. Гугл твердит, мол, смирись, косяк не лечится. o_O Проскакивающие в поиске советы в виде подтяжки на пины EN, GPIO0, etc не имели смысла - всё есть.
Засада оказалась в номинале конденсатора (Который в кружочке). Низкий уровень на EN пропадал на какие-то доли миллисекунд раньше, чем требовалось Arduino IE и ей подобным. Припаял по схеме (тупо на контакты внешней кнопки сброса модуля) дополнительный конденсатор 1 мкф и всё заработало как надо. Выпаивать штатный конденсатор не стал, нет подходящего номинала SMD.

P.S. Об устройстве, в котором установлен этот злополучный девайс ещё не готов. В процессе постоянной необходимости нажимать кнопку BOOT, случайно спалил 1 канал усилителя мощности :rolleyes:. Жду с Али замену LM3886TF. В проекте это будет домашний музыкальный центр с управлением от ИК-пульта, энкодера, андроида, через WEB.
Предварительный усилитель на чипе TDA7313 с управлением по I2C.
Дисплей LCD1602 с встроенной кириллицей.

Надеюсь, что мой опыт пригодится. Всем добра!;)



Посмотреть вложение 7166
 

Ratmir

New member
Спасибо пользователю SinglWolf за совет, мне лично помог! Такая же проблема автоматически не заливалась прошивка, заливалась только по нажатию кнопки boot.
Ранее в ютубе находил решение от англ.язычного "esp32 Devkitv1 fix" идея правильная, но на мою плату не вкатила припаивание кондера 0,1мкФ.
Для решения сделал 1) Припаял кондер 1мкФ (танталовый) между EN и GND. 2) Заменил штатный кондер AMS1117 c 10мкФ на 25мкФ, просто был кондер и думаю стабильнее в пики.
Заработало, прошивки заливаются автоматически.2.png
 

SinglWolf

New member
По прошествию времени хотел подправить свой пост по поводу конденсатора на картинке, в кружочке который, но не тут-то было.
Дополню здесь.
Этот конденсатор блокировочный, по питанию 3,3 вольт на выходе AMS1117. Менять сразу. У меня оказалась пустышка, ёмкость 0 (ноль).
2) Заменил штатный кондер AMS1117 c 10мкФ на 25мкФ
И ещё желательно паралельно ему плёночный на 0,1 мкФ.
Сваял в Diptrace платку под модуль ESP-32 WROVER, заказал на PCBWay. Первый заказ на 5$ бесплатно, оплата только за доставку.
З.Ы. Замучал я свой прототип с ESP-32 до волшебного дыма...:rolleyes: ESP-12F живучая в разы. Эх... Жду когда придут платки (5 шт.)...
 

SinglWolf

New member
Хвастаюсь! :rolleyes: Пришли платки. На удивление всё быстро. Изготовление сутки, отправка двое (были праздники у них какие-то, извинились даже) и доставка 15 в Башкирию!
esp32.jpg
Плата с модулем ESP32 WROVER. Состав и управление:
  1. Темброблок на TDA7313 (внешний)
  2. Внешний модуль VS1053B - онлайн-радио и MP3-плеер с флешки (микро SD)
  3. Энкодер с кнопкой.
  4. Пищалка (для будильника, контроля нажатия кнопок, сигнализация событий).
  5. ИК-модуль для пульта от телевизора (внешний)
  6. Управление оборотами вентилятора охлаждения.
  7. Датчик температуры (внешний).
  8. Дисплей LCD 1602.
  9. Светодиодная индикация режимов.
  10. Подключение UART.
  11. Кнопка СБРОС.
  12. Джампер для BOOT.
Питание 12 вольт.
Как будет время, начну сборку и обкатку прошивки. Если выйдет годно, открою отдельную тему. Поделюсь.
Всем добра!;)
 

kokuam

New member
Похожая история и у меня, резюме - надо вешать 4.7uF а то и все 10uF меж EN and GND

Сначала часть моих devBoard ESP32 стабильно самонепрошивалась, пока я не особо задумываясь не повесил им 1uF между EN и GND. Это помогло.
Потом для работы со звуком понадобился ESP-ADF, а он требует древний ESP-IDF v3.3 и не собирается под Win. Зато прекрасно собирается под Linux. Компиляция на удаленном сервере из-за непредсказуемых задержек nfs/sshfs/etc оказалась мучительной. С Debian на VirtualBox при работе через shared folder задержек нет, есть особенности с тем что файлы, генерируемые guest-ом в shared folder оказываются в будущем, что не нравится make. USB 1.1 устройства довольно легко прокидывается на guest-а, Arduino прекрасно прошивается, а вот ESP32 опять заупрямился.
Кратко - надо вешать не 1uF ,а, например, 4.7uF. Это помогло и esptool.py (v2.8) теперь прошивает с первой "точки" без нажатий кнопок и напрямую из Win и через VirtualBox.
Я думаю, в моем случае ( 1uF & VirtualBox ) ESP32 не прошивались из-за того что между опусканием ID0 и подъёмом EN проходило около 0.2ms, в редких случаях этот зазор случайно каким-то образом становился 1.8ms и прошивка удавалась. Увеличение емкости до 4.7uF сделало этот зазор стабильно >7ms и прошивки стали стабильно удачными.

difference_w_notes.png
 

kokuam

New member
Никто не помнит с какого зачем ребята с Еспрессив придумали это безобразие из 2-х транзисторов? Ведь гораздо проще управлять пинами EN и IO0 напрямую, а при этой схеме невозможно опустить их одновременно в ноль и приходится выкручиваться с конденсатором чтобы EN медленнее поднимался получая эти миллисекунды состояния, когда оба пина в нуле.
 

Вложения

nikolz

Well-known member
Никто не помнит с какого зачем ребята с Еспрессив придумали это безобразие из 2-х транзисторов? Ведь гораздо проще управлять пинами EN и IO0 напрямую, а при этой схеме невозможно опустить их одновременно в ноль и приходится выкручиваться с конденсатором чтобы EN медленнее поднимался получая эти миллисекунды состояния, когда оба пина в нуле.
проблема в программе, а не в схеме.
управление EN осуществляется подачей сигналов DTR и RST их можно устанавливать и одновременно и в любой последовательности и с любой задержкой.
 

kokuam

New member
проблема в программе, а не в схеме.
управление EN осуществляется подачей сигналов DTR и RST их можно устанавливать и одновременно и в любой последовательности и с любой задержкой.
посмотрите пожалуйста еще раз на схему, с помощью неё нельзя одновременно установить низкий уровень одновременно на EN и IO0 и программно эта проблема не решается.esp32_sht.png
 

nikolz

Well-known member
посмотрите пожалуйста еще раз на схему, с помощью неё нельзя одновременно установить низкий уровень одновременно на EN и IO0 и программно эта проблема не решается.Посмотреть вложение 8174
очевидно не понял ваши рассуждения
Вы написали что надо сделать задержку больше.
причем же здесь одновременность сигналов?
У вас на графиках нет установки одновременного нуля на этих пинах.
 

nikolz

Well-known member
согласен, что состояния RTS=GIO0=0 нет.
схема вообще-то сделана для ESP8266 и там такое состояние не имеет смысла.
 

nikolz

Well-known member
Выделяю крупнее, это кусок из первого графика, видите одновременный низкий уровень на 1_EN & IO0 ?
Посмотреть вложение 8189
я уже это видел.
просто Вы это объяснили как одновременная установка.
Но в этот момент есть лишь переключение IO0.
Поэтому полагаю корректно сказать,
что нужна задержка переключения EN в High относительно момента переключения IO0 в Low.
Вот для создания такой задержки вы и ставите кондер.
 

pvvx

Активный участник сообщества
Никто не помнит с какого зачем ребята с Еспрессив придумали это безобразие из 2-х транзисторов?
Это был не "Еспрессив", а такой сайт с барашками на поле... (всё для барашков)
И придумали они это для того, что когда у USB-COM микросхемы выключено питание....
 

kokuam

New member
Это был не "Еспрессив", а такой сайт с барашками на поле... (всё для барашков)
И придумали они это для того, что когда у USB-COM микросхемы выключено питание....
1. Про барашков не в курсе
2. Про USB-COM микросхему с выключенным питанием тоже не понял, у меня они либо запитаны вместе с МК либо втыкаются на время прошивки в разъём.
 

pvvx

Активный участник сообщества
1. Про барашков не в курсе
2. Про USB-COM микросхему с выключенным питанием тоже не понял, у меня они либо запитаны вместе с МК либо втыкаются на время прошивки в разъём.
1 NodeMcu -- An open-source firmware based on ESP8266 wifi-soc.
2 На других платах питание от USB идет через диод и микросхема USB-COM не запитывается, опуская указанные выводы в "0". Ну а тут просто повторили, т.к. Nicolz эту схему везде нахваливали :)
 

pvvx

Активный участник сообщества
И ещё по п.п.1 - Если непонятно, могу выразиться с коммерческим уклоном - всё для "овечек" которых стригут... :)
и по п.п.2 - Это же Arduino и всё сделано по её концепции - "Делай как я" или "Копируй и не задумывайся".
 
Сверху Снизу