ESPuino schaltet sich von selbst ein?!

Hallo,

ich habe diese Version gebaut :

Mit 6 Tasten (vor, zurück, Pause/Play, Lauter, Leiser) und nur den Taster vom Rotary Switch.
Jetzt kommt es manchmal vor, dass sich der ESPuino selbstständig einschaltet? Ich weiß nicht warum und wodurch. Tasten werden auf alle Fälle nicht gedrückt. RFID Tags sind alle weit weg.
Lässt sich aus einem LOG-File herausfinden, wodurch er/es/sie aufgeweckt wurde :slight_smile:

Bin echt ratlos, was mich stützig macht, dort steht „Neue Lautstärke empfangen via Queue: 5“, was hat das auf sich?

Hier der Inhalt vom LOG :

Maximale Inaktivitätszeit wurde aus NVS geladen: 5
RFID-Tags koennen jetzt gescannt werden…
Port-expander gefunden
Interrupt für Port-Expander aktiviert
Zyklus für Batteriemessung fuer Neopixel-Anzeige aus NVS geladen: 10 Minuten
Unterer Spannungslevel (Batterie) fuer Neopixel-Anzeige aus NVS geladen: 3.00 V
Oberer Spannungslevel (Batterie) fuer Neopixel-Anzeige aus NVS geladen: 4.20 V
Spannungslevel (Batterie) fuer Niedrig-Warnung via Neopixel aus NVS geladen: 3.40 V
Spannungslevel (Batterie) fuer Kritisch-Warnung via Neopixel aus NVS geladen: 3.10 V
Lautstärke vor dem letzten Shutdown wird wiederhergestellt. Dies überschreibt die Einstellung der initialen Lautstärke aus der GUI.
Initiale Lautstärke wurde aus NVS geladen: 5
Maximale Lautstärke für Lautsprecher wurde aus NVS geladen: 21
Lautsprecher eingeschaltet
Initiale LED-Helligkeit wurde aus NVS geladen: 16
LED-Helligkeit für Nachtmodus wurde aus NVS geladen: 2
Versuche SD-Karte wird im SD_MMC-Modus (1 Bit) zu mounten…
SD-Kartengröße / freier Speicherplatz: 15193 MB / 12217 MB
FTP-User wurde aus NVS geladen: esp32
FTP-Passwort wurde aus NVS geladen: esp32
Hostname aus NVS geladen: espuino
RFID-Tags koennen jetzt gescannt werden…
Aktuelle IP: 192.168.1.19
Synchronisiere Uhrzeit via NTP…
Freier Heap-Speicher nach Setup-Routine: 109344
PSRAM: 4194204 bytes
Flash-size: 16777216 bytes
RSSI: -48 dBm
Neue Lautstärke empfangen via Queue: 5
Letzte RFID konnte nicht aus NVS geladen werden
Aktuelle Batteriespannung: 3.46 V
no cover image for SD-card audio
build filelist finished: 73 ms
no cover image for SD-card audio
build filelist finished: 73 ms
no cover image for SD-card audio
Keine Bootschleife erkannt. Wunderbar :slight_smile:

An meinem Schreibtisch habe ich u.a. die Lötstation und auch die Hot Plate. Ganz selten kommt es mal vor, dass ein ich glaube Ausschaltvorgang den ESPuino zum Einschalten bringt. Gut möglich, dass die Anschlussleitungen hier irgendwie als Antenne wirken. Im Port-Expander sind ganz schwache (was auch immer das heißt) PullUp-Widerstände und da könnte man ggf. an jeden Button einen 100k PullUp zusätzlich hängen. Es erhöht halt nur den Strom, der im Deepsleep fließt.

Danke für den Hinweis, werd ich mal ausprobieren.

Eine andere Frage, aktuell kann jede Taste den ESP aufwecken.
Lässt sich das auf nur eine Taste ändern? (hätte noch einen freien Taster frei).
So wie ich das verstanden habe müsste das ein Pin nicht auf dem PortExpander sein.
Welcher Pin/GPIO wäre denn da noch frei, bzw. verwendbar.
Mit
#define WAKEUP_BUTTON 36
lässt sich das doch konfigurieren, oder?

Ich brauch eigentlich den Rotary Encoder nicht, also den könnte ich locker opfern - falls das hilft.

Jein. Also per Default sind alle Eingänge des Port-Expanders (PCA9555) Inputs. Und alles, was als Input konfiguriert ist, wird ausgewertet. D.h. ist der ESP im Deepsleep und es ändert sich auf einem Input-Pin des PCA der Level von HIGH nach LOW, dann wirft der PCA einen Interrupt und der ESP wacht auf.

Man hat jetzt zwei Möglichkeiten:
a) Man hängt den WAKEUP-BUTTON auf einen anderen GPIO, an dem dann ein Button direkt hängt. Mit 36 geht das jedoch nicht bei deinem Board (oder zumindest mal ist es nicht empfehlenswert), weil der wird auch als Interrupt-Pin für den PCA verwendet. Den PCA ohne Interrupt-Auswertung zu verwenden würde ich nicht machen, weil das recht langsam ist. Ne Möglichkeit wäre auf das neuere mini zu wechseln, da hier die Ansteuerung des Mosfets hier altermativ durch den Port-Expander erfolgen kann. Dadurch wird GPIO32 frei, den man dann für WakeUp konfigurieren könnte.
b) Man konfiguriert den PCA vor dem Deepsleep um. D.h. man konfiguriert Kanäle, auf die er nicht reagieren soll, auf Output um. Tatsächlich mache ich das sogar schon für HP_DETECT und GPIO_PA_EN: ESPuino/Port.cpp at 42d6ca80f9cd8099c8b90de3548e13ed5a17b416 · biologist79/ESPuino · GitHub. Ich denke wenn du hier deine Buttons dazunimmst, mit denen nicht geweckt werden soll, dann müsste das klappen.