dummies
 

Suchen und Finden

Titel

Autor/Verlag

Inhaltsverzeichnis

Nur ebooks mit Firmenlizenz anzeigen:

 

Das ESP8266-Projektbuch - Heimautomation mit dem WLAN-Chip

Martin Mohr

 

Verlag entwickler.press, 2016

ISBN 9783868026931 , 152 Seiten

Format PDF, ePUB

Kopierschutz Wasserzeichen

Geräte

19,99 EUR

Für Firmen: Nutzung über Internet und Intranet (ab 2 Exemplaren) freigegeben

Derzeit können über den Shop maximal 500 Exemplare bestellt werden. Benötigen Sie mehr Exemplare, nehmen Sie bitte Kontakt mit uns auf.


 

2Projekte

2.1 Briefkastensensor

Schwierigkeitsgrad:

Zeitaufwand: 3–4 Stunden

Preisklasse: etwa 18–21 Euro

Zutaten:

2 ESP8266 Version 12

1 PIR Motion Detection HC-SR501

1 Servomotor SG90 Mini 9g

1 USB-nach-Seriell-Adapter

1 USB-Netzteil

etwas Sperrholz

1 Prise Farbe

nach Belieben Kleinteile (mechanisch/elektronisch)

optionale Komponenten: Solar Powerbank 5000 mAh

2.1.1 Einleitung

Ärgert es Sie auch, dass Sie mehrfach am Tag zum Briefkasten laufen, weil Sie einen wichtigen Brief erwarten, aber der Postbote immer noch nicht da war? Damit ist jetzt Schluss: Mit unserem Briefkastensensor wissen wir immer Bescheid, was in unserem Real-Mail-Posteingang (Briefkasten) vor sich geht.

2.1.2 Funktionsbeschreibung

Wie soll unser Briefkastensensor im Detail funktionieren? Wir verwenden zwei ESP8266-Module, um unser Problem zu lösen. Der erste ESP8266, nennen wir ihn ab jetzt „Postbox-ESP“, wird im Briefkasten residieren und die meiste Zeit seines Lebens im Tiefschlafmodus verbringen. Erweckt wird er über einen Infrarotbewegungssensor. Sobald sich etwas in unserem Briefkasten bewegt, wird der Postbox-ESP wach. Er verbindet sich sofort mit dem WLAN und schickt eine Nachricht an den zweiten ESP8266, nennen wir ihn ab jetzt „Flag-ESP“. Nachdem der Postbox-ESP seine Nachricht versendet hat, legt er sich wieder schlafen und wartet auf die nächste Aktivierung des Bewegungssensors.

Der Postbox-ESP kann über eine Solar Powerbank mit Spannung versorgt werden. Sie können aber auch normale Batterien verwenden. Die Idee hinter der Solar Powerbank ist, dass unser Sensor, sobald er installiert wurde, theoretisch ewig arbeiten kann. Mit Batterien sollte der Sensor aber auch locker ein Jahr durchhalten können. Es kommt selbstverständlich darauf an, wie oft er ausgelöst wird. Optimal wäre natürlich ein Briefkasten mit Netzspannung.

Bekommt der Flag-ESP eine Nachricht, hebt er die Fahne und wir wissen: Es hat sich etwas in unserem Briefkasten getan. Den Flag-ESP sollte man an einer Stelle in der Wohnung positionieren, die man auch gut sieht. Um die Flagge wieder in den Normalzustand zu bekommen, verwenden wir den Resettaster, den wir sowieso verbauen müssen, um den ESP zwischen Flash- und Normalmodus hin und her zu schalten. Der Flag-ESP arbeitet quasi als Server, das bedeutet, er muss immer online sein. Es ist also kein Energiesparmodus möglich. Wir müssen ihn wohl oder übel über ein Steckernetzteil betreiben. USB-Netzteile bieten sich dafür aktuell an, da sie günstig zu bekommen sind und ihre Leistung meistens ausreichend ist. Nachdem wir nun wissen, wie unser Aufbau funktionieren soll, schauen wir uns die zwei Schaltpläne der ESPs im Detail an.

2.1.3 Schaltpläne

Flag-ESP

Abbildung 2.1 zeigt uns den Schaltplan der Flag-ESP-Platine. Sehen wir uns zuerst einmal die Spannungsversorgung der Anordnung an. Hier ist darauf zu achten, dass die 5-Volt-Spannungsquelle genug Strom für den ESP8266 und den verwendeten Servomotor bereitstellen muss. Bedenkt man, dass der ESP fast 200 mA ziehen kann und sich der Strom vom Servomotor noch dazu addiert, könnte es schon knapp werden mit den 500 mA, die ein kleines USB-Netzteil liefern kann. In unserem Beispiel wurde ein Miniservo verbaut, der ca. 150 mA braucht. Starke Modellbauservos schlucken allerdings bis zu 2 A. Lange Rede kurzer Sinn: Wenn Sie auch einen Miniservo verwenden, können Sie den Versuchsaufbau mit der Spannung aus einem USB-Netzteil oder einem USB-Port Ihres PCs versorgen. Verwenden Sie einen starken Servo, ist die Wahrscheinlichkeit hoch, dass die Leistung eines USB-Anschlusses nicht ausreicht. Das merken Sie daran, dass sich der Aufbau absolut unlogisch verhält, sobald der Servo Strom braucht. Sollte das der Fall sein, prüfen Sie bitte zuerst, ob die Betriebsspannung kurzfristig zusammenbricht, wenn der Servo sich bewegt. Das kann man am besten mit einem guten alten analogen Multimeter bewerkstelligen. Falls Sie keines dieser Schätzchen zur Hand haben, tut es auch eine einfache LED, die man über einen Vorwiderstand an die Betriebsspannung anschließt. Wenn sie flackert, sobald der Servo arbeitet, ist die Spannung zusammengebrochen.

Die 3,3 Volt Betriebsspannung für den ESP8266 werden mit einem MCP1700 aus den 5 Volt vom USB-Netzteil erzeugt. Da der ESP8266 nicht tolerant auf eine zu hohe Betriebsspannung reagiert, sollte man peinlich genau darauf achten, ihn nicht ungewollt an die 5 Volt anzuschließen. Der USB-nach-Seriell-Adapter muss auch auf 3,3 Volt eingestellt sein. Dieser Adapter kann, nachdem der ESP8266 programmiert und einsatzbereit ist, wieder entfernt werden. Er sollte dementsprechend montiert sein. Einfache Buchsenleisten bieten sich dafür an.

Mit den Jumpern JP1 und JP2 können wir den ESP8266 zwischen Normalbetrieb und Flash Mode hin und her schalten. R3 an GPIO15 aktiviert das Booten aus dem Flash-Speicher. R4 an CH_PD aktiviert den WLAN-Modus. R5 ist ein schlichter Vorwiderstand, um den Strom, der in den Optokoppler fließt, zu begrenzen. R6 ist dazu da, um das Ausgangssignal definiert auf logisch 0 zu ziehen, solange der Optokoppler nicht durchschaltet. Was der Resettaster macht, ist sicher selbsterklärend.

Der USB-nach-Seriell-Adapter ist mit seinen Ein-/Ausgängen RXD und TXD über Kreuz mit den entsprechenden Ein-/Ausgängen des ESP8266 verbunden. Falls Sie sich nun denken „Warum nehme ich nicht die Betriebsspannung des USB-Adapters für den Aufbau?“, kann ich nur davon abraten. Das USB-Modul kann auf dem 3,3-Volt-Output nur 25 mA liefern. Das ist für den ESP8266 eindeutig zu wenig Strom. Wir wollen das Modul im späteren Live-Einsatz sowieso nicht mehr mit dabei haben.

Abbildung 2.1: Der Schaltplan für den Flag-ESP

Abbildung 2.2: Der Flag-ESP als Prototyp aufgebaut

Postbox-ESP

Abbildung 2.3 zeigt uns den Schaltplan für den Postbox-ESP. Auf den ersten Blick sieht er dem Schaltplan für den Flag-ESP sehr ähnlich. Der Unterschied ist, dass die Ansteuerung für den Servomotor fehlt und dafür der Ausgang des PIR-Moduls über einen Transistor mit dem Reseteingang des ESP verbunden ist. Normalerweise müsste vor der Basis des Transistors immer ein Widerstand zur Strombegrenzung geschaltet sein. Dieser befindet sich aber schon auf der Platine des PIR-Sensors und muss daher nicht von uns mit eingebaut werden. Sobald der Sensor auslöst, wird der Postbox-ESP resettet. Das heißt in unseren Fall, er wird aus dem Tiefschlafmodus geweckt. Wie schon in Kapitel 2.1.2 angesprochen, kann die Spannungsversorgung über ein Batteriepack oder eine Solar Powerbank erfolgen. Alle verbauten Elemente benötigen im Schlafmodus nur wenige µA Strom. Der Kondensator C3 sorgt dafür, dass ein kurzes Signal (Peak) auf der Resetleitung den Postbox-ESP nicht weckt. Er wird durch diesen Trick unempfindlich gegen mögliche Störsignale.

Abbildung 2.3: Der Schaltplan für den Postbox-ESP

Abbildung 2.4: Der Postbox-ESP als Prototyp aufgebaut

2.1.4 Programme

Flag-ESP

Das Programm, das unseren Flag-ESP steuert, ist relativ unkompliziert aufgebaut. Es beginnt mit dem Einbinden der benötigten Bibliotheken. Anschließend werden die verwendeten Konstanten definiert. Die zwei Funktionen handleFlag(); und handleRoot(); definieren die Reaktionen des Web Servers beim Aufruf dieser URLs. Sie werden sich sicher fragen, warum in handleFlag(); und auch in setup(); der Servo attached nach dem Ändern des Wertes gleich wieder detached wird. Der Grund dafür ist: Die Servos neigen zum Brummen – das heißt, die Positionsreglung im Servo schafft es nicht zu 100 Prozent, die geforderte Position zu treffen, und dreht den Motor immer wieder vor und zurück. Dieses Brummen ist nicht nur nervig, sondern verschleißt auch alle mechanischen Teile im Servo. Daher schalten wir den Servo nach dem Positionieren mit der detach();-Funktion wieder ab. Solange keine zu hohen Kräfte auf den Servohebel wirken, bleibt er in seiner Position stehen.

In der setup();-Funktion wird das serielle Interface als erstes initialisiert, damit wir die Möglichkeit haben, Debuginformationen ausgeben zu lassen. Danach verbinden wir uns mit dem WLAN und bereiten das Starten des Web Servers vor. Am Ende der setup();-Funktion wird der Web Server zu guter Letzt gestartet. In der loop();-Funktion müssen wir dann nur noch server.handleClient(); aufrufen, damit der Web Server permanent läuft.

Es ist natürlich klar, dass Sie die IP-Adressen und auch die WLAN-Verbindungsdaten an Ihre Gegebenheiten anpassen müssen. Weiterhin müssen noch die Werte der myservo.write();-Aufrufe angepasst werden. Diese sollen eigentlich den Winkelgrad der Servoposition angeben. Leider passt das so gut wie nie, da sich die Servos verschiedener Hersteller alle leicht unterschiedlich verhalten. Die einzige Möglichkeit, die man hat, ist manuelles Nachjustieren.

#include
#include
#include
const char* ssid = "";
const char* pass = "";
IPAddress ip(192,168,1,20);
IPAddress...