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.
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.