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

Нужна помощь ESP12E не до конца возвращается из DeepSleep

MaDerer

New member
Здравствуйте!

В прошлом году я слегка подсел на ESP8266 и решил я себе сделать погодную станцию на NodeMCU. В итоге получилось такое:

Участники торжества: NodeMCU Amica, сенсор BME280, экран SSD1306, вольтметр ADS1115, модуль зарядки TP4056, аккумулятор LiitoKala 18650 3400 мАч и солнечная баттарея 5В 1,5W для небольшого увеличения выживаемости.

Скетч собирал с миру по нитке и подгонял под себя. Он выполняет следующий алгоритм:
- проверяем подключение SSD1306. Если отключен - сообщение на экран и уходим в глубокий сон на 1 минуту, по пробуждении начинаем с начала;
- раз SSD1306 на месте, подключаемся к роутеру по WiFi по уже заданным ssid и pass;
- собираем данные температуры, влажности, давления, вольтажа аккумулятора;
- подключаемся и отправляем данные на narodmon.ru;
- получаем ответ от сайта и все данные с ответом выводим на экран;
- уходим в глубокий сон на 6 минут.

После окончательной сборки (то одно доходило, то другое) метеостанция проработала 10 дней. Тогда я попытался оптимизировать скетч, уменьшил или убрал задержки, убрал вывод в Serial и в итоге срок работы увеличился до 25 дней.

В надежде на уменьшение энергопотребления я заказал ESP-12E и плату адаптер под нее с уже подведенными CH_PC и GPIO15. Спаял, поставил на макетку, поморгал светодиодами - красота!

Решил я попробовать начать собирать свою метеостанцию на макетке по частям. Установил экран, подключил, залил скетч (только поменял в Arduino IDE устройство с NodeMCU 1.0 на Generic ESP8266 Module) и увидел на экране "BME280 not found" (и это правильно, ведь я его еще не подключил). Поменял время DeepSleep на 10 сек и... ничего. Светодиод моргнул, но экран не обновился.

В общем я начал разбираться по частям. Сделал вывод в Serial. Прошерстил форумы, откуда подчерпнул только то, что либо надо дополнять развязку, либо проблемы с питанием, либо мне не повезло и мне досталась бракованная/хитрокитайская партия (заказывал 2 шт.)

В результате я создал скетч:
Код:
const int sleepTime = 5;

void setup() {
  Serial.begin(74880);
  Serial.println("А? Что? Я не сплю!!!");
  delay(2000);
  ESP.deepSleep(sleepTime * 1e6);
}

void loop() {
}
Делал подключение по следующим схемам (фото взял с просторов интернета и отредактировал под свои варианты):
После подачи питания на выходе:

ets Jan 8 2013,rst cause:1, boot mode:(3,0)

load 0x4010f000, len 1384, room 16
tain 8
chksum 0x2d
csum 0x2d
v0fd86a07
~ld
А? Что? Я не сплю!!!

ets Jan 8 2013,rst cause:2, boot mode:(3,6)



Если же сделать сброс:

ets Jan 8 2013,rst cause:2, boot mode:(3,6)

load 0x4010f000, len 1384, room 16
tail 8
chksum 0x2d
csum 0x2d
v0fd86a07
~ld
А? Что? Я не сплю!!!

ets Jan 8 2013,rst cause:2, boot mode:(3,6)



И всё, больше ни чего не происходит.

Прошу указать направление изгиба моих рук или причину, почему мои лыжи не едут :)

P.S. Пользуюсь только Arduino IDE. С осциллографом не дружу и не имею.
P.S.S. Поиском пользовался, не подходит. Единственное, что я не пробовал, это посадить конденсатор в 1000 мКф на входные контакты питания.
 

nikolz

Well-known member
если я правильно понял то не выходи из сна
сообщение появляется лишь один раз
 

MaDerer

New member
Должно вывести сообщение в Serial, уйти в глубокий сон, выйти из сна через n секунд, вывести сообщение в Serial .... т.д. до бесконечности, т.к. выход из глубокого сна = нажатие кнопки RESET.

На NodeMCU v.3 всё так и происходит с метеостанцией. Если не найден BME280, выводится сообщение на экран, спим минуту и запускаемся заново. Если всё в порядке, то делаем все свои дела и спим 6 мин.

Running a Standalone ESP 8266-12 - and Returning from Deep Sleep

сообщение появляется лишь один раз
Да, всё правильно.

Покопался я еще на форумах иностранских, и появлялись сообщения, что у некоторый так же вели себя несколько штук из (к примеру) партии.
 

nikolz

Well-known member
Должно вывести сообщение в Serial, уйти в глубокий сон, выйти из сна через n секунд, вывести сообщение в Serial .... т.д. до бесконечности, т.к. выход из глубокого сна = нажатие кнопки RESET.

На NodeMCU v.3 всё так и происходит с метеостанцией. Если не найден BME280, выводится сообщение на экран, спим минуту и запускаемся заново. Если всё в порядке, то делаем все свои дела и спим 6 мин.

Running a Standalone ESP 8266-12 - and Returning from Deep Sleep


Да, всё правильно.

Покопался я еще на форумах иностранских, и появлялись сообщения, что у некоторый так же вели себя несколько штук из (к примеру) партии.
попробуйте сделать так
отключите GPIO16 от RST и покажите картинку терминала
да и скажите какая у вас сейчас схема.
какие измерительные приборы есть у вас
 

MaDerer

New member
попробуйте сделать так
отключите GPIO16 от RST и покажите картинку терминала
да и скажите какая у вас сейчас схема.
какие измерительные приборы есть у вас
Из измерительных только мультиметр MASTECH MAS830L.

Разорвал цепь GPIO16 от RST, подал питание и получил:
Код:
ets Jan  8 2013,rst cause:2, boot mode:(3,0)

load 0x4010f000, len 1384, room 16
tail 8
chksum 0x2d
csum 0x2d
v0fd86a07
~ld
А? Что? Я не сплю!!!

ets Jan  8 2013,rst cause:5, boot mode:(3,0)

ets_main.c
После замыкания GPIO16 от RST добавилось:
Код:
ets Jan  8 2013,rst cause:5, boot mode:(3,6)
и затихло.

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

nikolz

Well-known member
Из измерительных только мультиметр MASTECH MAS830L.

Разорвал цепь GPIO16 от RST, подал питание и получил:
Код:
ets Jan  8 2013,rst cause:2, boot mode:(3,0)

load 0x4010f000, len 1384, room 16
tail 8
chksum 0x2d
csum 0x2d
v0fd86a07
~ld
А? Что? Я не сплю!!!

ets Jan  8 2013,rst cause:5, boot mode:(3,0)

ets_main.c
После замыкания GPIO16 от RST добавилось:
Код:
ets Jan  8 2013,rst cause:5, boot mode:(3,6)
и затихло.

В данный момент соединено по первой схеме без дополнительной обвязки, но и при любой другой всё происходит точно так-же (я уже проводил такой эксперимент ранее).
рекомендую сделать соединение GPIO16 с RST через диод шоттки анодом к RST. Если его нет то поставьте резистор 1 ком
и повторите эксперимент
--------------
предположу что-то со скриптом или библиотекой не так.
я делаю все на СИ проблем никогда не было со сном.
---------------
 

MaDerer

New member
рекомендую сделать соединение GPIO16 с RST через диод шоттки анодом к RST. Если его нет то поставьте резистор 1 ком
и повторите эксперимент
--------------
предположу что-то со скриптом или библиотекой не так.
---------------
Хорошо, во вторник-среду попробую, особенно с диодом, хотя отмечу, что я ставил между GPIO16 с RST сопротивление в 470 Ом - не помогло.

По поводу скрипта или библиотеки... Я залил скетч на NodeMCU v3 (а в нем установлен то же ESP-12e) и всё работает (ну с некоторыми мелкими условностями вроде того, что либо выводимый скетчем текст не читается при мониторинге с TX-RX; либо текст есть, но не читабельна системная информация при мониторинге с USB).
Причем на одну и туже плату я через USB заливал как "NodeMCU 1.0", а по TX-RX как "Generic ESP8266 Module" - разницы в работоспособности нет.

Заметил ещё один нюанс. Если на NodeMCU при замкнутых D0 (GPIO16) и RST его не возможно вывести в режим прошивки даже принудительно, то на вот этих моих ESP-12e спокойно переводится во flash-режим без размыкания контактов.
 

nikolz

Well-known member
Хорошо, во вторник-среду попробую, особенно с диодом, хотя отмечу, что я ставил между GPIO16 с RST сопротивление в 470 Ом - не помогло.

По поводу скрипта или библиотеки... Я залил скетч на NodeMCU v3 (а в нем установлен то же ESP-12e) и всё работает (ну с некоторыми мелкими условностями вроде того, что либо выводимый скетчем текст не читается при мониторинге с TX-RX; либо текст есть, но не читабельна системная информация при мониторинге с USB).
Причем на одну и туже плату я через USB заливал как "NodeMCU 1.0", а по TX-RX как "Generic ESP8266 Module" - разницы в работоспособности нет.

Заметил ещё один нюанс. Если на NodeMCU при замкнутых D0 (GPIO16) и RST его не возможно вывести в режим прошивки даже принудительно, то на вот этих моих ESP-12e спокойно переводится во flash-режим без размыкания контактов.
На nodemcu есть автомат для управления режимом на двух транзисторах а у вас его нет на чистой ESP
возможно и не работает толком так как каких-то подтяжек нет
У меня на ESP-12 все работает без проблем
Я отказался от платы которую вы поставили
просто ставлю четыре резистора SMD с обратной стороны ESP-12 и делаю плоский кабель для адаптера
и проблем никаких нет
 

Сергей_Ф

Moderator
Команда форума
@MaDerer вы для начала убедитесь, что gpio16 от esp действительно припаян и никуда не коротит. Проверьте исправность резисторов и потенциал на RST и gpio15 тоже.
В идеале вообще снять ESP и проверить работу с 5 резисторами.
 
Последнее редактирование:

nikolz

Well-known member
@MaDerer вы для начала убедитесь, что gpio16 от esp действительно припаян и никуда не коротит. Проверьте исправность резисторов и потенциал на RST и gpio15 тоже.
В идеале вообще снять ESP и проверить работу с 5 резисторами.
именно для этого я и просил отпаять GPIO16
если GPIO16 не соединен с RST то получим сообщение
ets_main.c
что и получено автором топика
 

MaDerer

New member
@MaDerer вы для начала убедитесь, что gpio16 от esp действительно припаян и никуда не коротит. Проверьте исправность резисторов и потенциал на RST и gpio15 тоже.
В идеале вообще снять ESP и проверить работу с 5 резисторами.
С 5-ю и даже только с 2-мя установленными на плате ESP работает, код выполняется (проверял скетчем с морганием двумя светодиодами). Проблема именно с режимом глубокого сна.

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

Так же вчера заказал на Али ESP-12S, ESP-12F и WeeMos D1. Если хотя бы две из них отработают нормально, значит с этими не повезло. Но ждать месяц-полтора, а разобраться хочется сейчас.
 

nikolz

Well-known member
С 5-ю и даже только с 2-мя установленными на плате ESP работает, код выполняется (проверял скетчем с морганием двумя светодиодами). Проблема именно с режимом глубокого сна.

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

Так же вчера заказал на Али ESP-12S, ESP-12F и WeeMos D1. Если хотя бы две из них отработают нормально, значит с этими не повезло. Но ждать месяц-полтора, а разобраться хочется сейчас.
полагаю, что модуль исправный
у меня с десяток ESp-12 и все без проблем работают
Для начала посмотрите напряжение на пинах
поставьте кнопку на reset для сброса
проверьте куда запаяли EN
 

MaDerer

New member
Для начала посмотрите напряжение на пинах
поставьте кнопку на reset для сброса
проверьте куда запаяли EN
На каких конкретно пинах, извините? (с) Слонёнок
С кнопкой - её еще найти надо, по этому пока что просто замыканием RST на GRD или на крышку (на неё GRD подведено, как оказалось).
EN через 10к резистор подведено к VCC, GPIO15 через 10к к GRD.

@MaDerer я предложил проверить именно сон на голом esp с 5-ю резисторами. Без подложки.
Ну тут, боюсь, проблема. Припаять то я припаял, а вот отпаять - не с моими руками, не под это они у меня заточены. Но проверил сопротивления на подложке - оба 10к и подведены правильно. При напряжении на VCC-GRD 3,26В, на RST-GND 3,22, на RST-GPIO16 0В. Это при только 2-х резисторах на подложке.
 

nikolz

Well-known member
На каких конкретно пинах, извините? (с) Слонёнок
Ну тут, боюсь, проблема. Припаять то я припаял, а вот отпаять - не с моими руками, не под это они у меня заточены. Но проверил сопротивления на подложке - оба 10к и подведены правильно. При напряжении на VCC-GRD 3,26В, на RST-GND 3,22, на RST-GPIO16 0В. Это при только 2-х резисторах на подложке.
При таком уровне дружбы с паяльником, рекомендовал бы Вам использовать лишь Wemos D1 mini и не заморачиваться с модулями ESP-12 и подобными.
 

MaDerer

New member
При таком уровне дружбы с паяльником, рекомендовал бы Вам использовать лишь Wemos D1 mini и не заморачиваться с модулями ESP-12 и подобными.
Ну, я бы и не заморачивался бы, если бы не призрачная надежда, что голая ESP-12 с минимумом обвязки будет меньше потреблять. В принципе Wemos D1 mini и заказал для сравнения с NodeMCU

Конечно, моя схема далека от идеала, особенно той частью, где ADS1115 замеряет напряжение батареи, от которой сам же и питается, но это не точно, т.к. при отключении ADS1115 от схемы уменьшение потребления незначительное.

Но это уже уход в сторону. Подпаял я диод шоттки SR360. Теперь всё выглядит как на третьей схеме, только вместо резистора 470 Ом этот диод. Ничего не поменялось. Я даже 3 резистора подпаял к плате, вместо разведения на монтажной доске.
 

MaDerer

New member
Детальный обзор моего уровня пайки на первом фото в топике под спойлером. Ну и вот:
GPIO2 и GPIO15, если что, не замыкаются, как может показаться.
 

Вложения

nikolz

Well-known member
Ну, я бы и не заморачивался бы, если бы не призрачная надежда, что голая ESP-12 с минимумом обвязки будет меньше потреблять. В принципе Wemos D1 mini и заказал для сравнения с NodeMCU

Конечно, моя схема далека от идеала, особенно той частью, где ADS1115 замеряет напряжение батареи, от которой сам же и питается, но это не точно, т.к. при отключении ADS1115 от схемы уменьшение потребления незначительное.

Но это уже уход в сторону. Подпаял я диод шоттки SR360. Теперь всё выглядит как на третьей схеме, только вместо резистора 470 Ом этот диод. Ничего не поменялось. Я даже 3 резистора подпаял к плате, вместо разведения на монтажной доске.
на wemos надо будет отключить чип адаптера и получится тоже самое
отключить проще чем собрать на ESP12
 
Сверху Снизу