Forum: Mikrocontroller und Digitale Elektronik Reedkontakt als Reset für ESP8266


von big_brother (Gast)


Lesenswert?

Hallo Ihr,

ich probiere einen ESP8266 zu nutzen, um eine UDP Nachricht an meinen 
Raspberry Pi beim Öffnen und Schließen von Türen/Fenstern usw. zu 
senden.

Der ESP8266 hat die Eigenschaft, dass er im Deep Sleep Mode <10µA 
verbraucht und nur durch eine fallende Flanke von 3,3v auf 0v am Reset 
Pin geweckt werden kann.

Meine Idee daher: Reed-Schalter an die Türe, µC wecken beim Öffnen und 
Schließen, µC liest über weiteren Pin den Status vom Reed ein, schickt 
das ganze per UDP und geht wieder auf unbestimmte Zeit schlafen.

Die SW Seite bekomme ich hin - aber bei der Hardware stehe ich am 
Schlauch.

Hier stellen sich mir ein paar Fragen:

a) Wie gehe ich damit um, dass der Reed Schalter ja nur öffnet und nicht 
auf 0v zieht - muss der Input dann theoretisch ein Pulldown sein, oder? 
Wenn Schalter zu liegt 3,3v an (HIGH) und wenn offen zieht der Pulldown 
ihn runter und es liegt sauber 0v an (LOW). Bekomme aber nicht so 
richtig raus, ob Pulldown vom ESP8266 unterstützt wird.

b) Wie schaffe ich es, dass beim schließen erneut eine fallende Flanke 
kurzzeitig am Reset PIN anliegt? Ich schätze mal da brauche ich ein paar 
Logikgatter oder so?

Danke euch!
big_brother

von Carsten M. (carsten4)


Lesenswert?

Hi, soweit ich das bisher 8266er mit Tiefschlaf genutzt habe, machen die 
beim Aufwachen einen echten Reset. Du würdest nur mit einem REED Kontakt 
also einen Reset machen können, wenn z.B die Tür zu ist(oder auf). 
Allerdings bleibt dieser Pegel dann auch erhalten.

Evtl. ist es besser, wenn Du einen kleinen Mikrocontroller nimmst der 
nicht viel verbraucht und den zur Zustandsüberwachung der Tür einsetzt. 
Sensor dann nach Wahl Reed, IR Reflex (verbraucht evtl. schon wieder zu 
viel für Batterie), Hall Sensor.

Mit diesem überwachst Du dann Deinen Sensor, der ESP wird über einen 
Transistor stromlos geschaltet und erst wenn etwas zu übermitteln ist 
mit Spannung versorgt. Dann ein bisschen Warten (Wlan Login usw) und 
wenn er fertig ist über UART die Daten abschicken. Dann wieder einfach 
stromlos schalten.

Viele Grüße
Carsten

: Bearbeitet durch User
von oszi40 (Gast)


Lesenswert?

Tangierender Magnet am Reedkontakt? Wenn die Tür auf od. zu ist, wäre 
ein dauerhafter Zustand eingetreten. Deshalb sollte der Magnet besser 
kurz auslösen wenn er vorbeifahrt?

von Michael U. (amiga)


Angehängte Dateien:

Lesenswert?

Hallo,

da das letztens schonmal Thema war und wenn Du Logikgatter verwenden 
willst siehe Schaltung.
Kontakt und 10k Widerstand kannst Du auch tauschen, der 10k kann auch 
wesentlich hochohmiger sein um Strom zu sparen wenn der Kontakt 
geschlossen ist. Das RC-Glied am x86 Eingang ist nur geschätzt, wenn die 
Impulslänge nicht reicht eben ändern.

Gruß aus Berlin
Michael

von big_brother (Gast)


Lesenswert?

He Ihr,

danke für das Interesse und die Vorschläge.

Beim Stöbern und Nachdenken habe ich jetzt sogar eine (hoffentlich) noch 
bessere Version gefunden:

Der ESP8266 hat ein PW_EN/CHIP_ON IO Eingang, der auf High zum 
hochfahren gezogen werden muss. Da wir ja nicht regelmäßig pollen 
müssen, sondern nur wenn die Türe/Fenster aufgeht, nutzen wir das aus:

1. Türe geht auf, NC Reed Switch schließt und bestromt über Diode den 
CHIP_ON Eingang, ESP fährt hoch
2. ESP8266 hat eines der anderen GPIO (Hier mal GPIO_X) mit dem CHIP_ON 
kurzgeschlossen, sodass wir als erstes GPIO_X auf HIgh setzen, damit der 
Chip an bleibt, auch wenn der Reed wieder öffnet
3. Jetzt pollen wir regelmäßig ob die Türe offen ist und schicken den 
Status.
4. Sobald erkannt wurde, dass die Türe wieder zu ist, schicken wir das 
und ziehen GPIO_X auf LOW, der ESP8266 geht aus

Vorteil: Kein zusätzlicher IC/µC, nur paar Widerstände und eine Diode 
benötigt (Minimale Kosten), Idle-Strom geht gegen 0 (hier laut 
Datenblatt im Off mode <0,5µA!)

Nachteil: Nur anwendbar bei externem Trigger (Button, Reed, etc.), nicht 
zum regelmäßigen Polling von z.B. Temp-Sensoren nutzbar.

Was meint ihr?

PS: Was sind denn die besten (online?) Tools um Schaltbilder zu malen? 
Dann muss ich das nicht immer beschreiben.

von Kevin E. (lolman)


Angehängte Dateien:

Lesenswert?

Hallo,

ich bin leider nicht so der Elektronik-Profi. Verzeiht mir meine 
vermutlich "einfachen" Fragen.

Ich hätte eine Frage zu der Schaltung von oben (Sensor.png) von Michael 
U. (amiga). Ich verwende diese im Moment mit einem NC und NO 
Reedschalter. Wobei ich nur den NC Anschluss im Moment beschalten habe.
Wenn das Fenster geschlossen ist - der Magnet also am Reedkontakt 
anliegt - ist der Stromkreis offen. Sobald man das Fenster öffnet, ist 
der Stromkreis geschlossen - der kurze Impuls zum Reset-Pin wird 
geschickt und der ESP8266 startet neu.
Nun möchte ich den Zustand über einen GPIO-Pin des ESP auslesen 
(0=Fenster zu, 1=Fenster auf) und dann geht der Chip wieder in 
deep-sleep bis zum nächsten Reset.

1. Frage:
Kann ich den GPIO zum auslesen einfach zwischen dem Schalter und dem 
ersten XOR-Gatter dazwischen legen? Oder geht da etwas kaputt und muss 
da noch ein Widerstand oder ähnliches dazwischen?

2. Frage:
Wie müsste ich die Schaltung nun verändern, damit der "Impuls" zum Reset 
abgegeben wird und dann aber kein Strom mehr verbraucht wird? (Muss man 
dazu irgendwie den NO Anschluss des Reed-Kontakts mit einbinden?)

Ich habe aktuell die Widerstände und den Kondensator etwas verändert, 
damit zieht die Schaltung wenn der Kontakt oben geschlossen ist (also 
das Fenster offen) weniger Strom - aber das ist leider immer noch zu 
viel für einen batteriebetriebenen Sensor.
Kann man hier noch irgend ein Bauteil hinzufügen, damit man den 
Stromverbrauch während "Fenster auf" noch weiter minimieren oder ganz 
abstellen kann?

Meine Schaltung sieht wie im Anhang aus.

von Stefan F. (Gast)


Lesenswert?

Nimm einen CMOS Schmitt-Trigger, zum Beispiel CD4584:
1
                               ____      
2
      ____       470nF        |    |     
3
+ o----  ----+----||-----+----| ST |o------ Low=Reset
4
             |           |    |____|    
5
            |~|         |~|
6
      220k  | |         | | 220k
7
            |_|         |_|
8
             |           |
9
            GND         GND

Schließe den Reedkontakt so an, dass in Ruhelage kein Strom fließt.

Der Chip hat noch 5 weitere Schmitt-Trigger, deren Eingänge du nicht 
offen lassen solltest, damit die Stromaufnahme in Ruhelage wirklich auf 
annähernd Null absinkt.

Du kannst den GPIO Pin an jeden beliebigen Punkt legen, solange dort 
niemals mehr als 3,3V anliegen. Sicherheitshalber schadet es nicht, 
einen der 0och übrigen Schmitt-Trigger zwischenzuschalten:
1
 
2
                               ____
3
                              |    |
4
             +----------------| ST |o------ Low=Fenster offen
5
             |                |____|
6
             |                 ____      
7
      ____   |   470nF        |    |     
8
+ o----  ----+----||-----+----| ST |o------ Low=Reset
9
             |           |    |____|     
10
            |~|         |~|
11
      220k  | |         | | 220k
12
            |_|         |_|
13
             |           |
14
            GND         GND

Damit die Schaltung auf EMV nicht überempfinglich reagiert, würde ich 
noch einen Kondensator hinzufügen:
1
  
2
                               ____
3
     47nF                     |    |
4
+ o---||-----+----------------| ST |o------ Low=Fenster offen
5
             |                |____|
6
             |                 ____      
7
      ____   |   470nF        |    |     
8
+ o----  ----+----||-----+----| ST |o------ Low=Reset
9
             |           |    |____|     
10
            |~|         |~|
11
      220k  | |         | | 220k
12
            |_|         |_|
13
             |           |
14
            GND         GND

von Wolfgang (Gast)


Lesenswert?

big_brother schrieb:
> PS: Was sind denn die besten (online?) Tools um Schaltbilder zu malen?

Das beste Werkzeug nützt dir nichts, wenn du nicht damit umgehen kannst.
Hast du hier im Forum schon mal die Artikel der 
Kategorie:Schaltplaneditoren durchstöbert?

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.