Steuerung per Web mit ESP8266 Wi-Fi Modul.
Steuern und schalten über Wlan und Internet.
ESP8266 fungiert als kleiner Webserver oder auch Webclient, der schaltet, steuert oder überträgt Messdaten.
Als Erstes habe ich vor, eine WLAN-Steckdose (IP-Steckdose, Funkschalter per WLAN) zu bauen.
ESP8266 Wlan Modul als Server ermöglicht ein weltweites Steuern und Schalten über das Handy, Tablet und jeden PC mit Internetanschluss.
ESP8266 Wlan Modul kann als Webclient Daten, zu bestimmten Zeitpunkten oder Ereignissen, über Internet und PHP-Webseite an MySQL Datenbank übertragen oder auch E-Mail versenden.
Web-Schalter
Web-Schalter schaltet ein elektrisches Verbraucher über Wlan. Es gibt 2 Möglichkeiten:Der Webschalter 1: ESP8266 Modul arbeitet als WLAN-Zugangspunkt und WEB - Server. Diese Möglichkeit nutzen Sie, wenn kein Heimnetzwerk vorhanden ist. Sie melden sich mit Ihrem Handy oder Tablett bei ESP8266 WLAN-Zugangspunkt an. Sie rufen im Browser festgelegte IP-Adresse auf und erhalten vom ESP8266 Server eine Webseite mit einem Button (Farbe des Buttons zeigt aktuellen Schaltzustand). Durch das Betätigen des Buttons schalten Sie Ihr Gerät ein oder aus.
Der Webschalter 2: ESP8266 Modul meldet sich im Ihrem Heimnetzwerk an und startet ebenfalls WEB - Server. Dann ist er von allen Geräten ihres Heimnetzwerks erreichbar. Mit entsprechender Portweiterleitung im Router und DynDNS kann auch vom Internet aus geschaltet werden.
Der Schaltplan
Die ganze Schaltung besteht aus ESP8266 Modul, Spannungsregler, einem Taster und einem Relais mit Transistor als Treiber.
ESP8266 Modul hat 2 Digitale Ein/Ausgänge. GPO2 benutzen wir als Eingang. Mit einem Taster können wir unsere Last entweder ein- oder ausschalten. GPO2 Eingang wird über Wiederstand R5 auf HIGH gezogen. C4 ist zu entprellung da.
GPO0 benutzen wir als Schaltausgang. An den ist ein 5V Relais über 2 Transistoren angeschlossen. GPO0 ist invertiert. Das heißt "0" Last eingeschaltet, "1" Last ausgeschaltet. Um das Signal wieder zu invertieren wird Transistor Q2 benutzt.
Warum wird GPO0 als low aktiv benutzt? GPO0 wird für das Aktivieren der Firmware Update verwendet. So das für normale Betrieb des ESP8266 Moduls nach dem Reset immer HIGH Pegel anliegen soll.
Vereinfachte Schaltplan mit SSR-Relay
In der Schaltung steuert ESP8266 Modul ein SSR-Relay (Solid State Relay). PullUp Wiederstände sind weg. GPIO2 hat per Software eingeschaltete PullUp. GPIO0 in angeschaltetem Zustand weist 3,3V auf. Außerdem der Halbleiterrelais ist zu Vcc geschaltet und bildet mit seinen internen Bauteilen auch einen PullUp. Als Solid-State-Relais habe ich SSR-25DA genommen, weil es war günstigste Solid-State-Relay bei Amazon 4,12€ mit dem Versand. SSR-Relais ist zum +5V angeschlossen damit er auch sicher einschaltet. In einer Amazon Rezension habe ich gelesen, dass obwohl nach dem Datenblatt SSR-25DA mit 3V angesteuert werden kann, schaltet er nicht mal mit 3,3V. In meiner Schaltung wird SSR-25DA mit 5V geschaltet.
Laden des Programms in ESP8266 Modul
Für Firmware update
wird Jumper JP1 geschlossen. Wenn nach dem Reset
GPO0 ein low Pegel aufweist, geht das ESP8266-Modul in Programmiermodus.
Für
das Laden des Programms wird ein USB-RS232-TTL Adapter
benötigt. Am
einfachsten ist es einen mit 3,3V Ausgängen zu benutzen.
Einfach zum
Steckerleiste J2 anschließen TX zu TX, RX zu RX und GND.
Man kann
auch USB-RS232-TTL 5V Version nutzen allerdings TX soll über
1K
wiederstand geschaltet werden. Ich habemomentan USB -Seriell
mit FT232 Chip mit 5 V.
Firmware oder eigene Programme laden
Für das Flashen des ESP8266-Programms habe ich 2 Tools gefunden. XTCOM_UTIL.exe und esptool.exeEsptool
Esptool wird mit Kommandozeilenparameter gestartet. Ich mache das mit einer BAT-Datei.esptool.exe -cp COM5 -ca 0x00000 -cf WebSchalter1.0.ino.generic.bin
Parameter
-cp COM-Schnittstelle
-ca Startadresse, wo das Programm abgelegt werden soll
-cf BIN-Datei, die programmiert werden soll
Download Esptool und Web Schalter 1.
XTCOM_UTIL
Für das Laden der Firmware
die aus einer Datei besteht, ist
es XTCOM_UTIL bequemer
zu benutzen.
Jumper JP1 schlissen, Einschalten.Programm
"XTCOM_UTIL.exe" starten,
über
Tools-->Config Device den COM-Port und die Baudrate (115200)
auswählen und auf Connect klicken.
Über API
Test-->Flash Image Download
das betreffende File auswählen (WebSchalter1.bin)
und Adresse (0x00000) an die das File geschrieben werden soll.
Download Xtcom Util.
Vor dem Laden eigener Programme empfehle ich Version der
gelieferten AT-Firmware zu notieren. Das
geht so. RS232-Terminal so einstellen das er die Eingabe mit „NL“ und
„CR“ beendet. Dann das Befehl " AT+GMR"
eingeben. Hier ist AT-Firmware um das ESP8266-modul im anfangszustand
zu
versetzen. Download
AT-Firmware
AT v0.21 SDK 0.9.5 24.01.2015, AT v0.22 SDK 1.0.0
20.03.2015, AT v0.23 SDK 1.0.1 flash 512k.
Programm "WebSchalter 1" für ESP8266
ESP8266 arbeitet als Server im
WLAN Access Point Modus. Beim
Server können sich mehrere Wi-Fi Geräte anmelden und
den Relais schalten.
|
Licht |
Quellcode "Web Schalter 1.0" für ESP8266
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
// Schalte GPO0 mit Button und Java im Access Point modus WLAN-Hotspot "astral" pass "12345678" #include <ESP8266WiFi.h> #include <ESP8266WebServer.h> String html1 = "<!DOCTYPE html>\r\n<html>\r\n\ <head>\r\n<meta content=\"text/html; charset=ISO-8859-1\" http-equiv=\"content-type\">\r\n\ <title>WebSchalter</title>\r\n\ <form action=\""; // String((val)?"/1.html":"/0.html") String html2 = "\">\r\n<input value=\"ON/OFF\" style=\""; String html3 = " width:5em;height:3em; font-size: 16px;\" type=\"submit\">\ </form>\r\n</head>\r\n<body>\r\n</body>\r\n</html>"; ESP8266WebServer server(80); // Server Port hier einstellen int val = 1; //Startzustand ausgeschaltet String Temp = ""; void Ereignis_SchalteON() // Wird ausgefuehrt wenn "http://<ip address>/1.html" aufgerufen wurde { val = 0; // Relais Aus digitalWrite(0, val); // GPIO0 Temp = html1 + String((val) ? "/1.html" : "/0.html"); Temp += html2 + String((val) ? "BACKGROUND-COLOR: DarkGray;" : "BACKGROUND-COLOR: Chartreuse;") + html3; server.send(200, "text/html", Temp); } void Ereignis_SchalteOFF() // Wird ausgefuehrt wenn "http://<ip address>//0.html" aufgerufen wurde { val = 1; // Relais Ein digitalWrite(0, val); // GPIO0 Temp = html1 + String((val) ? "/1.html" : "/0.html"); Temp += html2 + String((val) ? "BACKGROUND-COLOR: DarkGray;" : "BACKGROUND-COLOR: Chartreuse;") + html3; server.send(200, "text/html", Temp); } void Ereignis_Index() // Wird ausgeuehrt wenn "http://<ip address>/" aufgerufen wurde { Temp = html1 + String((val) ? "/1.html" : "/0.html"); Temp += html2 + String((val) ? "BACKGROUND-COLOR: DarkGray;" : "BACKGROUND-COLOR: Chartreuse;") + html3; server.send(200, "text/html", Temp); } void setup() { digitalWrite(0, 1); // Anfangszustand 1 (Relais ausgeschaltet) pinMode(0, OUTPUT); // GPIO0 als Ausgang konfigurieren pinMode(2, INPUT_PULLUP); // GPIO2 als Eingang mit Pullup konfigurieren digitalWrite(0, 1); // Anfangszustand 1 (Relais ausgeschaltet) Serial.begin(115200); // Serielle schnittstelle initialisieren Serial.println(""); // Lehere Zeile ausgeben Serial.println("Starte WLAN-Hotspot \"astral\""); WiFi.mode(WIFI_AP); // access point modus WiFi.softAP("astral", "12345678"); // Name des Wi-Fi netzes delay(500); //Abwarten 0,5s Serial.print("IP Adresse "); //Ausgabe aktueller IP des Servers Serial.println(WiFi.softAPIP()); // Bechandlung der Ereignissen anschlissen server.on("/", Ereignis_Index); server.on("/1.html", Ereignis_SchalteON); server.on("/0.html", Ereignis_SchalteOFF); server.begin(); // Starte den Server Serial.println("HTTP Server gestartet"); } void loop() { server.handleClient(); if (!digitalRead(2)) //Wenn Taster an GPIO2 betetigt wurde { val = !val; // Schaltzuschtand andern digitalWrite(0, val); while (!digitalRead(2))server.handleClient(); // Warten bis der Taster losgelassen wird. } } |
Download das Programm Webschalter 1 als BIN-Datei zum direkten Flashen in ESP8266 Modul.
Arduino und ESP8266
Als nächstes kommt berechtigte Frage. Mit welchem Compiler wurde das Programm kompiliert? Mit Arduino IDE mit ESP8266 Unterstützung
Mann programmiert ESP8266 wie ein Arduino
Arduino IDE und WiFi Bibliothek
IP-Steckdose
Schaltwebserver im Heimnetzwerk IP-Steckdose
Impressum und Kontakt | Wuppertal 2017 |