Ergänzungs-Set WLAN

Aus Open Source Ecology - Germany
Zur Navigation springen Zur Suche springen

Diese Seite beschreibt ein Ergänzungs-Set des Universal Prototyping Kit mit Komponenten für Datenkommunikation per WLAN (oder WiFi), was auch als Internet-Of-Things (IOT) bezeichnet wird.


Ergänzungs-Set WLAN

Das Set basiert auf dem Baustein ESP8266, der (Stand 2015) noch nicht soo lange auf dem Markt verfügbar ist, aber innerhalb dieser kurzen Zeit eine enorme Verbreitung erfahren hat und sich einer ständig wachsenden fan-Gemeinde erfreut.

Der Grund dafür liegt einerseits in dem sehr niedrigen Preis, ein einfaches ESP8266-Breakout-Board ist bereits für unter 5,-EUR erhältlich, aber andererseits verfügt der Chip auch über beachtliche Leistungsreserven, zB. in punkto Flash-Speicher und Performance, was es erlaubt, in Anwendungen wo nicht viele Pins benötigt werden, auf einen weiteren Mikrocontroller wie Arduino zu verzichten, da dessen Aufgaben mit übernommen werden können. Gleichwohl ist er aber auch geeignet, um innerhalb einer Arduino-Anwendung eine Datenübertragung per WLAN gut und günstig zu ermöglichen.

Ausser dem ESP8266-Modul selbst enthält das Set noch ein paar Adapterplatinen, welche die Tool-Chain abrunden und ggflls. auch eine 3.3V-Stromversorgung bieten. Sie sind hilfreich zum Flashen der Firmware oder zum programmieren von LUA-Script-Anwendungen. Wobei letzteres schon darauf hinweist, das hier als Firmware "NodeMCU" favorisiert wird, eine Firmware, welche die Eingansg beschriebenen Features optimal ausnutzt, aber oftmals separat aufgespielt werden muss, da ESP8266-Module ab Hersteller meist mit einer anderen Firmware die auf den klassischen "AT-Befehlen" basiert, vorinstalliert sind.

Komponenten

ESP-01, ESP8266-Modul bzw. ESP8266-Breakout-Board

Es gibt eine Vielzahl von ESP8266-Modulen [1],


von denen wir das ESP-01-Modul bevorzugen, weil es mit Abstand das günstigste ist und andererseits für die meisten Anwendungsfälle ausreichend ist.

Datenblatt


Aus Wikipedia:

"Der ESP8266 ist ein Ultra-low-Power-32-Bit-Mikrocontroller der chinesischen Firma espressif. Der 32-Bit-Prozessorkern vom Typ Xtensa LX106 von Tensilica arbeitet mit einem Systemtakt von 80–160 MHz, hat 64 kB RAM als Befehlspeicher, in den mehrere MB Flash-Speicher eingeblendet werden können [1], sowie 96 kB RAM als Datenspeicher, eine SPI-Schnittstelle für Flash-Speichererweiterungen (bis zu 128 MBit) und integriertes WLAN IEEE 802.11 b/g/n. Der ESP8266 ermöglicht den Aufbau von stromsparenden WLAN-Sensoren für Anwendungen im Bereich Internet der Dinge.

Der Mikrocontroller ist auch zusammen mit einer Minimalbeschaltung aus Quarz und Flash-Speicher in Form verschiedener Module zum direkten Einsatz erhältlich. Je nach Modul sind bis zu 12 I/O-Ports, eine I²C-Schnittstelle, eine I²S-Schnittstelle, eine SPI-Schnittstelle, eine asynchrone serielle Schnittstelle und ein 10-bit Analog-Digital-Umsetzer herausgeführt. Alle I/Os werden mit 3,3 V betrieben und sind nicht 5 V-tolerant."

Firmware-Varianten:

1. Lua-basierte interaktive Programmierung (NodeMCU)

2. AT-Command für die Nutzung als Seriell-zu-WLAN-Schnittstelle (meist herstellerseitig vorinstalliert)



Adapterplatine für Bread-Boards

Wenn man das ESP-01-Modul auf einem Breadboard verwenden möchte, dann gibt es ein kleines Problem: Die Stiftreihen sind zu eng für den Spalt in der Mitte des Breadboards.

Um diesen Mangel zu beheben, empfiehlt es sich, einen kleinen Adapter auf Lochraster-Platine zu löten, das ist in 5 Minuten erledigt, aber der Nutzen fürderhin ist enorm.



USB-Programmer und Flasher, FTDI-Adapter

Um auf den ESP8266 eine neue Firmware flashen und diesen programmieren zu können benötigt man ein FTDI-Breakout-Board. Ausserdem muss zwischen dem "Firmware-Flash"-Modus und dem "Normalen" programmier-Modus unterschieden werden. Bei ersterem muss der Pin GPIO0 mit GND verbunden werden, bei letzterem aber mit VCC.

Die vorliegende Adapter-Platine beinhaltet beide Möglichkeiten: Durch einfaches umstecken eines Jumpers kann zwischen beiden Modi hin- und her geschaltet werden, wobei das Firmware-flashen etwas ist, was man eher selten benötigt, meist benutzt den Adapter im Programmier-Modus.

Der Adapter kann auf Lochrasterplatine gelötet werden.



Material-Liste :

- 1 Stück Lochraster-Platine mit 7x10 Löchern

- 1 6-fach Stiftleiste

- 2 2-fach Stiftleiste

- 2 4-fach Buchsenleiste (oder eine doppelreihige 4-fach Buchsenleiste)

- 1 Jumper

- etwas Kabel

- 1 FTDI-Breakout-Board mit ausreichender Stromversorgung für das ESP-01-Modul; getestet und empfohlen ist zB. dieses hier: [2]


Serial Adapter

t.b.c. ...



Standalone-Sensor/Actor

Der ESP8266 kann als WLAN-Erweiterung für zB. einen Arduino verwendet werden. Da er aber einen recht leistungsfähigen Chip hat kann er auch, sofern nicht viele Pins benötigt werden, auch als Standalone-Modul eingesetzt werden, welches direkt mit einem Sensor, wie zB. einem DS18B20-Temperatursensor oder einem Aktor, wie zB. einem Relais verbunden ist und über WLAN die Daten weiterreicht.

Beim ESP-01-Modul sind zwei Pins verfügbar (also geht auch 2 Sensoren, oder zwei Relais, oder ein Sensor und ein Relais), darunter auch ein ADC-Eingang. Wenn man mehr Pins braucht sollte man sich mal andere ESP-Module anschauen. (Wenn man noch mehr Pins braucht, dann kann man auch direkt einen Arduino verwenden, wie zB. den Arduino-Nano)

Hier wird eine Minimal-Version gezeigt, bei der die Strom-Versorgung über eine Batterie erfolgt. Die hält nicht sehr lang, für kurze Messungen bis zu 36 Stunden ist sie aber ausreichend. Weitaus längere Laufzeiten kann man durch spezielle Programmierung erzielen, bei welcher der ESP8266 zwischendurch in einen DeepSleep-Modus versetzt wird.

Oder man erweitert die Schaltung um eine 3.3V-Stromversorgung, zB. mittels eines LM1117, damit kann sie auch an einem Steckernetzteil betrieben werden. (Sieh dazu auch etwas weiter unten die Arduino-Adapter, welche eine solche Stromversorgung integriert haben und aus der Arduino-5V-Spannung mit versorgt werden.)

ToDo: Materialliste

t.b.c. ...




Arduino-Mega Adapter

Mehr Details dazu siehe TempCTRL


Todo: Schaltplan, Materialliste t.b.c. ...




Arduino-Nano Adapter

t.b.c. ...



Firmware NodeMCU flashen unter Windows

1. download von blank512k.bin von Github: https://raw.githubusercontent.com/iotcafe/nodemcu-firmware-lua5.3.0/master/pre_build/0.9.4/512k-flash/blank512k.bin


2. download der NodeMCU-Firmware von Github: https://github.com/nodemcu/nodemcu-firmware/releases/download/0.9.6-dev_20150704/nodemcu_float_0.9.6-dev_20150704.bin


3. download des flasher-Tools für Windows "NodeMCU-Flasher":

Für Windows32: https://github.com/nodemcu/nodemcu-flasher/raw/master/Win32/Release/ESP8266Flasher.exe

Für Windows64: https://github.com/nodemcu/nodemcu-flasher/raw/master/Win64/Release/ESP8266Flasher.exe



4. Das ESP-01-Modul mit dem FTDI-Breakout-Board so verbinden, dass Pin GPIO0 mit GND verbunden ist, nach folgendem Schema:

http://randomnerdtutorials.com/flashing-nodemcu-firmware-on-the-esp8266-using-windows/

Die Verbindung mit GND versetzt das Board in den "Firmware-Aufspiel-Modus". (Das ist nicht zu verwechseln mit dem normalen Programmier-Modus, in dem man LUA-Scripte einspielt, da muss die GND-Verbindung wieder getrennt sein.)

Falls es Probleme gibt, empfiehlt sich ein Blick in den folgenden Trouble-Shooting-Guide: http://randomnerdtutorials.com/esp8266-troubleshooting-guide/

Achtung: bei Timeout-Problem siehe die Kommentare unter [3]

"The problem was that I was using a cheap USB-serial converter to power the module. The solution: I power the ESP module with an external 3.3V regulator but I have mantained the the Rx/TX connections of the USB/Serial with the ESP."

Wahrscheinlich ist die Stromversorgung des FTDI-Breakout-Boards zu schwach um das ESP-01-Modul mit zu versorgen, d.h., letzteres sollte separat mit 3.3V versorgt werden.

Ein FTDI-Breakout-Board mit ausreichender Stromversorgung ist erhältlich bei Watterott unter http://www.watterott.com/de/FTDI-Breakout-Reloaded-V11, ich habe es damit selbst getestet.



5. Aufspielen der Node-MCU-Firmware:

Für die Benutzung des NodeMCU-Flasher-Software siehe dessen GitHub-Repository, unter https://github.com/nodemcu/nodemcu-flasher .

Um den Speicher des ESP-01 völlig leer zu machen, muss als erstes die Datei "blank512k.bin" aufgespielt werden. Gleich danach wird die eigentliche Firmware-Datei "nodemcu_float_0.9.6-dev_20150704.bin" aufgespielt.



6. Damit ist des ESP-01 in betriebsbereitem Zustand und die alte AT-Firmware wurde durch die neue NodeMCU-Firmware ersetzt. Ab jetzt kann alles weitere, d.h., das aufspielen der eigentlichen Programme (auch "LUA-Scripte" genannt) mit einem Programm namens ESPlorer sehr bequem und komfortabel über USB-Kabel erfolgen, ähnlich wie man Sketche beim Arduino einspielt.

Den ESPlorer kann man hier downloaden: https://github.com/4refr0nt/ESPlorer

Ein Tutorial über die Benutzung der ESPlorer-IDE kann man hier als PDF downloaden:

http://esp8266.ru/download/esp8266-doc/Getting%20Started%20with%20the%20ESPlorer%20IDE%20-%20Rui%20Santos.pdf

Achtung: Anders als beim Flashen der Firmware muss für den "normalen" Programmier-Modus diesmal der Pin GPIO0 *NICHT* mit GND verbunden sein, sondern mit VCC. Siehe dazu auch im obigen PDF die Abbildung des Schemas auf Seite 11.

Firmware NodeMCU flashen unter Linux

t.b.c. ...


Links

Referenz Beschreibung
[4] Anleitung zur ESP8266-Nutzung mit AT-Firmware
[5] ESP8266-Dossier auf Mikrocontroller.net
[6] Anleitung zum ESPlorer
[7] getting-Started-Tutorial (AT-Firmware)
[8] Tutorial zur Nutzung der Arduino-Entwicklungsumgebung
[9] Firmware unter Windows aufspielen mit NodeMCU-Flasher
[10] Firmware unter Windows aufspielen mit NodeMCU-Flasher, Troubleshooting
[11] instructables TempLogger mit ThingSpeak-Anbindung
[12] ESP8266 als Standalone-Variante unter Arduino-IDE
[13] Sehr gutes ESP-01 Programmer Board mit allen Finessen
[14] Blogartikel bezügl. Arduino Toolchain sowie Deepsleep und Batteriebetrieb