Die regelmäßigen Leser dieser Serie wissen es: Für mein erstes IoT-Projekt zur Fernsteuerung einer Lampe benötige ich bisher noch einen PC als Relaisstation, der als MQTT-Client Text-Kommandos empfängt und über USB an ein Mikrocontrollerboard weitergibt.

Mittelfristig will ich diesen PC ersetzen, und auf einem Controllerboard selbst einen MQTT-Client zum Laufen bekommen. Eine kleine Minimalbibliothek hatten wir ja schon im letzten Teil ausprobiert, und dabei gelernt, wie einfach zumindest MQTT-Messages zum Veröffentlichen einer Nachricht codiert sind.

Was jetzt noch fehlt ist ein Mikrocontrollersystem, das TCP/IP-Nachrichten versenden und empfangen kann. Viele Projekte setzen im Moment auf WLAN und den einfach beherrschbaren Chip ESP8266, der sich über eine serielle Schnittstelle und textbasierte AT-Kommandos steuern lässt.

Um diesen Chip einmal kennenzulernen, habe ich mir eine einfache Eval-Plattform besorgt, nämlich das Maker Kit IoT von Fabian Kainka, das auch im Elektor-Shop erhältlich ist. Hauptbestandteil des Kits ist das sogenannte Pretzel-Board; darauf befindet sich neben dem ESP8266 auch ein ATmega328-Controller, der mit einem Arduino-Bootloader vorprogrammiert ist. Das UART-Interface des ESP8266 ist an zwei Pins des ATmega328 angeschlossen. Der Hardware-UART des AVR-Controllers ist für die Kommunikation per USB belegt; so dass man einen Software-UART benötigt. Eine kleine Schaltung auf dem Board dient zum Umsetzen der Spannungspegel.

Für erste Experimente genügt es, die Arduino-Entwicklungsumgebung herunterzuladen, und das Pretzel-Board über USB mit dem PC zu verbinden. Obwohl ich kein ausgewiesener Fan der Arduino-IDE und der Arduino-Librarys bin, wollte ich zuerst ebenfalls diesen Weg gehen, um mir nicht zu viel auf einmal vorzunehmen (der Controller auf dem Board ist aber auch über ISP programmierbar, wenn man eine 2x3-Stiftleiste einlötet).

Ich habe mit dem ersten Programm-Beispiel aus dem gedruckten Handbuch angefangen. Wenn das Programm hochgeladen ist (als Board muss man „Arduino Nano“ auswählen), gibt der Controller alle Zeichen, die über USB hereinkommen, direkt an den ESP8266 weiter und umgekehrt. Dann kann man über ein Terminalprogramm auf dem PC direkt mit dem ESP8266 auf dem Pretzel-Board kommunizieren.

Ich nutzte mein Lieblingsterminalprogramm hterm; zuerst probierte ich das Verbinden des Boards mit dem heimischen WLAN aus (Kapitel 1.1). Die AT-Befehle sind recht eingängig und ich konnte mich problemlos in das WLAN meines Home-Office einloggen.

Danach machte ich erste Versuche in Sachen TCP/IP. Ich übersprang dafür den Rest von Kapitel 1 sowie Kapitel 2 (UDP), vollzog aber das erste Beispiel von Kapitel 3 nach. Dabei tut man so, als wäre man ein Web-Browser, indem man von der Website www.example.com per HTTP-GET-Befehl HTML-Code anfordert.

Als Nächstes wollte ich einmal Zeichen innerhalb meines Intranets versenden. Als TCP-Server, der Zeichenketten empfängt und diese darstellt, nutzte ich den selbst programmierten, bereits beschriebenen MQTT-Client mit der TCP-Server-Erweiterung. Nach einem Klick auf „TCP Listen“ lauschte dieser auf Anfragen des TCP-Clients (ESP8266).

Mit

AT+CIPSTART="TCP","192.168.0.15",80
AT+CIPSEND=3

machte ich den ESP8266-Chip bereit, ein Nutz-Zeichen zu verschicken (plus die zwei Zeichen CR+LF, die mein Terminalprogramm an einen zu versendenden Text anhing).

Nach Eingabe und Versenden des Zeichens im Terminalprogramm erschien dieses auch brav im Empfangsfenster des TCP-Servers. Leider beendete der ESP8266 kurz darauf die Verbindung. Das konnte mein TCP-Server (noch) nicht abfangen; so musste ich diesen noch einmal schließen und neu starten sowie abermals auf den Knopf „TCP Listen“ drücken. Immerhin, ein erster Versuch war erfolgreich; und in der nächsten Folge erfahren Sie, wie es weiterging!