ESP8266

Aus Wiki - FabLab Lübeck e.V.
Baustelle-100px.png 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
Nopicture.png
Hersteller: Espressif
Herstellerseite: https://espressif.com/
Kosten: 2 - 5 €
Software
Links
Features:
  • 802.11 b/g/n
  • Wi-Fi Direct (P2P), soft-AP
  • Integrated TCP/IP protocol stack
  • Integrated TR switch, balun, LNA, power amplifier and matching network
  • Integrated PLL, regulators, and power management units
  • +19.5dBm output power in 802.11b mode
  • Integrated temperature sensor
  • Integrated low power 32-bit CPU could be used as application processor
  • SDIO 2.0, SPI, UART
  • STBC, 1×1 MIMO, 2×1 MIMO
  • Wake up and transmit packets in < 2ms
  • Standby power consumption of < 1.0mW (DTIM3)
  • VC: 3,3V (Achtung nicht 5V Tolerant)

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:

ESPlorer v0.2.0-rc5 by 4refr0nt.png
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.

ESPlorer v0.2.0-rc5 by 4refr0nt.png
COM-Port auswählen und Verbindung herstellen

Die Software versucht nun einen Verbindung zum Controller herzustellen.

ESPlorer v0.2.0-rc5 by 4refr0nt.png
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

#include <ESP8266WiFi.h>
#include <WiFiClient.h> 

/* Set these to your desired credentials. */
const char *ssid = "ESP_AccessPoint";
const char *password = "Start1234";

void setup() {
	Serial.begin(115200);
  delay(10);
  
  Serial.println("");
  Serial.println("Access Point wird gestartet:");
  WiFi.softAP(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println("Acces Point ist Online");
  Serial.println("SSID: ");
  Serial.println(WiFi.SSID());
  Serial.println("Password: ");
  Serial.println(*password);
  Serial.println(""); 
  Serial.println("IP address: ");
  Serial.println(WiFi.softAPIP());
  Serial.println("SubnetMask: ");
  Serial.println(WiFi.subnetMask());


}

void loop() {
	
}

Lektion 2 - ESP8266 als Client

Beispiel:

#include <ESP8266WiFi.h>

const char* ssid     = "Heimnetzwerk_SSID";
const char* password = "DasGeheimePasswort";


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() {
}

Linkliste

https://alexbloggt.com/
Übersicht der ESP8266 Module