Touch Pin wakeup mit Latch

OP #7168272
Lesenswert?

Hallo Community,

ich bin relativ neu im Elektrohobby und versuche mich gerade an einem 
kapazitiven Sensor. Dieser soll mit Batterie laufen und deshalb mit 
DeepSleep arbeiten. Ich habe schon einige Beispiele umgesetzt um mich 
reinzuarbeiten,
allerdings bin ich mir nicht sicher ob meine Anforderungen an den Sensor 
logisch wirklich umsetzbar sind.
Ich arbeite mit dem Entwicklerboard ESP32, hier frage ich zur Zeit mit 
der Funktion:

esp_sleep_enable_touchpad_wakeup();

einen Pin ab, sobald dieser berührt wird wacht der Microcontroller auf.
Funktioniert soweit, ist nur noch nicht ganz was ich haben möchte.
Mein Andwendungsfall wäre ein kapazitiver Bettsensor mit Batterie, 
sprich:
-Sensor wird ausgelöst, der Microcontroller funkt  Daten zur Auswertung, 
danach geht er schlafen.
Jetzt sollte der Microcontroller allerdings wieder genau dann aufwachen, 
wenn der Touchpin von 1 auf 0 wechselt. Hier finde ich keine passende 
Funktion.

Der ESP32 hat ja einen Speicherbereich, der Variablen auch im DeepSleep 
abspeichert(RTC-Memory). Hier könnte ich ja eine Variable abspeichern um 
dann in einer If-Abfrage den letzten Zustand festzustellen und dann 
entsprechend reagieren.

Beispielsweise:
Wenn sich der Touchpin im Zustand ändert und die Variable ist 0:
Variable ist 1, Microcontroller geht schlafen
Wenn sich der Touchpin im Zustand ändert und die Variable ist 1:
Variable ist 0, Microcontroller geht schlafen


Allerdings finde ich keine Funktion, welche dann auf jegliche 
Zustandsänderung am Pin reagiert, denn 
esp_sleep_enable_touchpad_wakeup();
reagiert leider nur auf die Änderung von 0 auf 1.

Lässt sich so etwas mit dem ESP32 realisieren, oder bin ich da auf dem 
Holzweg?
Vielen Dank schonmal für die Hilfe.
#7168295
Lesenswert?

Eventuell brauchst Du dafür einen externen Touchcontroller wie z.B. 
Microchip MTCH101/102/105 oder so, der Touch in ein digitales Signal 
umsetzt, das man dann zum Aufwachen benutzen kann. Notfalls wird das 
Signal einmal direkt und einmal in invertierter Form (via 74AHC1G04) zum 
ESP geleitet, um beide Flanken zu haben.

fchk
OP #7169094
Lesenswert?

Frank K. schrieb:
> Eventuell brauchst Du dafür einen externen Touchcontroller wie
> z.B.
> Microchip MTCH101/102/105 oder so, der Touch in ein digitales Signal
> umsetzt, das man dann zum Aufwachen benutzen kann. Notfalls wird das
> Signal einmal direkt und einmal in invertierter Form (via 74AHC1G04) zum
> ESP geleitet, um beide Flanken zu haben.
>
> fchk

Vielen Dank für den Hinweis, der MTCH101 scheint für mich nach Studieren 
des Datenblattes sehr interessant, auch für zukünftige Projekte.
Ich habe heute nochmal ein bisschen programmiert, und da ich erstmal 
ohne weitere Bauteile auskommen möchte, habe ich jetzt einfach eine 
zeitliche Abfrage eingebaut. Sobald der Microcontroller die Änderung von 
0 auf 1 am Touchpin erkennt setze ich einen Merker im RTC-Memory. 
Solange dieser Merker gesetzt ist und der Touchpin noch 1 ist wird der 
Sensor für 10 Min. schlafen geschickt. Nach 10 Min wacht der 
Microcontroller automatisch auf und frägt beide Werte erneut ab. Somit 
kann ich alle 10 Min. an eine Zentrale senden dass da noch jemand auf 
der Couch sitzt/im Bett schläft und dementsprechend Automationen laufen 
lassen. Stellt der Microcontroller fest dass nach 10 Min. der Touchpin 0 
ist wird er in den Tiefschlaf versetzt und wacht erst bei erneuter 
Änderung von 0 auf 1 auf. Somit wäre der Microcontroller tagsüber 
komplett im DeepSleep und wacht nachts nur alle 10 Min. auf um kurz den 
Status zu checken.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren