Das ESP8266 WiFi-Modul ist ein extrem günstiger eigenständiger SoC mit integriertem TCP / IP-Protokoll, der jedem Mikrocontroller Zugriff auf ein WiFi-Netzwerk geben kann. Damit ist es möglich das bestehende beelogger-System mit WLAN statt Mobilfunk auszustatten. Der ESP8266 wird dazu auf ein Shield aufgesteckt.
Bezug
Es gibt einige ESP8266-Module am Markt. Wir haben uns für das einfachste Modell ESP8266-01S entschieden. Die ESP8266-01S-Version hat im Unterschied zum ESP8266-01 1MB Flash-Speicher (statt 500kB), keine Power-LED (spart Strom) und kommt mit schwarzer Platine (statt blau) daher.
Der ESP-01 ist kompatibel mit beelogger-Universal und beelogger-Solar! |
Vorbereitung des ESP8266-01(S)
Zunächst muss jeder neue ESP8266-01(S) einmalig für die Verwendung im beelogger vorbereitet werden. Die Baudrate muss dauerhaft auf 9600 Baud eingestellt werden.
Dafür verbindet man den ESP8266-01(S) wie unten gezeigt mit dem USB-Seriell-Adapter. Eine Spanungsversorgung kann wegen des Strombedarfs des ESP8266 nicht über den USB-Seriell-Adapter erfolgen. Achtung: Den ESP8266-01(S) nur mit 3,3V betreiben!
Beim beelogger-solar zuerst über den USB-Seriell-Adapter den beeloger-Test-ESP Sketch laden. Dieser schaltet den TPS ein und damit stehen die 3.3V für den nächsten Schritt zur Verfügung.
Für die Verbindung zum USB-Seriell-Adapter werden die beiden Jumper gezogen und Masse, RX und TX mit 3 Dupont/Jumper Female-Female-Kabeln mit dem USB-Seriell_Adapter verbunden.
Shield | USB-Seriell-Adapter |
GND | GND |
RX | TX |
TX | RX |
Dann öffnet man in der Arduino-Software unter Werkzeuge den seriellen Monitor.
Den Wert der Baudraten Einstellung auf “sowohl NL als auch CR” einstellen.
Jetzt die Spannungsversorgung für den beelogger herstellen. Wenn das ESP8266-Modul mit Strom versorgt wird, blinkt die blaue LED einmal kurz auf.
Nach dem Einschalten bzw. einem Reset des beelogger sollte der ESP mit einer wilden Zeichenfolge und einem “ready” antworten. Ist dies nicht der Fall, muss die Baudrate im Monitor geändert werden und erneut ein Reset durchgeführt werden.
Mögliche Baudraten: 115200, 57600 oder 9600…
Ein “AT” senden…der ESP sollte mit “OK” antworten.
Danach ein “AT+GMR” senden. Der ESP8266 zeigt Informationen (Softwareversion) an. Beispiel:
1 2 3 4 |
AT version:1.1.0.0(May 11 2016 18:09:56) SDK version:1.5.4(baaeaebb) compile time:May 20 2016 15:06:44 OK |
Diese Information bitte kopieren und abspeichern für eventuelle Rückfragen.
Es empfiehlt sich mit “AT+RESTORE” den ESP auf Werkseinstellungen zurück zu setzen.
Danach ist die Baudrate meist auf 115200Baud umgestellt.
Die Baudrate muss dauerhaft eingestellt werden: für ältere Firmwareversionen (siehe Beispiel oben): “AT+CIOBAUD=9600” für neuere Firmwareversionen (u.a. ab SDK Version 2.x): “AT+UART_DEF=9600,8,1,0,0“
Dieses Kommando wird nicht durch “OK” quittiert, wenn die Baudrate vorher 57600 oder 115200 Bd war. Nach Eingabe des Befehls ist der ESP8266 dauerhaft auf 9600 Baud eingestellt. Treten hier Fehler auf, so hat die Firmware des ESP8266 möglicherweise einen Stand vor 2016 und ist für den beelogger nicht geeignet. Ein Update ist möglich und wird von Espressif, Hersteller des ESP, beschrieben.
Zur Kontrolle die Baudrate im Monitor auf 9600 Baud stellen und einen Reset am ESP8266 ausführen oder den ESP8266 Aus- und wieder Einschalten. Die “ready” Meldung muss im Monitor erscheinen. Der ESP8266 muss auf Senden von “AT” mit “OK” antworten. Als nächstes muss der ESP8266 in den Station-Modus umgeschaltet werden. Das Kommando “AT+CWMODE_DEF=1” senden. Es erfolgt die Quittung mit “OK“. Danach ist der ESP8266 für den beelogger einsatzbereit.
Hinweis: Bei einer Baudrate von 74880 zeigt der ESP8266 diverse Statusinformationen an.
Beschaltung für das Shield:
Zuerst muss man beachten, dass der ESP8266-01(S) zwingend mit 3.3V versorgt werden muss und RX/TX-Pins ebenfalls maximal 3,3V vertragen. Laut seinem Datenblatt variiert die Stromstärke des ESP8266 abhängig vom Betriebszustand (Empfangen, Tiefschlaf, etc.) und erreicht seinen Höchstwert bei etwa 215 mA. Beim beelogger-solar wird der Strom vom TPS62260 geliefert.
Grundsätzlich sind folgende Verbindungen vorzunehmen.
beelogger-Solar | ESP8266-01(S) |
3,3V | VCC |
GND | GND |
A2 | RST |
D8 | TX |
D9 | RX |
3,3V | CH_PD |
GPIO 0 | |
GPIO 2 |
Beschaltung und Aufbau für den Beelogger-Solar
Es gibt 2 Möglichkeiten (auf 5×7 oder 4×6 Lochrasterplatine) das WLAN-Shield für den beelogger-Solar aufzubauen. Die Anschlüsse sind selbstverständlich gleich. Der ESP8266 sollte so auf dem Shield positioniert werden, dass seine Antenne soweit möglich über das Shield hinaus ragt, damit der Empfang nicht durch das Lochraster der Platine des Shields beeinträchtigt wird.
Die Verbindungen können einfach mit einem (verzinnten) Kupferdraht angelegt werden.
Um ohne Probleme trotz aufgestecktem GSM-Shield den USB-Seriell-Adapter verbinden zu können, sollten bei einer 5×7-Platine die Buchsen für ‘Reset’ und ‘D2’ (‘Taster’) des beelogger-Solar nicht durch das Shield belegt werden. Hierdurch bleibt der FTDI-Header zugänglich und wird nicht von der Lochrasterplatine verdeckt.
Vor dem Verlöten der Pinleisten ist bei der Ausrichtung der Lochrasterplatine darauf zu achten, dass die Schraubklemmen möglichst auf beiden Seiten zugänglich bleiben. Dies erleichtert die Arbeiten am beelogger-Solar.
Auf einer doppelseitigen Platine können die Verbindungen sehr schnell mit Kupferdraht vorgenommen werden. Wichtig dabei ist, dass die Leitungen mit zusätzlichen Lötpunkten fixiert werden, damit es zu keinem Kurzschluss kommen kann.
WLAN-Shield (4×6-Platine):
Libraries
Um die Kommunikation mit dem ESP8266-01S über AT-Befehle zu vereinfachen, wird auf eine Library zurück gegriffen. Diese ist enthalten im beelogger-Library-Paket.
Test-Programmcode
Ein erster Test kann mit dem ESP-Test-Programm durchgeführt werden. Hinweis: Das Setup des ESP mit dem Test-Programm ist wegen der 8MHz-Taktrate des ATMega nicht möglich. Mit dem Test-Programmcode stellt der beelogger über das WLAN-Shield eine Verbindung ins Internet her und überträgt Test-Messwerte an den Webserver. Nach 5 Übertragungen der Messwerte ist der Test beendet und das Modul schaltet sich ab. Sollte es zu einem Übertragungsfehler kommen, wird der Test beendet und das Modul ebenfalls abgeschaltet.
Die Voraussetzung hierfür ist ein über das Internet erreichbarer Webserver mit installierten Webserver-Skripten für den jeweiligen beelogger-Typ. Auch muss der beelogger-solar-Akku noch mindestens eine Spannung von 3.7V zur Verfügung stellen.
Der Vorgang sollte über den Monitor der Arduino-IDE mitverfolgt werden. Zu Anfang des Sketch werden die Firmwareinformationen, verfügbare WLan sowie der Pegel des gewählten Access-Point angezeigt.
Die Kommunikation der beelogger mit dem ESP8266-Modul erfolgt über eine serielle Schnittstelle mittels AT-Befehlen. Da die vom ATmega zur Verfügung gestellte serielle Schnittstelle über D0 und D1 bereits für die Ausgabe des seriellen Monitors benötigt wird, ist eine zusätzliche virtuelle serielle Schnittstelle über die Standard-Library ‘SoftwareSerial’ notwendig. Diese wird über die Lib ‘ESP_beelogger’ über die Pins D8 (RX) und D9 (TX) betrieben.
Die Konfiguration des Programmcodes ist sehr einfach und in wenigen Schritten erledigt:
Zunächst müssen die Daten für das eigene WLAN angegeben werden (bitte in der Routerkonfiguration darauf achten, dass neue Geräte zugelassen sind).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
// Name des WLAN-Zugangspunkts const char Access_Point[] PROGMEM = "WLAN-AccessPoint"; // Passwort des Zugangspunktes const char AP_Passwort[] PROGMEM = "WLAN-dasPasswort"; // Domainname zum Webserver mit beelogger-Skript, Bsp:"meineDomain.de"; const char serverName[] PROGMEM = "community.beelogger.de"; // GET mit Verzeichnis Webserver-Skript und das PHP Skript für den jeweiligen beelogger // Bsp: "GET /mein_ordner/beelogger6/beelogger_log.php?" // Achtung: Stringlänge muss zur Variable "parameter" in send_data_via_wlan() passen // Anzahl Byte: 10 20 30 40 50 const char pfad[] PROGMEM = "GET /der_name/beelogger1/beelogger_log.php?"; // Passwort vom Webserver-Skript const char Passwort[] PROGMEM = "php_passwort"; |
Außerdem kann die Baudrate der seriellen Schnittstelle definiert werden und sollte natürlich mit der Baudrate im seriellen Monitorfenster der Arduino-Shell übereinstimmen.
1 2 |
//------------------------------------- #define Seriell_Baudrate 9600 |
Eine einfache Konfiguration der Daten wird durch die Nutzung unseres Webservers ermöglicht. Nach dem Anlegen eines kostenlosen und annonymen Accounts können die notwendigen Konfigurationen in den Test-Programmcode übernommen werden.
Nach erfolgreichem Aufladen des Sketches erhält man beispielhaft folgende Ausgabe im seriellen Monitor:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
ESP 8266-01 Test Sketch 10.01.2021 ... Abfrage Modul ... i.O. ESP Firmware: AT version:1.3.0.0(Jul 14 2016 18:54:01) SDK version:2.0.0(5a875ba) v1.0.0.3 Mar 13 2018 09:35:47 OK WLAN Information: +CWLAP:("DIRECT-F4-HP OfficeJet 4650",-57) +CWLAP:("beelogger",-69) +CWLAP:("WLAN-510191",-91) +CWLAP:("cisco",-91) +CWLAP:("HP-Print-A6-Officejet Pro 8610",-93) +CWLAP:("Unitymedia WifiSpot",-93) OK Verbinde zum WLAN: beelogger ... WLAN Verbindung OK Verbinde mit Server ... beelogger.de ... connect: OK Uebertrage Daten zum Webserver ... Quittung OK Intervallvorgabe vom Server: 15 Minuten Restart OK ... .. . 26.00 Uebertrage Daten zum Webserver ... Quittung OK Intervallvorgabe vom Server: 15 Minuten Restart OK . . . . 30.00 Test erfolgreich beendet Verbindungen werden getrennt |
ESP8266-Test-Sketch downloaden:
ESP-beelogger-Testprogramm 10.01.2021
Für den Beelogger-Solar-ESP-Sketch gelten die gleichen Einstellungen wie für den ESP8266-Testsketch.
Der komplette Programmcode für den Arduino Datenlogger mit Stockwaage für Imker ist unter Programmcode zu finden.