Hallo zusammen.
Ich baue derzeit ein kleines WLAN-Gerät (Fernbedienung), welches solange im Deep-Sleep-Mode verharren soll, bis der am ESP8266 (ESP-01-Board) angeschlossene Taster gedrückt wird.
Dadurch wird ein RESET getätigt und der Controller stellt den Webserver zur Verfügung, welcher eine Webseite für 30 Sekunden im Heimnetz "online" stellt. Sind die 30 Sekunden verstrichen, soll der Controller wieder in den DeepSleep gehen, bis das nächste Mal der Taster gedrückt wird.
Soweit funktioniert alles schon so wie es soll, allerdings ist der Strom bei 6 V ext. Stromversorgung im Deep-Sleep-Mode extrem hoch! (8 mA).
Wie kann das sein? Habe ich einen Fehler im Code, der den Controller veranlasst, nicht in den besagten Deep-Sleep zu gehen?
Da mein Projekt ein tragbares Handgerät mit Batteriebetrieb werden soll, kommt es auf jedes noch so kleine Strömchen an, um eine möglichst lange Batterielaufzeit zu erzielen.
Ich hoffe ihr könnt mir helfen.
Der Code ist auf das Nötigste gekürzt (die defines sind hier ja nicht relevant):
const char* ssid = "Hans WLAN";
const char* password = "123456789";
String HTMLpage = "";
IPAddress ip(192,168,178,90); // IP-Adresse des ESP8266
IPAddress gateway(192,168,178,1); // Gateway (z.B. Router / FritzBox)
IPAddress subnet(255,255,255,0);
void setup()
{
WiFi.begin(ssid, password);
WiFi.hostname("Hans ESP");
WiFi.config(ip, gateway, subnet);
while (WiFi.status() != WL_CONNECTED) // Überprüfen, ob WLAN verbunden...
{
delay(500);
}
if (MDNS.begin("hans", WiFi.localIP()))
{
}
delay(500);
Webserver.on("/", []()
{
Webserver.send(200, "text/html", HTMLpage);
});
delay(100);
Webserver.begin();
delay(100);
for(int i=0; i<30000; i++)
{
Webserver.handleClient(); // stelle für 30 Sek. den Clients die Seite zur Verfügung,..
delay(1);
}
ESP.deepSleep(0); // danach gehe für undefinierte Zeit in den Deep-Sleep.
}
void loop()
{
}
Ich hoffe auf Eure Hilfe!
Gruß + Danke