ESP-01 не запускает код после глубокого сна
При использовании функции глубокого сна на нескольких платах ESP-01 для правильного пробуждения плат требуется два сброса (независимо от того, выполняется ли сброс вручную путем подключения первого контакта или путем пайки провода для этого от прерывания). Платы автоматически просыпаются и печатают некоторый текст, но они не запускают свою прошивку/код.
#include <ESP8266WiFi.h>
void setup() {
Serial.begin(74880);
Serial.print("\n--------------НАЧИНАЕМ----------------\n");
//pinMode(LED_BUILTIN, OUTPUT); // Инициализируйте вывод LED_BUILDIN в качестве вывода
//digitalWrite(LED_BUILTIN, HIGH); // Выключите светодиод (gpio @ high= выкл.)
delay(500);
ESP.deepSleep(2000000, WAKE_RF_DEFAULT );
}
void loop() {
}
Я не смог просто разбудить плату и запустить код, как намеревается работать большинство примеров в Интернете, поэтому я полагаю, что проблема не в этом коде.
При успешном пробуждении последовательный вывод выглядит следующим образом:
ets Jan 8 2013,rst cause:2, boot mode:(3,6)
load 0x4010f000, len 3456, room 16
tail 0
chksum 0x84
csum 0x84
va5432625
~ld
--------------НАЧИНАЕМ---------------
После первого сброса плата действительно просыпается, но она не запускает свой код. Он печатает только это
ets Jan 8 2013,rst cause:2, boot mode:(3,6)
А потом висит там. После очередного сброса он успешно запускает свой код.
Эта проблема сохраняется на всех платах esp 01, которыми я владею, и я пробовал поднимать и опускать почти все рекомендуемые комбинации контактов. Строка, напечатанная в случаях fauly, действительно говорит, что она загружается в правильном режиме, но все равно код не запускается, ни мой, ни тот, который работает до моего
@sassoPera, 👍4
Обсуждение1 ответ
То, что описывает Сассо, - это классический зомби-режим глубокого сна. Здесь есть кто-то еще с платами ESP-01 с той же проблемой. Держу пари, что вы получили свои платы в блистерных упаковках из внутренних районов. Я не видел в своем местном компьютерном магазине никаких плат ESP-01 от Inland, только ESP-01, и эта отлично работает с глубоким сном. Я купил его только для теста. Я верю, что это флэш-чип, но мы еще не доказали этого. У меня есть много прошивок Winbond на случай, если я найду плату, которая превратится в зомби, и смогу доказать или опровергнуть мою теорию. У меня есть 8 различных типов плат и модулей, и все они правильно выходят из глубокого сна.
правка: Если картинка на Али верна, flash Puya не должна вызывать проблем, предполагая, что она настоящая, а не клон. В половине случаев фотографии являются лишь "репрезентативными примерами" того, что они отправляют. Ядро ESP8266 Arduino уже некоторое время поддерживает Puya. Кроме того, по трезвому размышлению, на внутренней упаковке, которую я купил, было написано ESP-01, и на самом деле это ESP-01 (ложная реклама). Я присмотрелся повнимательнее и не увидел подтягивающих резисторов.: - (
Если вы питаете его от этой платы USB-программатора, он должен работать. Если у вас есть отдельный источник питания 3,3 В, я бы с подозрением отнесся к нему. Резкие скачки тока при загрузке ESP приведут к тому, что многие источники коммутации ненадолго опустятся ниже 2 В, и ESP сойдет с ума. Без того, чтобы передо мной был зомби, я не в состоянии пойти намного дальше, так как мои зацепки не так длинны.
Большое вам спасибо за ответ, тот факт, что почти никто никогда не знал об этой проблеме в сети, сводил меня с ума. Я купил 8 плат ESP-01 с AliExpress из Китая, ни одна из них не работает после глубокого сна. Недавно я попытался заказать еще пару, чтобы узнать, была ли это проблема с оборудованием или нет. Дайте мне знать, если вам понадобится какая-либо информация о платах, которые я получил, @sassoPera
У вас есть ссылка на али или очень хорошая фотография верхней части платы, чтобы я мог прочитать идентификатор на флэш-чипе? Я подозреваю, что там написано T25S80 (предположительно, Bright Moon Semi), который вы также можете получить, выполнив Serial.println(НАПРИМЕР, getFlashChipId (), HEX); после того, как вы запустили последовательный порт. Я получаю 14605E с тем, что я *думаю*, является чипом Bright Moon, хотя идентификатор производителя не соответствует их данным., @Krazy OldGuy
https://www.aliexpress.com/item/32834727685.html?spm=a2g0s.9042311.0.0.4c334c4ddxlsF5 вот где я их взял, разновидность ESP-01S, @sassoPera
Есть новости об этом @KrazyOldGuy? У меня та же проблема с ESP12F с aliexpress. FlashChipId у меня 1660C4 (но я не могу посмотреть на флэш-чип, потому что на плате есть металлическая крышка)., @Janosch
- Как читать и записывать EEPROM в ESP8266
- Как сделать выводы Tx и Rx на ESP-8266-01 в выводах GPIO?
- Как навсегда изменить скорость передачи данных ESP8266 (12e)?
- Как заставить 5-вольтовое реле работать с NodeMCU
- Как исправить: Invalid conversion from 'const char*' to 'char*' [-fpermissive]
- ESP8266 не подключается к Wi-Fi
- AT-команда не отвечает на последовательный монитор
- Разница между этими двумя платами NodeMCU?
Пробовали ли вы ESP.DeepSleep(2000000); вместо ESP.deepSleepInstant(2000000, WAKE_RF_DEFAULT ); ?, @fabiuz7
@fabiuz7 да, я попробовал deepSleepInstant, чтобы проверить, не было ли у него каких-либо результатов, отличающихся от глубокого сна, безрезультатно, @sassoPera
Вы пользуетесь этой платой ESP-01? Похоже, она не обнажает контакт 16, необходимый для работы глубокого сна. https://www.mouser.it/ProductDetail/SparkFun/WRL-13678?qs=WyAARYrbSnZdmwzlRTs1Tw%3D%3D&vip=1&gclid=Cj0KCQjw3Nv3BRC8ARIsAPh8hgJygBYf_pJV_0gmP_mQjns1tsS1YFMyzQ1WgaypqsutPeeVbyJw27caAmcNEALw_wcB, @fabiuz7
Я протестировал ваш код на Wemos D1 mini, и он работает так, как ожидалось, @fabiuz7
@fabiuz7 pin16 на самом деле необходим, чтобы *пробудить* чип от глубокого сна. Я упомянул в своем посте, что у меня есть проблема при сбросе вручную, а также из-за прерывания. Например, если я не подключу pin16, мне придется дважды сбросить его вручную. Если я подключу этот pin16 к первому контакту, мне все равно придется один раз сбросить его вручную., @sassoPera
GPIO16 подает сигнал сброса после пробуждения. Сначала необходимо подключить вывод GPIO16. Это трудно сделать с модулем ESP-01/ESP-01S, так как GPIO-16 не открыт и не подключен к ПЕРВОМУ контакту на плате. Большой облом. Подключение GPIO16 к RST на модуле ESP-8266 со всеми открытыми контактами работает. Я также смог подключить GPIO16 на своем ESP01 для сброса, и он также работает., @EdHayes3
Да, извините, но я специально описал, что у меня было странное поведение даже при использовании контакта СБРОСА. Этот ответ по умолчанию "о, вы просто не знали, как припаять провод", - это то, что в то время заставило меня сойти с ума, потому что это повторяется как мантра даже для совершенно несвязанных вопросов., @sassoPera