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/src/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.