Mittwoch, 14. Dezember 2016

ESP8266 12F

Ein 32 bit Prozessor, 4MByte Speicher, digitale GPIO und ein ADC Eingang und WLAN - das alles auf 2 cm². Dazu einfachste Programmierung - fast zu einfach!?

Das eigentliche kleine Modul ist natürlich erstmal schwer zu handhaben. Man braucht 3,3 Volt Betriebsspannung, USB Serial Wandler.
Aber es gibt ja fertige Boards, ich habe verschiedene ausprobiert. Die kann man einfach mit micro USB Kabel anschließen und es kann sofort losgehen. Aber wie? Je nach dem welches Modul man kauft hat man eine bestimmte Firmware vorinstalliert. Welche genau ist nicht immer vorhersehbar, vielleicht auch nicht wichtig.
Die Basisversion auf dem Modul kann mit einigen AT Befehlen gesteuert werden.

Ich würde das Wemos D1 mini bevorzugen und mit ESP Easy oder NodeMcu LUA arbeiten. Aber da muss ich mich noch ein wenig einarbeiten. ESP Easy ist aber wirklich ganz easy und vor allem auch schnell an FHEM angebunden.
Wahrscheinlich kann man mit ESPEasy ganz leicht ein paar Sensoren und unterstützte Geräte anbinden aber mit LUA die Dinge tun die darüber hinausgehen.

Verschiedene Module

Ich habe folgende Module ausprobiert:
ESP12E DEVKIT V2 von doit.am obwohl dort ESP12E dran steht ist ein ESP12F Modul drauf. Vorinstalliert ist eine LUA Firmware. Leider ist mein Modul eventuell kaputt. Es lässt alles mit sich machen, aber bei ESP Easy überlebt es den Power Reset nicht.
Wemos D1 mini von wemos.cc auch dies kommt mit NodeMcu Lua Firmware vorinstalliert. Außerdem liegen dem Modul zwar alle Stift- und Steckerlisten bei, sie sind aber nicht verlötet. Das Modul erscheint mir die zweckmäßigste Version zu sein!
LoLin NoneMcu V3 von wemos.cc wobei man auf der Seite nicht zu diesem Modul findet. Vorinstalliert ist eine AT Firmware. Es ist mechanisch gesehen das größte Modul meiner Serie - und damit fast unbrauchbar: Auf dem typischen Breadboards mit 2 x 5 Pins in Reihe belegt es die komplette Breite und begräbt die freien Kontakte unter sich. Damit kann man nichts mehr anschließen, man braucht eine großes/breites Breadboard.
Witty Board für die "witzige Wolke". Dieses Board ist zweiteilig gestapelt, auf dem Hauptmodul ist nur der ESP12F und der Stromanschluss angebracht. Als kleines Spielzeug ist in den Ecken eine RGB LED und ein Photowiderstand verbaut. Damit ist der ADC Anschluss schon belegt und 3 GPIO Pins. Auf der zweiten Platine ist USB Adapter untergebracht. Mann kann also die Hauptplatine nach dem Flashen/Programmieren trennen und mit 5 Volt Spannungsversorgung betreiben.
Das Modul hat eine Gizwits APP Firmware installiert, die ist aus meiner Sicht zu nichts zu gebrauchen.

Alle Module haben einen Reset Knopf um das Modul neu zu starten.
Nur das Wemos D1 mini hat keinen Flashtaster, den man aber eigentlich sowieso nie braucht.
Der ADC Eingang ist teilweise mit einem Spannungsteiler 3:1 beschaltet.

Die Module haben alle einen Spannungsregler AS1117 an Board. Soweit ich das verstanden habe, wird auch der USB-Seriell Chip CH340 mit 3,3 Volt gespeist. Damit sind alle Module eventuell sehr tolerant an VIN bzw VCC und es müssen nicht exakt 5 Volt anliegen wenn man nicht über die USB Schnittstelle speist. Zumindest bei den beiden großen Boards habe ich auch Angaben gefunden 4,5 - 10 Volt, theoretisch kann der AS1117 bis zu 15 Volt.
Das ESP12F Modul an sich ist nicht tolerant -> nur 3,3 Volt anschließen!

Firmwareversionen

AT Firmware

Geholfen hat mir diese Seite
Dazu braucht man das Flash Download Tool von ESPRESSIF und die aktuelle AT Firmware in Form des NONOS SDK von dieser Seite. Die latest Version auswählen un dann findet man das Download ganz unten auf der Seite unter Attachments.
Hat man das SDK entpackt wechsel man in den Pfad .\bin\at\ dort befindet sich eine Readme welche Datei auf welche Speicheradresse zu flashen ist. Für einen ESP-12F wählt man 4(5) Dateien aus:

eagle.flash.bin           -> 0x00000
eagle.irom0text.bin       -> 0x10000
blank.bin                 -> 0x7e000
blank.bin                 -> 0x3fe000
esp_init_data_default.bin -> 0x3fc000

Defaultwerte lassen, aber FLASH-SIZE auf 32 Mbit stellen. COM Port richtig einstellen!
Mit wenigen Befehlen ins Netzwerk:

AT
AT+GMR
AT+CWMODE=1
AT+CWJAP="SSID","Password"
AT+CIFSR

Diese Einstellung wird sofort auch gespeichert und überlebt ein Power Reset.


NodeMCU Firmware

Die Firmware NodeMCU bringt eine LUA - Scriptsprache basierte Umgebung.
Die Firmware und alle Tools kann man von dieser Seite beziehen. Man muss sich die Firmware aber aktuell immer "bauen" lassen. Der Einstieg für diesen unkomplizierten und vollautomatischen Prozess findet sich hier.
Für den Umgang und das Handling der Programme gibt es eine Java basierte Software namens ESPlorer. Den Umgang mit diesem Tool fand ich irgendwie sehr fremd.
Dieser Artikel hat mir dabei geholfen. Der NodeMCU Flasher ist relativ einfach zu bedienen und kann wie alle anderen Flasher natürlich auch andere bin Dateien flashen.
Die NodeMCU Firmware formatiert beim ersten Start den FLASH Speicher, so das alle alten Reste entfernt werden.
Mit wenigen Befehlen ins Netzwerk:

wifi.setmode(wifi.STATION)
wifi.sta.config("SSID","Password")
ip = wifi.sta.getip()
print (ip)

Diese Einstellung wird nicht gespeichert, dazu müsste man einen Datei init.lua anlegen. Dies ist ein Init Script welches beim Neustart abgearbeitet wird. Hier finden sich viele Beispiele im Netz.

ESP Easy

Von Let's Control It gibt es die wohl am einfachsten zu bedienende Firmware. In dem verlinkten Wiki Artikel findet man alles, inklusive der Firmware. Die Firmware ZIP Datei enthält auch einen Flashtool, die Datei flash.cmd wird einfach gestartet und fragt drei Parameter ab: COM Port, Speichergröße in MByte und zu flashende Version.
ESP Easy startet eine Webserver, man konfiguriert die Verbindung zum eigene Wlan und nach einem Neustart kann man beginnen.
Achtung:  Bei diesem Flashvorgang werden die Einstellungen für das WLAN nicht überschrieben! Fehlerhafte Konfigurationen kann man damit nicht löschen!
Die Entwicklung dieser Software und auch der Webseite schreiten offenbar sehr dynamisch voran. Falls die Links nicht funktionieren: http://www.letscontrolit.com/ und dann zu ESP Easy scrollen und dort Wiki klicken. Download oder Software Links sucht  man auf der Homepage vergebens.
Mit wenigen Schritten ins Netzwerk:
WLAN mit der SSID ESP_0 suchen (manchmal auch ESP_0xxx)
Browser öffnen falls dies nicht automatisch geschieht, man landet sofort auf auf einer Webkonfigurationsmaske. SSID und Passwort eintragen.
Nach dem Neustart des Moduls kann man sich auf die IP Adresse oder auf http://newdevice verbinden.
Will man das Ganze in den Ursprungszustand versetzen (Reset) dann muss man sich mit einem seriellen Monitor verbinden und "blind" Reset (reset) eintippen. Man darf bei putty ctrl+m ctrl+j (CR LF) nicht vergessen.
Man hat leider kein lokales echo.
Es kann einen Moment dauern, bis der Vorgang mit FLASH:  Erase Sector: ... quittiert wird.
Nach dem Abschluss des Löschens erfolgt ein normaler Boot im AP Modus.

GizWits Firmware

Das sogenannte Witty Modul bringt eine eigene Firmware mit. Hier habe ich ein paar Infos dazu gefunden. diese Firmware ist dafür gedacht sich mit einer App zu verbinden und dann über eine Cloud etwas zu konfigurieren/programmieren. Aus meiner Sicht "witzlos". Das Modul ist offenbar für den chinesischen IoT Markt gedacht. man sieht ein paar Konsolen Ausgaben bei 115200 bps aber bedienen lässt sich nichts. Das Modul spielt selbständig etwas mit seiner RGB LED.

Tipps und Tricks

Firmware flashen

Der Speicher des ESP8266 ist in bestimmte Bereiche aufgeteilt und die Firmware ist auch OTA flashbar. Damit wird beim flashen nicht automatisch alles überschrieben. Also nicht wundern wenn die WIFI Konfiguration noch im Flash steht, obwohl man per USB geflashed hat und gehofft hat damit alles zu überschreiben.

Speichergröße

Zu allen Angaben zu Speichergrößen muss man beachten, dass manchmal von Mbit und manchmal von MByte gesprochen wird. Die kleinsten ESP hatten 4 Mbit= 512kByte Speicher. Der ESP8266 12F hat 32 Mbit=4MByte Speicher. Also nicht fälschlicherweise die Anleitung für 4 Mbit lesen obwohl man 4 MByte hat.

Wiederbelebung

Wen man sich mal "verflashed" hat - hilft die Baudrate der Schnittstelle auf 74880 bps (ich habe auch Angaben zu 76800 bps gefunden) zu stellen.
Dies ist die Baudrate vom "first bootloader".
Offenbar gibt es Situationen wo sich das Programm zum flashen nicht mehr auf eine Baudrate mit dem ESP Baustein einigen kann.

Serielles Terminal

Womit kann man jetzt ganz einfach mal über die COMx Schnittstelle mit dem ESP kommunizieren?
Nicht besonders komfortabel geht es auch über putty. Ich habe das Programm ja ständig beim Wickel als ssh Konsole für meine Himbeeren.
Also bei der Verbindung die serielle Schnittstelle auswählen. Dabei neben der Geschwindigkeit vor allem darauf achten: Flow control auf none zu stellen.
Will am AT Befehle eingeben müssen die mit ctrl+m (CR) und ctrl+j (LF) abgeschlossen werden. Enter würde ctrl+m bringen, ctrl+j müssen man manuell nachlegen.
Das zu automatisieren ist für die Eingabe leider nicht vorgesehen, nur bei der Ausgabe ist das konfigurierbar (Terminal Einstellung).
Als Standardgeschwindigkeit haben alle meine Boards mit 115200 bps gearbeitet.

Treiber

Alle Boards sind mit dem CH340xx Chip ausgestattet. Beim ersten Anstecken an den Windows Rechner wird zwar ein USB2 serial Chip erkannt aber kein Treiber gefunden. Einfach auf dieses Gerät klicken, Treiber aktualisieren ausführen und den vorher lokal entpackten Pfad verweisen.
Die Seite ist in chinesisch, aber den download Button kann man erkennen: http://www.wch.cn/download/CH341SER_ZIP.html

Keine Kommentare:

Kommentar veröffentlichen