Rainer-Rebhan
Ein Rauchmelder mit Alarmierung als Email und Push-Nachricht
ESP8266 -12 mit Deep Sleep und Programmierung über OTA
Rauchmelder - Funktion
Rauchmelder sind inzwischen Pflicht und sollten in keinem Haushalt fehlen. Der Alarm erfolgt über einen intensiven, sehr lauten Ton, bei den Funk-Rauchmeldern an allen Geräten gleichzeitig. Was bei praktisch allen Rauchmelder fehlt, ist eine Benachrichtigung über die Alarmauslösung per Email und/oder einer direkte Pusch-Nachricht auf das Mobiltelefon. Diese Funktion kann - relativ einfach - bei den meisten Rauchmeldern nachgerüstet werden, da die erforderliche Elektronik sehr klein gebaut werden kann. Um es möglichst einfach zu realisieren sind 3 Punkte zu erst zu betrachten.
1. Im Rauchmelder seiner Wahl muß etwas Platz für die Zusatzelektronik zur Verfügung stehen
2. der Rauchmelder muß über eine Stromversorgung mittels 2x AA Batterien verfügen
3. mehrere Rauchmelder sollten sich über Funk vernetzen lassen
Rauchmelder die eine 9V Block-Batterie verwenden sind eher ungeeignet. Ein weiterer wichtiger Punkt ist aus meiner Sicht, dass die interne Elektronik des Melders nicht angefasst oder für die eigenen Elektronik nicht angezapft werden sollte. Ich habe für meinen Umbau den Funk-Rauchmelder Model CC-80 verwendet. Das Gerät detektiert Rauch und Temperatur. Diese Geräte sind vernetzbar d.h. der Alarm eines Rauchmelders wird auf alle vorhandenen Gerät des selben Typs übertragen und diese lösen dann selbst den Alarmton aus. Für den hier beschriebenen Umbau bedeutet das, es muß nur ein Gerät mit der eigenen Elektronik umgerüstet werden.
Die Elekronik und der ESP8266-12
Die Elektronik besteht eine 2 Teilen - ein Mikrofonverstärker und dem ESP8266-12 als Wlan-Verbindung. Der Mikrofonverstärker detektiert den Alarmton des eingebauten Tongebers. Dieser Ton ist sehr laut: > 80 dB(A). Es wird deshalb nur ein einfacher Mic.-Verstärker benötigt. Die Wlan-Verbindung wird über den ESP8266 aufgebaut. Die Email bzw. die Pushnachricht erzeugt ein kleines PHP-Programm auf einem ext. Server. (Diese Programme kann ich gerne z.V. stellen - bitte Email-Anfrage am mich). Der Stromverbrauch des ESP-12 und der Zusatz-Elektronik muß so niedrig wie nur möglich sein. Um das zu erreichen wird der ESP8266 in den Tielfschlaf (Deep Sleep) versetzt. Auch der Mic-Verstärker ist deshalb sehr hochohmig aufgebaut. Das Aufwachen aus dem Deep-Sleep wird durch einen Reset des 8266 erzwungen. Sobald das Mikrofon den Alarm-Ton aufnimmt erfolgt dieser Reset über den Mic.-Verstärker. Fehlalarme über das Mikrofon wird es nicht geben - es ist zu unempfindlich für normale Geräusche. Das Schaltbild des Mic.-Verstärker mit dem ESP-12
Besonderheiten des ESP8266-12
Für Software-Änderungen im ESP-12 ergeben sich nun einige besondere Probleme, die sich mit einem kleinen Entwicklungsboard (z.B. WeMos D1 & Mini) für den ESP so nicht stellen würde. Auf Grund der geringst möglichen Stromaufnahme (im Deep Sleep < 40uA) muß der ESP ohne äußere Beschaltung funktionieren. Das ist mit 2 x 10k Ohm Widerständen (CH_PD + GPIO15) am ESP-12 möglich. Wegen des geringen Platzangebotes im Gehäuse des Rauchmelders muß der ESP12 möglichst flach sein und direkt angeschlossen werden. Der Anschluß von RX und TX und die gesamte Programmierumschaltung mit dem USB-Chip ist also nicht vorhanden, eine Programmierung auf diese Weise nicht möglich. Aber es gibt eine elegante Methode, den ESP über OTA also - over the air - zu programmieren. Dies ist einfacher realisierbar wie zunächst vermutet.
Die OTA Programmierung
Bekannt sind 3 Möglichkeiten den ESP8266 über seinen Wlan-Anschluß neu zu programmieren.
Arduino OTA - neben der Arduino IDE muß noch eine Python Installation mit der V 2.7 erfolgen
WEB-Interface - ein HTTP-Server läd einen fertig kompilierten *.bin File
HTTP-Server - Im Code wird der Pfad zum *.bin File hinterlegt, der ESP kann sich selber Flashen - für autom. Firmwareupdates interessant.
In jedem Fall muß der ESP zuerst mit einem OTA-Programm geflasht werden. Ich habe mich bei der Rauchmelder-Zusatzelektronik für die HTTP-Web-Interface-Methode entschieden. Der Vorteil ist, es muß keinerlei Zusatzprogramm installiert werden.
Wie bringe ich nun das OTA-Proramm auf den ESP?
Für diesen ersten OTA-Flash verwende ich einen ESP-07 bis -12 Universal-Programmer der den ESP-Chip direkt mit Kontakt-Nadel aufnehmen kann. Das OTA-Programm verwendet, ergänzt um die eigenen Rauchmelder-Programmzeilen, das OTA-Basic-Prog: WebUpdater.ino. Das OTA-Programm stellt nach dem Start und der erfolgreichen Wlan-Anmeldung eine kleine Webseite im Browser dar. Mit dieser Seite (bzw. den 2 Buttons auf dieser Seite) wird einmal das neu kompilierte Prog. (als xxx.bin - Datei) ausgewählt und anschliessend die Übertragung und Neuprogrammierung des ESP angestoßen. Hier nochmals die Schritte zur OTA-Programmierung des ESP8266 mit dem HTTP-WebUpdater:
- einen ESP-07 oder ESP-12 an eine Programmiermöglichkeit (z.B. mittels Universal-Programmer) über USB anschliessen
- das OTA-Programm (+ das eigene Programm) auf den ESP flashen
- den ESP mit dem Wlan verbinden und im Browser die ESP-IP-Adr. /update aufrufen (z.B. 192.168.4.16/update ) = es wird eine Webseite mit 2 Button gezeigt
- nun kann die USB Verbindung zum Programmierer getrennt, der ESP-12 alleine werden, er muß jedoch in Betrieb und am Wlan sein
- nun wird das komplette Programm z.B. geändert und neu kompiliert
- Die .bin - Datei des Programms finden sie i.d.R. unter C:\Users\MyName\AppData\Local\Temp\build.........tmp\...datei-name.ino.bin
- Über die Browser-Web-Seite das bin-Prog auswählen und den Update-Button anklicken
- das Prog. wird zum ESP geladen, neu geflasht und dann neu gestartet
Der Rauchmelder mit ESP-Zusatzhardware
Den mit dem OTA-Programm + dem eigenen Prog. geflashten ESP kann man z.B. auf diesen Adapter auflöten. Hier sind die beiden Widerstände (für GPIO15 und CH_PD) bereits vorhanden. Den Mikrofonverstärker habe ich auf einer kleinen Lochrasterplatte aufgebaut und dann über dünne Litzen mit dem ESP-Adapter verbunden. Es werden nur 4 Leitungen benötigt. Zusätzlich habe ich noch 2 GPIO verwendet. Diese haben folgende Funktion:
1. GPIO 14 (Output) = Reset-Sperre des ESP8266
--> sperret nach dem Aufwachen des ESP die Reset-Funktion bis zur Absenden der EMail bzw. Push-Nachricht.
2. GPIO 5 (Input) = Jumper zum Ausschalten des Deep Sleep Mode
--> der Jumper setzt den Eingang GPIO 5 auf 0V und verhindert im Programm den Depp Sleep - nur so ist eine wiederholte Programmierung über OTA möglich. Ist der ESP im Tiefschlaf muß zur Neuprogrammierung der Jumper gesetzt werden. Nach einem Reset geht der ESP nicht in den Tiefschlaf und kann so neu programmiert werden.
Hier das Rauchmelder-OTA-Programm zum Download als Zip
Die Funktionsweise des Programms:
- ein Rauchmelder-Alarm-Ton - erzeugt einen Rest des ESP - der ESP erwacht aus dem Deep Sleep
- die Wlan-Verbindung wird aufgebaut und setzt HTTP-Requests für EMail und Pushnachricht ab
- der Nachricht wird die Batterie-Spannung, die Reset-Anzahl und die Wlan-Signalstärke mitgegeben
- der ESP geht nach ca. 20 Sek. wieder in den Deep Sleep
Testen sie nun die gesamte Elekronik mit und ohne Deep-Sleep-Jumper ausgiebig und passen die Software über OTA an ihren Rauchmelder an.
Die Zusatzhardware kann in den Rauchmelder eingebaut werden. Der Mikrofonverstärker sollte in den Nähe des Tongebers angeordnet werden. Beim CC80 gibt es einen kleinen Raum direkt neben dem Tongeber. Der ESP-12 mit Adapter (Rückseite bitte isolieren) wird einfach oben darauf gelegt. Mit dem Test-Knopf des Rauchmelders kann die Funktion der Wlan-Alarmierung abschließend gestestet werden.