Arduino ESP8266 Zusatzplatine

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:

SchalterBeschreibung
1/2Nur gemeinsam schalten, verbindet den
Seriellen Port des Arduino mit dem ESP
(Funktioniert nicht bei Plagiat)
3Aktiviert den Bootloader, brücke
zwischen Masse und GPIO 0
4DFÜ 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 – AdapterDebug Port ESP
GNDGND
CTS
VCC3V
TXRX
RXTX
DTR

So sieht es aus

Arduino + ESP8266 Platine + USB/Serial

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.

Konsolenausgabe ESP Chip

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.

Konifguration der Arduino Konsole mit CR und LF

So kann dann auch die Version ausgelesen werden:

Konsolenausgabe der Version

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.

Wahl des richtigen Controllers

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.

Verbindung zwischen Masse und GPIO 0 via Kabel

Jetzt ist etwas Fleiß gefrag:

  1. Ensprechenden Dateien und die Speicherstelle an die sie geschrieben werden sollen, angeben .
  2. Einstellungen für den eigenen ESP überprüfen, bitte die Einstellungen im Bild übernehmen und für andere ESPs anpassen.
  3. COM-Port und Geschwindigkeit wählen
  4. Programmierung starten.

Gibt es keinen Fortschirtt? Einfach mal den Reset des ESP drücken, dann sollte es klappen.

Start Fortschritt bei der Programmierung
Programmierung war erfolgreich

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.

Konsole nach dem Flashen

Und Siehe da der AT+GMR Befehl belegt den Erfolg des flaschens.

AT+GMR Befehl zum Abfragen der Version

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:

Verbindung Pin 2/3 Arduino Uno mit TX/RX Pin ESP8266
Verbindung Pin 2/3 Arduino Uno mit TX/RX Pin ESP8266

Die eigentliche Verbindung kappe ich:

Gekappte RX/TX Verbindung
Gekappte RX/TX Verbindung

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.
http://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

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://arduino.stackexchange.com/questions/24919/how-to-connect-wi-fi-shield-esp-12e-esp8266-uart-wifi-wireless-shield-with-ardui

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

https://www.az-delivery.de/blogs/azdelivery-blog-fur-arduino-und-raspberry-pi/firmware-flashen-esp8622-01s?ls=de&cache=false

https://arduino.stackexchange.com/questions/24919/how-to-connect-wi-fi-shield-esp-12e-esp8266-uart-wifi-wireless-shield-with-ardui

http://stefanfrings.de/esp8266/

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.