Kapazitiver Touch Schalter statt physischer Schalter

Um möglichst wenige mechanische Teile am Gehäuse zu haben, habe ich vor, die u.a. kapazitiven Schalter einzusetzen:
Touchschalter
Wenn diese direkt mit z.b. Button 1 verbunden werden, bedeutet das im Ergebnis „langer Tastendruck“ . Daher habe ich das Signal mittel CD4049 invertiert und prinzipiel funktioniert das jetzt wie ein kuzer Tatsendruck. Schaltung:
ESPuino Touch CD4049 (2022mar03).pdf (210,2 KB)
Hurra … aber nur bis ich den ESPuino mittels Drehcoder-Schalter in Deepsleep schicke. Den erreicht er letztlich nie, da der ESPuino zwar runter fährt, aber danach sofort wieder neu startet. Und hier bin ich mit meinem Latein am Ende, wie ich diese Problem lösen könnte.
Daher meine Anfrage. Jede Idee ist willkommen.
LG Hansjörg

Was ist denn deine Definition von WAKEUP_BUTTON?

Ich würde mal versuchen einen PullUp-Widerstand (10k) dranzuhängen.

Sind das diese TTP223 Sensoren? Wenn ja, wie sind die denn aktuell „kodiert“ , also sind die Lötbrücken A / B verbunden?

1 „Gefällt mir“

Das ist die Standardeinstellung, von mir nichts geändert.

BlueMail for Android herunterladen

Das geht über einen Port-Expander. Also der Interrupt wird von einem Port-Expander geworfen, da sich die Zustand eines Inputs ändert.

hängt der Touch an Dauer 3,3V (ebenso der Inverter)?

Eigentlich sollst du den Inverter nicht benötigen, sondern das Signal sollte so schon passen…

Denke ich auch. Deshalb hatte ich nach der Kodierung gefragt:

A B Einstellung
0 0 Taster (TTL-Pegel HIGH) (Standard)
0 1 Schalter (TTL-Pegel HIGH)
1 0 Taster (TTL-Pegel LOW)
1 1 Schalter (TTL-Pegel LOW)

In der Standard-ESPuino-Konfig müsste ja „Taster / LOW“ gefragt sein, oder? Also die Lötbrücke „A“ geschlossen.

ESPuino arbeitet mit „low active“, das ist korrekt.
Der Port-Expander reagiert allerdings auf Zustandsänderungen und wirft dann Interrupts. Also das kann auch anders rum sein. Also wie gesagt: Wenn wir der Default-Config folgen, dann würde ich da einen PullUp hinmachen.

Also gemäß der angehängten Grafik oben hängt es an EXT.2. Das ist tatsächlich ein SW3.3; also ein Dauer-3.3.
@hnymphius Gehe mal ab EXT.6 oder EXT.8. Ggf. erledigt sich das Problem damit schon.

Ansonsten bitte bisschen besser beschreiben, welche Platine verwendet wird. Weil das weiß ansonsten nur ich. Und merken kann ich es mir auch nur deswegen, weil du als einziger User deine Platine abgeholt hast hier, hehe.

sind nicht die PullUps im PE aktiv?

und nein das Signal passt nicht in der Default Config, Fehler von mir :slight_smile: aber mit Brücke auf A sollte es pasen

1 „Gefällt mir“

Doch, die sind immer aktiv, wenn ein Eingang als Input konfiguriert wird. Möglicherweise bringt ein PullUp auch nix, muss man testen. Die internen PullUps sind aber „weak“.

Ich muss zugeben, dass ich hätte den oberen Teil wieder anpassen müssen, als ich im Anschluss (im unteren Teil) entdeckt habe, dass hier tatsächlich SW3.3 verwendet wird. Das Wissen hatte ich oben noch nicht :slight_smile:

Also ich vermute stark, dass das eigentliche Problem SW3.3 ist. Weil das Problem hatte ich bei der Kopfhörerplatine exakt auch so. D.h. der Eingang ist HIGH, dann überführst du den ESP32 in den Deepsleep und damit fällt auch die Spannung an der Peripherie, weil sie ja ausgeschaltet wird. Der Eingang ist dann nicht mehr HIGH und der PE löst einen Interrupt aus und der ESP32 wacht direkt wieder auf. Mangels wirklicher Alternativen habe ich bei der Kopfhörerplatine ja den zugehörigen Eingang vor dem Schlafen zum Ausgang umkonfiguriert.

1 „Gefällt mir“

HI,

erst einmal vielen Dank für die Hinweise und Tipps. Leider musste ich andere Arbeiten dazwischen schieben und kam erst jetzt wieder dazu, die Versuche fortzusetzen.
Also ich habe eine 10kOhm Widerstand von Plus zum Pin 2 vom CD4049 (Inverter) eingebaut, aber das Verhalten ändert sich dadurch nicht. D.h. der Espuino startet von selbst nach Abschaltung.

…???

Hier stehe ich nun und es sieht fast danach aus, dass ich die Idee mit dem Touchschalter aufgeben muss…

Schau mal, dass du dein Board nicht an SW3.3 sondern an 3.3 hängst. Ich vermute, dass das dein Problem löst.

Torsten,

ja SW3.3 ist das auslösende Problem. Habe es jetzt auf Ext.Pin 6 (3.3) gehängt und es läuft, ESP geht schlafen und wacht nicht von selbst auf. Top, so kann ich weiter machen. Danke für die Lösung.

Ich hänge mich mal hier dran :smiling_face:

Ich habe das gleiche Problem erfahren, habe aber einen anderen Grund.

Ich wollte gerne die Touch Button an den geschalteten 3.3V hängen, damit der ESPuino beim rum tragen auch aus bleibt (Touch Button sind rechts und links angebracht). Dadurch geht er nicht mehr in den Deep sleep, bzw. bleibt nicht dort.

Also Touch Buttons wieder an 3.3V Dauer. Aber dann habe ich mein erstes Problem wieder. ESPuino ist in Deepsleep und wird bewegt oder angefasst und wacht ungewollt auf….

Zur Info. Ich habe noch zwei physische Buttons, daher müssen die Touch ihn nicht wecken können.

Ich nutze die mini 4L Platine LiFePo4.

Hat jemand eine Idee wie ich das lösen könnte ?!

Also Touch Buttons die nicht den Deep Sleep beenden ?!

Vielen Dank ! :smiling_face:

Habe nochmal weiter überlegt so gut ich konnte :smiling_face: könnte ich die beiden Touch Signale auf GPIO 5 und 32 an EXT hängen. Dann wären sie vom Port Expander weg und würden die Box nicht mehr aufwecken. Oder spricht etwas gegen die beiden GPIOs für Taster?

Vielen Dank

Spricht aus meiner Sicht erstmal nix dagegen.
Irgendwas war jedoch mit GPIO5 mal komisch. Ich meine ich hätte das mal genutzt, um bei der Kopfhörerplatine zu erkennen, ob ob was eingesteckt ist (damals haben wir noch keinen Port-Expander genutzt). Und das hat irgendwie nicht gescheit funktioniert.
Findet man bestimmt hier im Forum was zu. @compactflash kann sich vielleicht erinnern - ist glaube ich in das gleiche Problem mal gelaufen, oder?

Aber kannst es ja einfach mal testen.

Hört sich gut an. Dann teste das mal aus.

Vielen Dank

grafik

Quelle: ESP32 Pinout Reference: Which GPIO pins should you use? | Random Nerd Tutorials

Hey, ich hab leider den Überblick verloren. Wenn ich rein die TTP223 Sensoren nutzen möchte: Wie muss ich die dann anschließen und konfigurieren? Idealerweise anhand der mini-Platine (aktuelle Version).