esp 01s после пробуждения зависает.

Старик Похабыч

★★★★★★★
14 Авг 2019
4,277
1,303
Москва
Ну я тогда даже не знаю что. Тоже подумал про длину импульса, но раз не оно.
Я про скорость порта не просто так сказал, это штатная скорость вывода для 8266, которая выдает читаемую информацию в монитор порта. Или там и на этой скорости совсем мусор ?
 

Sergey_C

✩✩✩✩✩✩✩
23 Фев 2024
11
3
@Старик Похабыч,
Спасибо за совет установить скорость порта в 74880. Теперь увидел, что при попытке пробуждения и зависании в порт выводится сообщение

ets Jan 8 2013,rst cause:5, boot mode: (3,6)
ets_main.c


Осталось только разобраться, что оно означает.
При повторном сбросе и успешном старте выводится уже больше информации
00:16:07.373 -> ets Jan 8 2013,rst cause:2, boot mode: (3,6)
00:16:07.373 ->
00:16:07.373 -> load 0x4010f000, len 3424, room 16
00:16:07.373 -> tail 0
00:16:07.373 -> chksum 0x2e
00:16:07.373 -> load 0x3fff20b8, len 40, room 8
00:16:07.373 -> tail 0
00:16:07.373 -> chksum 0x2b
00:16:07.373 -> csum 0x2b
 
Изменено:

Bruzzer

★★★✩✩✩✩
23 Май 2020
501
149
@Sergey_C,
Попробуйте временно добавить на плату электролит конденсатор по питанию 3,3 v
 

Sergey_C

✩✩✩✩✩✩✩
23 Фев 2024
11
3
@Bruzzer,
Спасибо за совет. Добавлял электролит на 470мкФ и керамику на 1 мкФ. Не помогло
 

S_Sergey_G

✩✩✩✩✩✩✩
23 Фев 2021
165
3
@Sergey_C, Вы знаете у меня последнее время один раз передавал показания и всё. Хотя каждые 5 мин. светодиод моргал. После рессета опять один раз передача. Я измерений в этот раз не производил, но сделал так: arduino 1.8.13 и выбрал самую старую версию в менеджере плат для ESP. Всё заработало как надо.
 

Sergey_C

✩✩✩✩✩✩✩
23 Фев 2024
11
3
@S_Sergey_G,
Я похоже решил проблему, но через костыли.
Длительность импульса или другие характеристики не причем. Подключал пин reset к D0 заведомо рабочей NodeMCU, точно также зависал, потребление 30мА.
Обратил внимание, что модуль отлично просыпается если подать на reset или ch-rd дважды низкий уровень. Собрал схему с двумя NE555, резисторами и конденсаторами. От импульса на пробуждение запускается первый таймер и выдает первый импульс на reset, от него запускается второй таймер и выдает второй импульс на ch-rd.
Модуль простоял всю ночь с пробуждением через 15 секунд - не завис ни разу.
Но выросло потребление схемы на 2,5мА и время на пробуждение увеличилось около 10 секунд.
Самое сложное подобрать резисторы и конденсаторы чтобы сделать нужную длительность и интервал импульсов, так как нет осцилографа. Обязательно первый импульс пробуждения должен завершиться до того как появится второй.
Если кто-то подскажет как собрать схему попроще, которая сгенирирует два последовательных импульса с небольшим интервалом от одного входящего импульса буду благодарен, так как потребление таймерами 2,5мА многовато.
 

Sergey_C

✩✩✩✩✩✩✩
23 Фев 2024
11
3
Нашел на GitHub нормальное решение проблемы.
Проблема как оказалось известная и встречается часто, причем на самых разных модулях. У меня также отказался нормально работать Wemos D1 mini. Пишут, что проблема в неоригинальных чипах, используемых в модулях. Как одно из решений предлагается то же, что сделал я, то есть подача двойного импульса для пробуждения.
Но оказывается есть и более удобные варианты решения.
Помогает отказ от использования оригинальной функции deepsleep.
Есть несколько вариантов
Мне помог второй вариант. Обе платы ESP-01s и Wemos D1 перестали зависать после пробуждения.
При использовании первого варианта обе платы просыпались сразу же после засыпания.