Forum: Mikrocontroller und Digitale Elektronik Input-PIN nach ESP-Start wechseln


von Frank P. (signmaxone)


Angehängte Dateien:

Lesenswert?

Ich bin auf der Suche nach einer Lösung für folgendes Szenario.

Ein ESP8266 (D1 Mini) soll bei Bewegung mit Hilfe eines Tilt-Sensors aus 
dem Deep-Sleep aufwachen. Wenn der Sensor weiterhin Impulse sendet, dann 
soll er die Impulse zählen und beim Erreichen eines bestimmten Wertes 
eine Aktion ausführen. Wenn der Sensor aber eine bestimmte Zeit inaktiv 
ist, dann soll der ESP wieder in den Deep-Sleep gehen.

Das Problem an der Sache ist, das der ESP ja durch eine Verbindung von 
GND zu RST aufgeweckt wird, aber der RST-Pin ja kein IO-Pin ist. Ich 
kann ihn im Arduiono-Sketch nicht ansprechen. Daher war mein Gedanke, 
das ich über einen Transistor den GND-Impuls des TILT-Sensors beim 
Anlegen einer Betriebspannung über einen Output-PIN auf einen anderen 
verfügbaren IO-Input PIN leite.

Wenn also der ESP in Betrieb ist, dann schaltet über eine 
Ausgangspannung der Transisor zu einem anderen PIN durch. Ist der ESP 
dagegen im Deep-Sleep, dann ist der Output-Pin LOW und der TILT-Sensor 
schaltet den GND wieder auf RST.

Zur Veranschaulichung habe ich mal eine Skizze mit einem Relais statt 
einem Transistor aufgemalt. So wie es von mir skizziert ist, klappt das 
ganze, allerdings stört mich eben das Relais, welches ich gern durch 
einen Transistor ersetzen möchte.

Hätte vielleicht jemand aus der Comnunity eine zündende Idee, wie man 
das ganze umsetzen könnte? Bin für jden Hinweis oder Tip dankbar.

von Waldfee (Gast)


Lesenswert?

Oi,

das ist doch viel zu kompliziert. Warum verbindest du den Pin nicht 
dauerhaft mit einem Eingang des ESP, setzt den Pin als Interrupt wakeup 
aus dem Deepsleep und fertig?

von Frank P. (signmaxone)


Lesenswert?

Aber muss ich beim ESP, um ihn aufwachen zu lassen, nicht zwingend GND 
auf RST schalten?

von Waldfee (Gast)


Lesenswert?

Ne, RST auf GND ist ein hardreset, den brauchste hier nicht. Das was du 
brauchst ist ein wakeup aus dem deepsleep.

Guckst du
https://randomnerdtutorials.com/esp32-external-wake-up-deep-sleep/

von Waldfee (Gast)


Lesenswert?

Sorry, das tut war fürn ESP32, sollte aber auch für den 8266 gehen

von Frank P. (signmaxone)


Lesenswert?

OK, ich verstehe, Da habe ich wohl was falsch verstanden. Danke für den 
Tip. Werde ich mich gleich mal belesen und austesten.

von Mario M. (thelonging)


Lesenswert?

Beim ESP8266 geht Wakeup vom Deep sleep nur über Reset. Man könnte die 
Umschaltung auf einen Input-Pin über Hardware machen. Ich würde das 
Problem aber mit z.B. einem Attiny lösen.

von Waldfee (Gast)


Lesenswert?

Viel Erfolg!

von Bauform B. (bauformb)


Angehängte Dateien:

Lesenswert?

Frank P. schrieb:
> Wenn also der ESP in Betrieb ist, dann schaltet über eine
> Ausgangspannung der Transisor zu einem anderen PIN durch. Ist der ESP
> dagegen im Deep-Sleep, dann ist der Output-Pin LOW und der TILT-Sensor
> schaltet den GND wieder auf RST.

Einfacher wäre es umgekehrt: wenn der ESP in Betrieb ist, schaltet er 
den Transistor ab (Output-Pin Low). Im Deep-Sleep wird der Pin High und 
der nächste Impuls vom Sensor wird zum RST durchgeschaltet.

R2, R3 und/oder R4 sind vielleicht sowieso schon auf dem D1-Mini bzw. 
interne Pull-Up. Oder R4 ist ganz überflüssig, weil der Sensor ein 
Logiksignal mit 0V und 3.3V liefert.

Wenn der Sensor 0V und 5V liefert, geht es nicht so einfach!

von Mario M. (thelonging)


Lesenswert?

Des Problem ist, dass der ESP im Reset bleibt, solange der Sensor 
durchgeschaltet ist. Dabei nimmt der ESP relativ viel Strom auf, was 
wiederum bei Batteriebetrieb schlecht ist. Da müsste eine 
Flankenerkennung vor den Reset-Anschluss und eine gewisse Totzeit wird 
auch gebraucht, dass der ESP in Ruhe hoch fahren kann.

von Frank P. (signmaxone)


Lesenswert?

Ich habe deine Schaltung soeben mal getestet und Sie funktioniert. Sie 
macht genau das, was Sie soll. Dafür ein herzliches Dankeschön. 
Bezüglich des Stromverbrauches werde ich mal einen Langzeittest machen. 
Da ja aber der ESP tatsächlich nur aufwacht, wenn Bewegung erkannt wird, 
sollte der Akku doch recht lange durchhalten.
Danke und bis demnächst.

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.