ESP8266 - Bedienung per Taster möglich? (2 Zustände)

Hallo,
ich habe eine Frage zum ESP8266, und zwar zum ESP-12. Ist es möglich diesen mit einem Taster folgendermaßen zu bedienen:

  • Druck auf Taster -> ESP wacht aus dem DeepSleep auf
  • Druck auf Taster und gedrückt halten -> ESP wacht auf und eine Variable im Code wird bedient (in dem Fall um ihn in einen Konfigurationsmodus zu versetzen

Ist so etwas möglich?

Oder wäre so etwas nur mit einem Kippschalter (I O II) möglich und wenn ja wie?

Ggfs. indem man den Kippschalter + Diode einsetzt?

Der Sketch macht nix außer aufwachen (DeepSleep), i2c Sensor Messung, Daten per ESP-now versenden, Schlafen legen. Alles in 43ms.

Besten Dank und Gruß!

Hi

Was hindert Dich daran, nach dem Aufwachen nachzusehen, wie lange der Taster noch gedrückt wird?
Du musst ja nicht die ganze Zeit NICHTS machen - den I²C-Sensor kannst Du ja locker in der Zwischenzeit ausfragen und den Kram auch, wenn die Messung fertig ist, abschicken.
Ob Du danach auch noch in den Konfigurations-Modus wechselst, weil der Bediener auf dem Start-Taster eingeschlafen ist, liegt an Deinem Sketch.
Auch, was dann darin noch so Alles passiert.

MfG

Hallo Whopper,

google is your friend
ESP8266 Deep Sleep with Arduino IDE (NodeMCU) | Random Nerd Tutorials can also wake up,LOW to wake it up.

Ich habe für zwei Anwendungen nicht den deepsleep-mode sondern den "deadmode" genommen. Der braucht 0,000 nanoAmpere. Hä? Deadmode? Den kenne ich noch nicht! Doch! Du weißt nur noch nicht das er so heißt ;-)))

Ich meine damit über einen Taster überhaupt erst mit der Batterie verbinden. Das booten dauert ca. 1 Sekunde. Dann ist der ESP8266 hellwach. Ich habe damit zum Beispiel einen batteriebetriebenen RFID-Reader gebaut. RFID dranhalten Taster drücken 2 Sekunden später ist er ausgelesen und eine ESP-NOW-Nachricht verschickt.

Ob man den "Deadmode" verwenden kann hängt natürlich davon ab ob man irgendwelche im RAM gespeicherten Daten weiterverwenden will oder nicht.

Wenn man diese Daten in einem FRAM sichert könnte man auch die Daten wieder einlesen.
FRAM deshalb weil die FRAM-chips wirklich unendlich viele Schreibzyklen haben. Der interne flash-Speicher hat halt nur 100.000 Schreibzyklen oder sowas um den dreh herum. Die kann man wirklich nur zum Konfigrationsdaten abspeichern die nur alle paar Tage /Wochen geändert = neu gespeichert werden benutzen.

Noch eine Frage an die Experten: Der deepsleepmode hält ja die RTC am laufen. Ist der RTC-Speicher RAM oder auch flash?

viele Grüße

Stefan

StefanL38:
Noch eine Frage an die Experten: Der deepsleepmode hält ja die RTC am laufen. Ist der RTC-Speicher RAM oder auch flash?

Das ist RAM - ohne strom keine Daten.

Gruß Tommy

Guten morgen,danke schonmal für die schnellen Antworten!

postmaster-ino:
Was hindert Dich daran, nach dem Aufwachen nachzusehen, wie lange der Taster noch gedrückt wird?

Ich kenne bis jetzt nur die Möglichkeit RESET per Taster auf LOW zu ziehen, damit der ESP aus dem DeepSleep aufwacht. ABER: Solange ich den Taster gedrückt halte, wacht der ESP noch nicht auf. D.h. ich komme gar nicht bis in meinen Sketch, sondern der ESP wacht erst auf, wenn ich den Taster LOSLASSE.

Oder kann man den ESP auch anders aus dem DeepSleep wecken?

@StefanL38

Der "Deadmode" bzw. Power Down Mode wäre auch eine Option, mit der ich auch schon probiert habe. Aber wie könnte ich dies mit einem Taster und 2 (!) Zuständen realisieren?

Wie gesagt wäre ein Kippschalter eine Alternative. Wie würdet ihr dann die Beschaltung machen? Meine Idee war:

Außenpin 1 --> an VCC
Mittelpin an + der Batterie
Außenpin 2 --> an VCC und an GPIO02 (weil dieser beim start auf HIGH geschaltet werden kann)

Und dann eine Diode an die Leitung von Außenpin 1, damit der Strom nur in eine Richtung fließt.

Viele Grüße

Hallo,

10k PullUp an einen Input-PIN, Taster gegen GND. 10...100n Kondensator vom Taster/Input nach Reset.
10k und Kondensator evtl. etwas im Wert variieren, damit beim Drücken sicher der Reset ausgelöst wird, falls der interne PullUp des Reset zu hochohmig ist
Dann eben den Pinzustand nach der gewünschten Wartezeit einlesen, ob noch gedrückt.

Gruß aus Berlin
Michael

Tommy56:
Das ist RAM - ohne strom keine Daten.

Gruß Tommy

Hallo Thommy,
Wenn man den ESP8266 in den deepsleep-mode schickt bleibt auf der RTC Strom drauf.
Dann müsste es funktionieren.

Der ESP32 hat mehr Möglichkeiten aus dem deep-sleep aufzuwachen.

siehe zum Beispiel hier

Von EzSBC gibt es ein ESP32-board bei dem der Strom im deepsleep-mode wirklich auf 15µA runtergeht.
weil er einen besonders stromsparenden USB-Chip und LDO-Regler auf das Baord baut.
Bei anderen ist der Strom im deep-sleep höher.

https://www.ezsbc.com/index.php/wifi01-35.html

Preis und Portokosten OK obwohl es aus den USA kommt
schön schmal auf beiden Seiten des Breadboards noch eine Reihe frei

viele Grüße Stefan

  • Druck auf Taster -> ESP wacht aus dem DeepSleep auf
  • Druck auf Taster und gedrückt halten -> ESP wacht auf und eine Variable im Code wird bedient (in dem Fall um ihn in einen Konfigurationsmodus zu versetzen

Warum nicht einen Taster für das übliche Aufwachen/Reset
Und einen zweiten Taster für die Konfiguration?

Muss der Anwender halt zwei Taster drücken. Ich finde das Bedienkonzept für "Konfig-Button Drücken während Start-Vorgang" nicht so ungewöhnlich.