Schüttelsensor anstatt Pushbutton für WakeUp

Hallo liebe Community,

ich bin jetzt schon eine Weile ein stiller Leser hier und mir ist die Idee mit einem Kollegen gekommen, anstatt einen Button zum Aufwachen aus dem Deepsleep ein Schüttelsensor zu nehmen.
Ich habe mal gegoogelt und unter anderem so etwas gefunden: " Vibration Sensor SW-18010P". Das scheint für mich am Ende auch nur ein „Hardware-Taster“ zu sein, der bei Vibration kurz durchschaltet.

Das müsste dann doch eigentlich klappen, wenn man die Box schüttelt, dass der Microcontroller dann aufwacht?

Moin,

ja, das klingt so, als ob das gehen müsste. Man muss das Modul halt die ganze Zeit mit Spannung versorgen.
Spontane Idee: Man hängt es bei z.B. diesem Board an den Ext-Connector dran, dort hat man ja Pins mit 3.3 V, GND und auch freie Pins des Port-Expanders (PE). Im Deepsleep müsste der PE einen Interrupt werfen, weil sich der Zustand auf einem Input-Pin geändert hat. Im Normalbetrieb würde nix passieren, da dem Pin keine Aktion zugewiesen ist.

Dazu muss man wissen: Beim PE sind alle Pins standardmäßig Input (Outputs muss man aktiv konfigurieren). Und bei allen Pins, die als Input konfiguriert sind, wirft der PE Interrupts, wenn sich der Zustand ändert. Ob der ESP32 schläft oder nicht, davon weiß der nix - spielt aber auch keine Rolle.

Ohne PE braucht’s einen dedizierten Pin zum Aufwachen, der RTC-fähig ist. Das muss man dann auch programmieren, dass der ESP32 dort auf Änderungen „hört“ im Deepsleep. Ist aber nur eine Zeile Code.

Ob das aber wirklich so klappt, muss man ausprobieren.

Ja das sollte funktionieren.
Der Sensor benötigt nur 3,3V und am D0 bekommst du ein Schaltsignal.
Einschalten sollte damit gehen. Ob du mit langem rütteln die Box auch ausschalten kannst sieht man in der Beschreibung nicht, aber bei ca 1€ würde ich das testen.

Ist auf jeden Fall eine spannende Frage, hehe.
Was man auch machen könnte auf o.g. Board: Einen Button_4 definieren, dem man als Kurzdrück-Aktion CMD_SLEEPMODE zuweist. Dort schließt man den Sensor dann an. Die einzige Frage ist, ob der Sensor schon bei kleineren Erschütterungen reagiert, so dass dir dann im Betrieb ständig der ESPuino ausgeht, obwohl du das eigentlich gar nicht willst. Wobei man die Sensitivität ja offenbar einstellen kann per Potentiometer

Das geht natürlich auch mit anderen Boards. Und man braucht, habe eben nochmal drüber nachgedacht, auch keine Code-Änderung. Man muss halt nur WAKEUP_BUTTON auf den Pin konfigurieren, an den man es anschließt. Und der Pin muss halt RTC-fähig sein (0, 4, 12, 13, 14, 15, 25, 26, 27, 32, 33, 34, 35, 36, 39).

@Splash_5 Ich würde sagen es gibt einen Plan :slight_smile:.

Die Empfindlichkeit ist einstellbar, es gibt sogar einen Analogausgang.
Machbar ist da einiges.
Den Link hatte ich dazugesetzt weil Schaltplan und Beispielprogramm dort zu finden ist.