ESP8266: Unterschied zwischen den Versionen
Zeile 208: | Zeile 208: | ||
Serial.print("."); | Serial.print("."); | ||
} | } | ||
Serial.println(""); | Serial.println(""); | ||
Serial.println("WiFi connected"); | Serial.println("WiFi connected"); |
Version vom 7. Juli 2017, 13:17 Uhr
Work in Progress: | |
Diese Seite wird erst noch aufgebaut. Bitte noch keine Änderungen vornehmen, ohne mit dem ursprünglichen Autor zu sprechen! | |
Vielen Dank. |
ESP8266 | |
---|---|
Hersteller: | Espressif |
Herstellerseite: | https://espressif.com/ |
Kosten: | 2 - 5 € |
Software | |
| |
Links | |
Features: | |
|
Was ist ein ESP8266
Der ESP8266 ist ein WLAN-SoC (System-on-a-Chip), also ein WiFi-Modul, das sich selbstständig nutzen und programmieren lässt. Daher kann der ESP8266 auch unabhängig von z.B. einem Arduino verwendet werden, da man eigene Programme darauf laden kann.
Mittlerweile gibt sehr viele Ausführungen. Der ESP8266 Chip ist überall identisch, die Boards unterscheiden sich jedoch an der der Anzahl der nutzbaren GPIOs (Anschluss-Pins). Einen Überblick über gängige Module findet ihr hier.
Für den ESP8266 gibt es auch ein Entwicklungsboard mit dem Namen „NodeMCU“, das über einen integrierten USB-to-UART-Adapter verfügt, und somit direkt programmiert werden kann. Für alle anderen Modelle benötigt man zusätzlich einen USB-to-UART-Adapter (z.B. FT232 oder CP2102), wenn man nicht über eine serielle Schnittstelle programmieren möchte.
Der Controller wird mit einem Takt von 80MHz getaktet und ist somit anderen Mikrocontrollern z.b. dem Arduinos, die mit 8 bzw. 16 MHz laufen, weit überlegen.
Wichtig ist, dass der ESP8266 mit 3V betrieben wird – nicht 5V. Eine Stromversorgung direkt über USB ohne Spannungsteiler o.ä. ist somit nicht möglich.
Wer analoge Eingänge (Licht-, Temperatur-, Drucksensoren) betreiben möchte, sollte bei der Auswahl der Module aufpassen, da nicht jedes Modell über diese Eingänge verfügt. Ebenfalls unterscheiden sich die Modell hinsichtlich ihrer Speicherkapazität die von 0,5MB bis 4MB reicht.
ESP8266 programmieren
Bei der Programmierung des ESP8266 gibt es mehrere Möglichkeiten.
- Nutzung einer bestehenden Firmware die Microphyton- oder LUA Scripte entgegennimmt und ausführt oder
- Erstellen einer eigenen Firmware z.B. über die Arduino IDE
Vorbereitung zum Flashen des ESP8266 Moduls
Zum Flashen des ESP8266 werden folgende Dinge benötigt:
- ESPtool.py (benötigt Python in der Version 2.7.8)
- NODE MCU Firmware (oben in der Infobox)
- ESPlorer.jar benötigtJava ab Version 8.0 (wird zum Flashen nicht unbedingt benötigt)
Zuerst wird Python in der Version 2.7.X installiert eine Anleitung gibt es hier.
Zusätzlich wird jetzt das esptool.py installiert, womit der Controller geflasht werden kann.
In der Kommandozeile (Start -> CMD) wird das Pythonscript pip.py ausgeführt, welches im Installationsverzeichnis in dem Ordner Scripts befinden sollte. In diesem Beispiel im Ordner C:\Python27\scripts\
In der Kommandozeile wird somit folgender Befehl eingegeben.
cd c:\Python27\scripts pip install esptool
Zum Programmieren benötigen wir das Programm ESPlorer, welches oben in der Infobox verlinkt ist. Das Programm muß lediglich heruntergeladen und entpackt werden. Allerdings setzt ESPlorer eine Java Installation voraus, eine Anleitung gibt es hier.
Flashen des ESP8266 Moduls
Geflasht wird hier mit der Konsole (CMD) und dem Pythonscript ESPtool.
Mit dem Befehl:
esptool.py --port <COM-Port> --baud<Baudrate> write_flash -fm dio -fs 32m 0x00000 <FirmwareFile>
cd c:\Python27\scripts esptool.py --port COM7 --baud 115200 write_flash -fm dio -fs 32m 0x00000 nodemcu_float_0.9.6-dev_20150704.bin
Wenn die Firmware sich nicht im selben Ordner wie das Programm ESPtool.py befindet, muss der Dateipfad mit angegeben werden.
Flashspeicher löschen
Der Flashspeicher kann auch wieder gelöscht werden mit dem Befehl:
esptool.py --port <COM-Port> --baud<Baudrate> erase_flash
cd c:\Python27\scripts esptool.py --port COM7 --baud 115200 erase_flash
Node MCU Firmware herunterladen
Eine in Java geschriebene und damit plattformunabhängige IDE zum Erstellen und Übertragen der Lua-Scripte ist unter dem Namen ESPlorer kostenlos erhältlich (Java erforderlich). Die Datei ist oben in der Infobox verlinkt. Die heruntergeladene .zip-Datei entpackt ihr nun und startet ESPlorer.jar. Unter Windows sollte dazu ein Doppelklick auf die entsprechende Datei reichen. Wenn Windows nach einen Programm zum öffnen der Datei fragt, müsst ihr Java noch installieren.
Bevor ihr das Programm startet solltet ihr den ESP8266 Controller über das USB Kabel dem Computer verbinden.
Wenn ihr alles richtig gemacht habt, öffnet sich nach einem Doppelklick auf ESPlorer.jar die Benutzeroberfläche:
Benutzeroberfläche |
---|
Wählt nun im rechten Fenster (EditorFenster) oben in der Dropdownliste den seriellen Port eures Controllers aus und stellt anschließend als Übertragungsgeschwindigkeit 11520 ein. Klickt anschließend auf Open.
COM-Port auswählen und Verbindung herstellen |
---|
Die Software versucht nun einen Verbindung zum Controller herzustellen.
Verbindungsaufbau |
---|
Da das Controller schon läuft und aktuell keine Daten vom Board über die serielle Schnittstelle an den PC gesendet werden, kann in dem Fenster nichts angezeigt werden. Also müssen wir den Resetknopf auf dem Board kurz drücken, um einen Neustart zu erzwingen. Nach dem Neustart sollte eine "Got answer!" Nachricht in dem Fenster erscheinen. Unter dieser Nachricht sollte im Klartext zu sehen sein, welche Firmware installiert ist.
Geht bald weiter
Erstellen einer eigenen Firmware mit der Arduino IDE
Vorausgesetzt wird eine aktuelle installierte Arduino IDE. Ein Anleitung gibt es hier.
https://github.com/esp8266/Arduino
Tutorial
Lektion 1 - ESP8266 als Accesspoint
Lektion 2 - ESP8266 als Client
#include <ESP8266WiFi.h> const char* ssid = "DiMAC_2017"; const char* password = "DiMAC_2017"; void setup() { // Serielle Schnittstelle initialisieren Serial.begin(115200); delay(10); WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); Serial.println("SubnetMask: "); Serial.println(WiFi.subnetMask()); } void loop() { }