Aufwecken nur über Drehencoder

Mein Espuino läuft nun endlich….
Bin jetzt noch dran einige Kleinigkeiten nach meinen Eünschen zu konfigurieren, dabei hätte ich noch eine kleine Frage:
Derzeit lässt sich der Espuino über alle Tasten aufwecken…
(Fünf Buttons, Drehencoder)

Im Forum habe ich nun folgenden Satz gefunden:


Alle Buttons (und RFID.IRQ), die am Port-Expander angeschlossen sind, können den ESPuino aufwecken. Hinweis: Nur alle oder keiner; selektiv funktioniert nicht.

Die 5Buttons sollten ja am Portexpander hängen…?
Der Button vom Drehencoder hängt da nicht dran?

Wie würden sich denn alle 5 Buttons zum Aufwecken deaktivieren lassen und der Espuino nur noch per Drehencoder starten?

Konnte dazu leider nichts genaues finden…

Die Buttons hängen (zB bei der mini4L) alle am PE. Beim verwendeten PE (PCA9555) ist es so, dass standardmäßig alle Anschlüsse als Eingänge konfiguriert sind (das macht der PE selbst; da hat ESPuino nix mit zu tun). Alle Anschlüsse, die als Eingang konfiguriert sind, werden hinsichtlich Pegeländerungen überwacht. Und gibt es einen solchen, dann wird ein Interrupt geworfen. Das ist letztlich auch nur ein kurzzeitiges Signal von HI zu LOW, welches vom ESP32 ausgewertet wird an einem GPIO, der dafür konfiguriert wurde, dass er den ESP32 aufwecken kann.
Dem PCA9555 kann man nicht sagen, dass nur zB Eingang 1, 2, 3 einen IRQ werfen kann. Aber es gibt einen Workaround: Man kann Anschlüsse als Ausgänge umkonfigurieren, um somit den gleichen Effekt zu erzeugen.
Tatsächlich gibt es einen Fall, in dem ich exakt das auch so mache:

Da ist auch ein Link dabei, in dem beschrieben steht, warum ich das mache. Du müsstest, wenn du das auch nutzen wolltest, z.B. die Zeilen 273 bis 279 duplizieren und alle HP_DETECT durch den Eingang ersetzen, den du zum Aufwecken blockieren willst (z.B. NEXT_BUTTON). Bei mehreren Eingängen machst du das entsprechend mehrfach.

Beim nächsten Start wird der PE wieder umkonfiguriert, so dass zum normalen Betrieb die Anschlüsse entsprechend wieder Eingänge sind.

Hinweis: Die Anschlüsse des PE sind auf der mini4L nicht mit Reihen-Widerständen gegen Überstrom geschützt. Sollte jmd. auf die Idee kommen, auf einen PE-Anschluss, der als Ausgang konfiguriert ist und standardmäßig intern dann auf GND schaltet, 3.3 V zu geben, dann ist das wie ein Kurzschluss, der mind. den Eingang des PE zerstören wird. Bei den Buttons sollte das eigentlich nicht passieren, da hier immer gegen GND gearbeitet wird. Aber ich erwähne es dennoch zur Vollständigkeit. Umgekehrt gilt natürlich das Gleiche, wenn man einen PE-Ausgang auf HI schaltet (das passiert nicht von selbst - das muss man per i2c-Anweisung wollen) und dann extern GND anlegt.
Also kurz gesagt: Bei Eingängen ist alles safe. Bei Ausgängen sollte man sich, außer man baut selbst Reihen-Widerstände zur Strombegrenzung ein, der Problematik bewusst sein.

1 „Gefällt mir“

Grandios, funktioniert perfekt

@biologist
Hierzu noch mal eine kurze Frage:

Wenn ich das genau so umkonfiguriere, weil ich nur über den Encoder aufwecken möchte, ist es dann problematisch, wenn ich an einem Button (Btn4) einen TouchButton angebracht habe, der über Ext6 dauerhaft mit 3,3V versorgt wird?