Forum: Mikrocontroller und Digitale Elektronik ESP8266 - Externer Reset-Impuls ohne TTL-Signal


von Sascha S. (bismosa)


Angehängte Dateien:

Lesenswert?

Hallo!

Ich bräuchte da mal etwas Hilfe und einen guten Tipp...

Ich habe mehrere Wassersensoren von hier (in der ESP07 Variante) 
nachgebaut:
http://esp8266-server.de/Wassermelder.html#ESP07

Diese laufen eigentlich fast perfekt. 3 Stück habe ich im Keller und 
einen in der Küche unter der Spülmaschine.
Da diese Melder nur aufwachen, wenn die Kontakte mit Wasser in Berührung 
kommen, bekommt man leider überhaupt nicht mit, wann die Batterien leer 
werden. Daher habe ich mir ein Zeitlimit gesetzt und alle 4 Wochen renne 
ich durch Haus und löse alle 1x aus.
Dabei habe ich nun festgestellt, dass die billigen Batteriehalter so 
stark korrodiert sind, das die Batterien keinen Kontakt mehr hatten (Bei 
2 Meldern). Also so bringt mir die beste Technik nichts ;)

Daher habe ich mir als Bastelprojekt (es ist nur Hobby) vorgenommen, 
diese ein wenig zu modifizieren. Mein ansinnten ist, den Deep Sleep 
gleichzeitig zu verwenden. Da dies nur max. 71 Min. geht wollte ich den 
mehrfach aufwachen lassen, bevor ich den Batteriestatus versende. Um 
dann zu erkennen, ob der Reset vom µc oder von extern kommt, habe ich 
die Detector-Pins zusätzlich zu einem GPIO geführt. Dann bekomme ich den 
Status mit.
Damit das nicht wieder nur ein Elektronikknäuel (wie die 
jetzigen...alles freiluftverdrahtet) wird, habe ich mir in Fritzig den 
Schaltplan und sogar eine Platine erstellt. Diese sind nun auch 
eingetroffen...
Die Software ist eigentlich auch schon fast fertig....
Im Anhang mal ein Bild der Platine...ist meine erste, die ich so 
erstellt habe und bin total begeistert davon :)

Nun zur eigentlichen Frage:
Die Schaltung für einen externen Reset habe ich hier gefunden und genau 
so übernommen:
https://stackoverflow.com/a/45605907

Nun habe ich versucht durch einen Wasserkontakt an den Pins den Reset 
auszulösen. Die funktioniert leider überhaupt nicht. Am Transistor kommt 
gar kein Impuls an.
Schließe ich meine 3V direkt an, kommt ein Impuls zu Stande und der ESP 
rebootet.
Dann habe ich mich ein wenig mit der (bis dahin noch nicht verstandenen) 
Reset-Schaltung auseinandergesetzt und diesen Beitrag gefunden:
https://electronics.stackexchange.com/questions/165615/generate-ttl-level-reset-pulse-from-rs-232-level-signal
Hier wird das Prinzip für mich etwas deutlicher. Da Wasser leider kein 
TTL-Impuls sondern eher eine Steigende Flanke erzeugt kommt es zu keinem 
Impuls hinter dem Kondensator.
Ich habe mal versucht das ganze in circuitlab zu simulieren. Dabei 
musste ich einen Widerstand vor dem Transistor einfügen und die Werte 
etwas verändern, damit man das besser sieht. (Ich habe das zum ersten 
mal benutzt...ich hoffe ihr erkennt was ich meine)

Was kann ich tun, um einen Resetimpuls auch bei Wasserkontakt zu 
erzeugen?

Eine Idee war mit einem LM393 diesen Impuls auszugeben. Ich habe hier 
noch ein Modul (TCRT5000 Lichtschranken-Modul) rumfliegen. Da habe ich 
die Lichtschranke und LEDs mal ausgelötet um zu sehen, welchen Strom die 
Schaltung benötigt. Ich bin auf knapp 1mA gekommen. Das ist für eine 
Batterieanwendung blöd.
Eine andere Idee ist es noch, das ich alle 30sek. den ESP aufwecke um zu 
prüfen, ob ein Signal (Wasser) am GPIO anliegt. Aber das kostet bestimmt 
auch viel Batterie.
Ich würde ja auch gerne meine Platinen verwenden ohne zu viel verändern 
zu müssen. Aber ich befürchte das wird dann wieder eine fliegende 
Schaltung.

Gruß
Bismosa

von Stefan F. (Gast)


Lesenswert?

Sascha S. schrieb:
> Eine andere Idee ist es noch, das ich alle 30sek. den ESP aufwecke um zu
> prüfen, ob ein Signal (Wasser) am GPIO anliegt. Aber das kostet bestimmt
> auch viel Batterie.

Ich denke, dass ist der vernünftigste Ansatz.

Wenn du den Controller per Software in den Sleep Modus versetzt, kannst 
du zugleich bestimmen, ob er beim nächsten Aufwachen mit oder ohne WLAN 
arbeiten soll. Wähle die Variante ohne WLAN. Das spart Strom und Zeit.

Wenn dein Programm dann merkt, dass es Nass ist, kann es immer noch 
erneut durchstarten (Sleep mit wenigen ms), dieses mal aber WLAN 
aktivieren, um den Alarm zu senden.

von Sascha S. (bismosa)


Lesenswert?

Hallo!

Danke für die ehrliche Meinung. Auch wenn es eigentlich nicht das ist, 
was ich hören wollte...
Ich werde wohl probieren müssen, wie lange die Batterie dann durchhält. 
Es hat den deutlichen Vorteil, das man ja nun mitbekommt, wenn die 
Batteriespannung zu gering wird.
Was mich stört...nach 30sek. ist ggf. schon viel Wasser 
geflossen...daher hätte ich den Alarm möglichst zeitnah.

Stefanus F. schrieb:
> Wenn du den Controller per Software in den Sleep Modus versetzt, kannst
> du zugleich bestimmen, ob er beim nächsten Aufwachen mit oder ohne WLAN
> arbeiten soll. Wähle die Variante ohne WLAN. Das spart Strom und Zeit.

Genau das habe ich bereits eingebaut. Das zwischendurch aufwachen ist 
ohne WLAN. Wird festgestellt, das WLAN benötigt wird, wird für 1ms der 
Reset erneut ausgelöst. Das klappt richtig gut!

Interessieren würde es mich trotzdem, wie es anders umsetzen könnte. Wie 
wäre es z.B. mit einer Blitzschaltung? Nur müsste man verhindern, das 
nach dem 1.Blitz ein weitere erfolgt...
http://www.netzmafia.de/skripten/hardware/LED-Blitzer/index.html

Gruß
Bismosa

von Lutz (Gast)


Lesenswert?

Rechte Winkel bei Leiterbahnen sind nicht so beliebt.
Bis auf den Sensor solltest du die ganze Elektronik in ein vernünftiges 
Gehäuse packen.
Du kannst doch den Reset source auslesen und brauchst dann keinen 
zusätzlichen pin.

von Sascha S. (bismosa)


Lesenswert?

Lutz schrieb:
> Rechte Winkel bei Leiterbahnen sind nicht so beliebt.

Sorry. Ist meine erste so erstellte Platine. Ich komme eigentlich aus 
dem Maschinenbau...da arbeitet man lieber mit rechten Winkeln. Werde das 
beim nächsten versuchen zu berücksichtigen.

> Bis auf den Sensor solltest du die ganze Elektronik in ein vernünftiges
> Gehäuse packen.

Ich habe bereits mehrere Sensoren genauso aufgebaut wie hier:
http://esp8266-server.de/Wassermelder.html#ESP07
Alles in einem Push-Button Gehäuse in fliegender Schaltung. Klappt 
ebenfalls...ist aber auch sehr empfindlich. Bei jedem Batteriewechsel 
bin ich am schwitzen ob alle Drähte noch halten :-)

Meine Ideen hinter der Platine sind mehrere (auch wenn einige nicht 
funktionieren...ist halt der erste Prototyp):
- 4x Stiftleiste an den ecken -> Sensoren
- Batterien direkt auf der Platine, damit die Stiftleisten auch an den 
Boden gedrückt werden
- Umschaltbar: Entweder die Variante wie oben, oder die Variante mit 
einem externen Reset (der ja leider nicht funktionieren will)
- Zusätzlich hatte ich die Möglichkeit eingebaut (umschaltbar) nur mit 
einer Batterie und einem Step-Up 3.3V die Schaltung zu betreiben. Der 
Versuch hat leider nicht geklappt, da der Step-Up nicht genug Strom 
geliefert hat um das WLAN zu betreiben.
- Den ESP-07 bequem anzulöten
- zusätzliche Stiftleisten (falls ich doch einen Kontakt mehr benötige)
- Jumper zum Programmieren und Stiftleiste für den Programmieradapter

> Du kannst doch den Reset source auslesen und brauchst dann keinen
> zusätzlichen pin.

Hmmm...vielleicht habe ich ja etwas übersehen? Der Reset wird ja über 
die Brücke zwischen Reset und GPIO16 ausgelöst. Genau dort habe ich ja 
auch die Schaltung vom externen Reset. Somit sollte die Reset source die 
gleiche sein?

Ich habe gestern auf dem Steckbrett mal mit der angesprochenen 
Blitz-Schaltung experimentiert...aber ich habe es nicht geschafft damit 
etwas "sinnvolles" also einen kurzen Reset auszulösen.
Ich glaube mir fehlt einfach noch die richtige Idee...

Gruß
Bismosa

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.