Samstag, 26. September 2015

LED über Internet steuern mit ESP 8266

In diesem Post geht es darum, wie man mittels dem ESP 8266 01 Wlan Modul für nur ca. 6€ eine LED über das Internet/eine Website steuern kann.



Start mit dem ESP8266

Zunächst einmal benötigt man einen ESP8266(hier bei AZ-Delivery). Dabei gibt es verschiedene Versionen, von 01 bis 12, welche sich in der Zahl ihrer GPIO Pins unterscheiden. Für den Start empfehle ich die Version ESP 8266 01, bei der alle Pins bereits herausgeführt sind. Sie besitzt zwei GPIOs.


Es gibt zwei Arten, den ESP 8266 zu verwenden, als Master oder als Slave mit dem Arduino. Da der integrierte Mikrocontroller des ESP 8266 leistungsfähiger ist, als der eines Arduino (80 Mhz, 512 KB Flash), verwende ich in diesem Beispiel den ESP alleine.

Das Wlan Modul wird über eine serielle Verbindung programmiert. Dazu könnte man sich einen USB to Serial Adapter für ein paar Euro kaufen. Eine andere Möglichkeit ist, einen Arduino zu nehmen, und seinen Mikrocontroller (sofern er nicht fest verbaut ist), zu entfernen. Nun kann man an den TX und den RX Pin des Arduino den ESP 8266 anschließen.

Dabei muss man beachten, dass TX mit TX und RX mit RX verbunden werden muss, wenn man den Arudino verwendet. Nun kommuniziert der PC mit dem Wlan Modul. Dabei zu beachten ist, dass der ESP theoretisch nicht 5V tolerant ist, weshalb man einen Spannungsteiler einbauen könnt. Viele ESP 8266 halten jedoch trotzdem ein 5V Signal vom Arduino aus.

Um den ESP 8266 in der Arduino IDE zu programmieren, kann man sich hier die benötigten Dateien herunteladen. In der .zip Datei befindet sich ein Ordner namens esp8266com, welchen ihr in den hardware Ordner in eurem "Arduino" Sketcheordner kopieren müsst. Nach einem Neustart der Arduino IDE könnt ihr nun unter Werkzeuge > Platine das "Generic ESP 8266 Module" auswählen. 

Nun erscheinen unter Werkzeuge drei zusätzliche Menüpunkte. Clock Speed, Flash size und Upload Speed. Diese müssen entsprechend den Spezifikationen eures ESP Moduls ausgewählt werden. Beim ESP 8266 Version 01 wählt ihr 512 KB Flash und 80 Mhz Clock Speed. Die Datenrate zum Upload kann von Modul zu Modul variieren. Am häufigsten sind 115200(auch bei meinem Modul), 57600 und 9600. Am besten einfach einmal alle Datenraten ausprobieren.

Nun kann man seinen ersten Sketch für den ESP 8266 schreiben. Die GPIO heißen in der Arduino IDE entsprechend ihrer GPIO Nummer, beim ESP 8266 01, also Pin 0 und Pin 2. 

Um einen Sketch auf das Wlan Modul zu laden, muss man VCC mit +3.3V verbinden, GND mit dem Ground, TX mit TX des Arduino, RX mit RX des Arduino, sowie CH_PD mit den 3.3V und GPIO 0 mit dem Ground. Alle diese Verbindung sind zum Programmieren des ESp 8266 notwendig! Nun klickt man in der Arduino IDE ganz normal auf Upload. Das kompilieren dauert nun zwar etwas länger, ansonsten ist jedoch Alles, wie gewohnt.

Nach dem Upload des Sketches, trennt man den ESP 8266 vom Strom, und entfernt die Verbindung zwischen GPIO 0 und Ground. Nun verbindet man das Wlan Modul erneut mit dem Strom, und der Sketch wird ausgeführt. Die serielle Verbindung kann nach dem Upload natürlich auch jederzeit getrennt werden (TX und RX Pin).

Bei mir es ist es notwendig, immer beim Start des ESP 8266 fest zu legen, ob er neu programmiert werden soll oder nicht, also GPIO 0 mit dem Ground verbunden, oder nicht. Um den "Modus" zu ändern bedarf es eines Neustart des ESP 8266 (kurz vom Strom trennen).

LED über Internet steuern

Für einen ersten Test des ESP 8266, wird praktischerweise bereits mit dem vorher heruntergeladenen Ordner ein (rudimentärer) Beispiel Sketch geliefert, mithilfe dessen man eine LED über das Internet an und aus schalten kann. Ihn findet man unter Datei > Beispiele > ESP8266Wifi > WifiWebServer. 

In diesem Fall verbindet sich der ESP8266 mit einem bestehenden Wlan Netzwerk. Eine andere Möglichkeit wäre es den ESP 8266 als Access Point zu verwende, also ein neues Wlan Netzwerk mit dem ESP 8266 als Router zu verwenden. Auch beides parallel ist möglich.

Da sich der ESP 8266 mit eurem Wlan Netzwerk verbindet, müsst ihr am Anfang des Sketches, bei ssid und password, den Namen und das Passwort eures Wlan Netzwerkes angeben. Nun könnt ihr den Sketch auf euren ESP hochladen, und eine LED an GPIO 2 des ESP 8266 anschließen.

Wenn ihr beim ersten Start des Sketches den ESP noch mit eurem PC, über den Arduino, verbunden lasst, bekommt ihr in der seriellen Konsole die IP Adresses des ESP in eurem Wlan Netzwerk angezeigt. 

Um die LED zu steuern, ruft ihr mit einem Gerät innerhalb eures Wlan Netzwerkes http://ip_des_esp8266/gpio/1 für LED an und http://ip_des_esp8266/gpio/0 für LED aus auf. 


Um die LED auch außerhalb eures Wlans zu steuern, müsst ihr Port Forwarding in eurem Wlan Router aktivieren. Das ist jedoch mit einigen Sicherheitsrisiken verbunden.

Fazit

Nachdem man sich einmal in den ESP 8266 "eingearbeitet" hat, ist er eine einfache, und vor allem sehr billige, Möglichkeit seine Projekte mit dem Internet zu verbinden. Hier, auf diesem Blog, wird es deshalb auch in den nächsten Tagen weitere Tutorials zum ESP 8266 geben. 

1 Kommentar:

  1. Hallo, wenn ich auf den Link "hier" klicke um den benötigten Dateien herunter zu laden, komme ich auf eine Seite, wo ich einen Suchbegriff eingeben muss. Wie kommt ich dann auf den Ordner, den wir für das Projekt benötigen?

    Danke.

    AntwortenLöschen