ESP 8266 01 flashen und eine LED schalten

Der ESP8266 ist ein günstiger Mikrocontroller mit WLAN. Es gibt ihn in verschiedenen Verschiedenen , wobei ich die Version 01 vorliegen habe, welche 4 GPIO Pins besitzt. Alle PINs sind PWM fähig.

 

Flashen

Zum Flashen benötigt man einen USB Serial Converter bzw. Man kann einen Arduino dafür verwenden.

Ich empfehle dringend eine externe Spannungsquelle zu nutzen, da der ESP relativ hohe Spitzeströme hat.

 

ESP

USB Serial Converter

Tx

Rx

CH_PD

3,3V (extern!)

RST

 

3,3V

3,3V (extern!)

GND

GND (extern!)

GPIO2

 

GPIO0

GND (extern!)

Rx

Tx

 

Durch diese Beschaltung ist der ESP nur mit Rx und Tx mit dem USB Serial Converter verbunden. Wer Geräte wie den Arduino zum flashen benutzt muss ggf. Tx and Tx und Rx an Rx anschließen.

 

Achtung: Der GND Pin des USB Serial Converters muss mit der selben Masse (GND) wie der ESP verbunden sein.

 

Nun müssen wir die Arduino IDE zum flashen vorbereiten, das geht ganz einfach.

 

Arduino IDE öffnen>>Datei>>Voreinstellungen>>Zusätzliche Boardverwalter URLs

 

Dort muss folgende Adresse eingetragen werden:

http://arduino.esp8266.com/stable/package_esp8266com_index.json

 

Die IDE wird alle Dateien downloaden und sollte danach vom Nutzer neugestartet werden.

 

Jetzt sollte unter Werkzeuge>>Board eine ganze Reihe von ESP Modulen auftauchen.

Davon muss für die vorliegende Version "Generic ESP8266 Module" ausgewählt werden.

Die anderen Einstellungen können beibehalten werden, ihr solltet nur überprüfen ob ein anderer COMPORT als 1 eingestellt ist. 1 ist nämlich der Standard-COMPORT welcher für uns keine Funktion hat. Unser COMPORT kann eine beliebige andere Nummer haben.

 

Falls nur der COMPORT 1 verfügbar ist habt ihr den Treiber des USB Serial Converters nicht installiert. Holt dies nun nach indem ihr euch den Treiber herunterladet und im Gerätemanager

installiert. Ggf kann nach der ersten Treiberinstallation, ein weiteres unbekanntes Gerät

auftauchen. Hier muss wieder der Treiber installiert werden.

Beides ist ganz einfach da Windows sich die Treiber jeweils direkt aus dem Downloadverzeichnis holen kann.

 

Nun seid ihr bereit zum flashen.

 

Vor dem flashen muss der ESP neugestartet werden, dies erreicht ihr dadurch, dass

ihr den 3,3V Pin kurz von der Spannungsquelle trennt.

 

 

 

Das erste Programm

 

In einem ersten Programm beschäftigen wir uns damit eine LED per WLAN an und auszuschalten.

Die Schnittstelle zm Benutzer bildet dabei ein einfacher Webbrowser und ein bisschchen HTML,

was ansich aber nichtmals zur Steuerung notwendig ist.

 

Gehen wir zunächst das Programm Schritt für Schritt durch.

Programmcode wird von mir immer in Courier dargestellt.

 

#include <ESP8266WiFi.h>

#include <ESP8266WebServer.h>

 

Als erstes werden die für den Betrieb notwendigen Bibliotheken eingebunden.

 

ESP8266WebServer server(80);

 

An dieser Stelle wird der Port des Webservers angegeben. Der Standardport ist der Port 80.

 

 

 

String led1= "<a href=\"/dieled1.html\">LED An</a>";

String led0= "<a href=\"/dieled0.html\">LED Aus</a>";

 

Hier bereite ich die Textausgabe für die HTML Dateien vor. Es sind einfache Links.

Wer HTML kennt wird sich jetzt vielleicht über die \ im Code wundern. Diese Zeichen sind notwendig damit der Compiler sie nicht als Teil der Sprache interpretiert sondern zum String zählt.

Weil die " auch den Anfang und das Ende eines Strings bedeuten.

 

void startseite(){

server.send(200, "text/html", led1);

}

 

Jede einzelne Seite auf dem Server wird als Funktion aufgerufen. Das 3. Argument in unserem

Funktionsaufruf ist der String den wir oben definiert haben und der einen Link enthält.

 

void ledan(){

digitalWrite(0, HIGH);

server.send(200, "text/html", led0);

}

 

void ledaus(){

digitalWrite(0, LOW);

server.send(200, "text/html", led1);

}

 

Hier sehen wir die beiden Funktionen um die LED umzuschalten. Beim Aufruf der Seit wird

die Funktion ausgeführt. Im Gegensatz zur Startseite enthalten die Funktionen auch noch die Funktionen zum Ansteuern des GPIO Pins.

Beim Aufruf der Seite wird also der Inhalt der Funktion ausgeführt. Die Links in den Funktionen verweisen jeweils aufeinander.

 

void setup() {

 

pinMode(0, OUTPUT);

digitalWrite(0, LOW);

 

In der setup Funtion welche nur einmalig ausgeführt wird definieren wir zuerst den

Pin 0 als Ausgang und stellen den Pegel auch auf 0.

 

 

Serial.begin(115200);

 

Wir eröffnen die serielle Übertragung, so können wir den Status immer am PC überwachen.

 

Serial.println(""); // Leere Zeile ausgeben

Serial.println("Starte WLAN-Hotspot \"Keksdose\"");

WiFi.mode(WIFI_AP); // access point modus

WiFi.softAP("Keksdose", "12345678"); // Name des Wi-Fi Netzes

delay(500); //Abwarten 0,5s

 

In dem Teil der Funktion geben wir zuerst etwas Text aus und stellen den Betriebsmodus ein. Dann werden der Name des Netzwerkes (SSID) und das Passwort festgelegt. Passwort und Name sollten keine exotischen Sonderzeichen enthalten und das Passwort muss mindestens 8 Zeichen haben.

 

Serial.print("IP Adresse "); //Ausgabe aktueller IP des Servers

Serial.println(WiFi.softAPIP());

 

Hier wird die IP-Adresse des Servers ausgegeben. Sie ist standardmäßig immer 192.168.4.1

 

server.on("/", startseite);

server.on("/dieled1.html", ledan);

server.on("/dieled0.html", ledaus);

 

An dieser Stelle definieren wir die Seiten, die man aufrufen kann. Dafür übergeben wir den Pfad an dem die Seite erstellt wird und die Funktion die dafür aufgerufen wird. Der Inhalt der Seiten wird in den aufzurufenden Funktionen definiert. Wichtig ist, dass immer das / vorangestellt wird.

 

server.begin();

}

 

Danach wird der Server gestartet und die setup Funktion geschlossen.

 

void loop() {

server.handleClient();

 

}

 

In der Loop Funktion muss nur der Funktionsaufruf für server.handleClient() stehen.

Weitere Code darf natürlich auch hier hinzugefügt werden.

 

 

 

Weitere Hinweise

 

Diese Version des ESP bietet nominell nur 2 GPIO Pins, jedoch können Rx und Tx ebenfalls ganz normal als GPIO Pins genutzt werden.

 

PIN

Nummer

GPIO0

0

Tx

1

GPIO2

2

Rx

3

 

Wenn ihr den ESP außerhalb des Aufbaus betreiben wollt wie er oben beschrieben ist, sind 3 Verbindungen zwingend notwendig. 3.3V muss an 3,3 Volt angeschlossen werden, GND an Masse

und CH_PD muss auch an 3,3V angeschlossen werden.

 

Der Flashvorgang kann und wird sicher auch mal fehlschlagen, versucht es erst nochmal bevor ihr lange einen Fehler sucht.