Last Updated on 1. April 2022 by sfambach
Mit Hilfe dieser Zusatzplatine kann der Arduino über das WLan kommunizieren. Die Platine hat einen ESP8266 Microcontroller on Board, welcher die Netzwerkkommunikation übernehmen kann. Bei Auslieferung sollte auf dem ESP eine Firmware von AI Thinker aufgespielt sein. Wie man dies herausfindet und vieles Mehr habe ich in diesem Beitrag so kompakt zusammen gefasst.
Im Netzt wird oft bemängelt, dass es anscheinend keine Dokumentation zu dieser Platine gibt. Auch die Herstellerseite war zum Zeitpunkt der Erstellung dieses Beitrages nicht verfügbar. Dennoch gibt es einige Versuche zur Dokumentation, die mir sehr geholfen haben. Alles sind wie immer unter dem Kapitel Quellen gesammelt verlinkt.
Man könnte sich nun fragen warum einen ESP der an sich schon recht leistungsstark ist auf einen Arduino packen der kein Wifi kann. Nun hierfür sprechen die folgenden Argumente:
- Der Arduino kann 5V Peripherie bedienen der ESP direkt nur 3.3V
- Der Arduino hat mehr verwendbare IOs und mehr Ananloge ports
- Es gibt mehr Zusatzplatinen für den Arduino als für den ESP
- Wenn man nur Wifi brauch aber nicht auf ESP Programmierung umsteigen will, bietet dies eine gute Lösung
NACHTRAG: Es gibt mindestens zwei Platinen dieser Art. Das Original, welches keine Probleme machen sollte und das Plagiat welches ich hier beschreibe ;).
Facts
- Arduino Uno/Leonardo kompatible Zusatzplatine.
- Beherbergt einen ESP8266 Wifi-Baustein
- Der ESP8266 ist mit einer nicht näher definierten Firmware geflashed (weiteres später)
- UART des ESPs ist auf 115200 baud eingestellt
Ansichten
So sieht die Platine auf, man erkennt gut den ESP auf der linken Seite der Frontansicht. Seine Anschlüsse sind zusätzlich über Pins herausgeführt, so dass man diese auch nutzen könnte. Unterhalb des ESPs ist dessen serielle Schnittstelle herausgeführt. Rechts neben dieser befindet sich ein Dipschalter (mehr dazu später), gefolgt von einem Resetschalter für den ESP.
Analyse
Ich habe mich entschlossen, da die Dokumenation so sprärlich ist mal ein Analyse Kapitel einzuflechten. Hier beschreibe ich was ich zur Erkundung der Zusatzplatine so gemacht habe.
Dipschalter
Die Belegung der DIPSchalter habe ich im Netz gefunden:
Schalter | Beschreibung |
1/2 | Nur gemeinsam schalten, verbindet den Seriellen Port des Arduino mit dem ESP (Funktioniert nicht bei Plagiat) |
3 | Aktiviert den Bootloader, brücke zwischen Masse und GPIO 0 |
4 | DFÜ LED zeigt die Aktivitäten am Seriellen Port. (Funktion aktuell unbekannt) |
Firmware
Um die Firmware herauszufinden habe ich einen Serial zu USB Adapter an den Debugging-Port gehängt. Den Adapter habe ich von 5V auf 3V umgestellt. ACHTUNG – das Board selbst muss noch mit 5V versorgt werden, hierfür habe ich es auf einen Uno gesteckt und diesen ebenfalls an den USB Port gehängt.
Belegung
Serial – Adapter | Debug Port ESP |
GND | GND |
CTS | – |
VCC | 3V |
TX | RX |
RX | TX |
DTR | – |
So sieht es aus
Konsolen Ausgabe
Arduino Gui auf den richtigen COM Port einstellen, nach öffnen der Konsole die Boud-Rate auf 115200 stellen und dann einmal reset drücken.
Es Handelt sich also um eine AI-Thinker Firmware, hierzu habe ich dann mal Google bemüht, folgenden Seiten haben mir beim Verständnis geholfen.
https://www.electrodragon.com/w/ESP8266_AT-Command_firmware
https://wiki.ai-thinker.com/_media/esp8266/esp8266_series_modules_user_manual_v1.1.pdf
Es handelt sich somit um eine Firmware die mit AT Kommandos, wie die alten Modem, gesteuert wird. Dann lesen wir mal die Version aus, hierzu in der Konsole den folgenden Befehl eingeben:
AT+GMR
Bei mir kam bei allen Befehlen nur ERROR. Ich dachte vielleicht liegts ja am Board, somit mal ein zweites Board probiert. genau das gleich Problem. In Foren bin ich auf den Zeilenumbruch gekommen und habe diesen in der Konsole auf New Line + Carriage Return umgestellt. Danach ging es.
So kann dann auch die Version ausgelesen werden:
Diese ist nicht gerade die neuste, deshalb erstmal updaten. Die aktuelle Version für die AT Firmare kann bei Espressif, dem Hersteller des ESP herunter geladen werden.
https://www.espressif.com/en/products/hardware/esp8266ex/resources
Ich nehme für die aktuelle Version 1.6.2 (1.7 ging bei mir nicht) und schaue mal wie weit ich komme (Direkter Link).
Ein Passende Flash Tool, um die Firmware auf den ESP zu schreiben gibt auch gleich bei Espressif (Direkter Link).
Beim Starten wird gefragt welcher Chip denn programmiert werden soll, ich wähle den ESP8266.
Erst den ESP vorbereiten. Zum ändern der Firmware muss der GPIO 0 mit Masse verbunden werden. Dies kann über den Dipschalter 3 (auf An) geschehen oder über eine Brücke. Nach dem Programmieren die Verbindung wieder trennen.
Jetzt ist etwas Fleiß gefrag:
- Ensprechenden Dateien und die Speicherstelle an die sie geschrieben werden sollen, angeben .
- Einstellungen für den eigenen ESP überprüfen, bitte die Einstellungen im Bild übernehmen und für andere ESPs anpassen.
- COM-Port und Geschwindigkeit wählen
- Programmierung starten.
Gibt es keinen Fortschirtt? Einfach mal den Reset des ESP drücken, dann sollte es klappen.
Mal schauen was die Konsole so hergibt.
ACHTUNG – Die ersten Zeichen des Controllers werden mit 74880 Boud ausgeben, deswegen steht da nur Schrummel. Danach geht es mit 115200 weiter. Bitte die Console auf die 115200 einstellen.
Und Siehe da der AT+GMR Befehl belegt den Erfolg des flaschens.
Kommunikation zwischen ESP und Arduino
Mit Aktivierung des DIP-Schalters 1 und 2 soll die serielle Schnittstelle des Arduino mit dem des ESP Verbunden werden. Das klappt leider bei mir nicht. Selbst wenn die Schalter aus sind lässt sich der Arduino Uno, auf dem die Platine steckt, nicht programmieren. Deshalb gehe ich einen anderen Weg. Ich verbinde den RX/TX Anschluss des ESP mit pin 2/3 des Uno’s:
Die eigentliche Verbindung kappe ich:
Ich habe ein kleine Testprogramm geschrieben welches den Befehl „AT“ über den SoftwareSerial des Arduino an den ESP sendet. Hierbei ist mir aufgefallen, dass es ab und an zu Problemen in der Verbindung kommt. Deshalb habe ich zusätzlich die Übertragungsrate des seriellen Ports per Code auf 9600 herunter gesetzt. Danach konnte ich keine Fehler mehr feststellen.
Die Einstellung ist nur temprorär, Sollte die Kommunikation nicht funktionieren einfach mal den ESP und etwas später den Arduino zurücksetzen. Hier das Programm zum Download:
Programmierung
Bibliotheken
https://github.com/bportaluri/WiFiEsp
Die Bibliothek habe ich dieses mal per Lib Manager installiert, weil das alleinige Kopieren in den Projektordner zu Compiler Fehlern geführt hat, die ich nicht beheben konnte.
Die Einbindung von Bibliotheken im generellen ist unter folgenden Link beschrieben, hier werde ich nicht mehr näher darauf eingehen.
https://fambach.net/arduino-ide#Bibliotheken
Testprogramm
Als Test Beispiel habe ich mir das UdpNTPClient Beispiel genommen. Forab habe ich die Serielle Schnittstelle des ESP permanent auf 9600 Boud gestellt. (Der Code hierzu befindet sich noch in der Setup Funktion)
Als NTP Zeitserver habe ich meine Fritzbox verwendet, da der Server aus dem Beispiel nicht geantwortet hat. Stellt hier euren Internet Router ein oder einen der freien NTP Server aus dem dem folgenden Link.
https://www.pool.ntp.org/de/zone/de
Hier nun noch das Beispiel zum downloaden:
Fazit
Die Zusatzplatine lässt sich nutzen hat jedoch ihre Tücken. Gerade wenn es sich um die Nachbau-China-Platine handelt, gilz rd rin paar Schritte zu beachten. (Das Plagiat erkennt man an der Aufrisft „Moer info $ tech“.) Es gibt ein paar Tips und Kniffe im Internet wie sie dennoch verwendet werden kann. Ich hoffe ich konnte hier eine gute Möglichkeit, ohne zu löten, zeigen.
Die Platine selbst ist sehr günstig und bietet dem Arduino eine WLan Verbindung an.
Verwandte Beiträge
- Arduino Nano 33 BLE
- Arduino Nano 33 IOT
- Preview – Arduino Motor Shield mit L298P
- Preview – Arduino Mega Logger Shield
- Preview – Prototyp Schild für Arduino Mega
- Preview – Arduino Nano Zusatzplatine
- Preview – Arduino Mini ATMEGA328P 328
- Arduino Ethernet Platine W5100
- Arduino VS1053 MP3 Audio Shield mit TF Karte
- Daten Logger Shield V 1.0
Quellen
http://www.rainer-rebhan.de/proj_esp8266.html
https://www.clicks-and-stones.de/2017/11/17/esp-12e-wlan-shield-auf-dem-arduino-uno/
https://www.espruino.com/arduino-esp8266
https://blog.uni-koeln.de/rrzk-knowhow/2017/11/17/esp-12e-wlan-shield-auf-dem-arduino-uno/
https://github.com/bportaluri/WiFiEsp
https://www.electronicshub.org/update-flash-esp8266-firmware/
https://www.espressif.com/en/products/hardware/esp8266ex/resources
Das WLAN- Sheet ist schon sehr tückisch. Aber mit Hilfe dieser Anleitung habe ich das Sheet am laufen bekommen. Das Flashen hat bei mir nicht funktioniert. Trotzdem erhalte ich die Zeit vom Timeserver. Hier ein paar Hinweise, wo meine Versuche dran gescheitert sind:
– Die Anleitung bezieht sich auf dem China- Nachbau. Das Plagiat erkennt man an der Aufrisft „Moer info $ tech“.) (Beim Plagiat sind viele Tipps aus dem Internet nicht verwendbar !)
– Man muß sich exakt an diese Anleitung halten, dann funktioniert das Plagiat ohne Löten ! Das bedeutet keinen Schalter auf ON, TX/RX wie gezeigt nicht ins Ardunino Uno stecken und eine externe serielle Verbindung zwischen den Arduino Port 2/3 auf TX/RX der debug- Schnittstelle.
– Ich habe kein Terminalprogramm gefunden, was mit 115200 Baud arbeitet. Nur das Terminal aus der Arduino IDE wird damit fertig und mit der Änderung der Zeichenende zu \n\r im Arduino Terminalprogramm führte dazu, dass das Modem sogar mit OK antwortete. Aber trotzdem funktionierte das Flashen nicht. Aber WLAN fkt. bei mir auch ohne das Flashen.
Fazit: Toller Beitrag !
Hallo Ludger,
vielen Dank für deinen Kommentar. Putty habe ich unter Windows/Linux schon für 115200 Boude verwendet evtl. müssen die Zeilenumbrüche noch konfiguriert werden. Warum die Programmierung nicht funktioniert ist mir ein Rätsel aber wenn es ohne flashen funktioniert braucht man das auch nicht unbedingt. Verwendest du den ESP/Arduino für deine Eisenbahn, echt beeindruckende Anlage. Bin immer Interessiert Anwendungsbeispiele für Arduinos und Konsorten zu finden.
Gruß
Stefan