Forum: Mikrocontroller und Digitale Elektronik Touch Pin wakeup mit Latch


von Andi B. (testobjekt)


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.

von Frank K. (fchk)


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

von Peter D. (peda)


Lesenswert?

Andi B. schrieb:
> ich bin relativ neu im Elektrohobby

Dann würde ich schrittweise vorgehen:
- erstmal ein/aus einer LED mit mechanischer Taste.
- wenn das geht, Entprellen und Einlesen der Taste mit LED umschalten.
- wenn das geht, mit Deep Slepp.
- wenn das geht, Entprellen und Einlesen Touch.
- wenn das geht, mit Deep sleep.

von Andi B. (testobjekt)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.