De vaste lezers van deze serie weten het: voor mijn eerste IoT-project voor het op afstand bedienen van een lamp heb ik tot nu toe nog een PC nodig als relaisstation. Die ontvangt tekstcommando’s als MQTT-client en geeft die via USB door aan een microcontrollerkaart.

Op den duur wil ik die PC vervangen door een controllerkaart die zelf een MQTT-client kan draaien. We hebben in het vorige deel al een kleine bibliotheek uitgeprobeerd, en daarbij hebben we geleerd hoe simpel MQTT-berichten voor het publiceren van gegevens zijn opgebouwd.

Wat nu nog ontbreekt is een microcontrollersysteem dat TCP /IP-berichten kan verzenden en ontvangen. Veel projecten maken tegenwoordig gebruik van WLAN en de gemakkelijk te gebruiken chip ESP 8266, die we kunnen besturen via een seriële interface en op tekst gebaseerde AT-commando’s.

Om deze chip eerst eens te leren kennen, heb ik een eenvoudig evaluatieplatform aangeschaft, namelijk de Maker Kit IoT van Fabian Kainka, die ook in de Elektor-shop verkrijgbaar is. Het belangrijkste onderdeel van de kit is het zogenaamde Pretzel-Board: daarop bevindt zich naast de ESP 8266 ook een ATmega328-controller die is voorzien van een Arduino-bootloader. De UART-interface van de ESP 8266 is verbonden met twee pennen van de ATmega328. De hardware-UART van de AVR -controller is gereserveerd voor de communicatie via USB , dus we hebben een software-UART nodig. Een kleine schakeling op de kaart verzorgt het aanpassen van de spanningsniveaus.

Voor de eerste experimenten is het voldoende om de Arduino-ontwikkelomgeving te downloaden en de Pretzel-kaart via USB met de PC te verbinden. Hoewel ik geen uitgesproken fan ben van de Arduino-IDE en de Arduino-library’s, wilde ik die om te beginnen toch gebruiken, om me niet te veel problemen tegelijk op de hals te halen (de controller op de kaart is ook te programmeren via ISP , als we een 2x3-header insolderen).

Ik ben begonnen met het eerste voorbeeldprogramma uit het handboek. Als het programma is geüpload (kies als board de „Arduino Nano“), geeft de controller alle tekens die via USB binnenkomen rechtstreeks door aan de ESP 8266 en omgekeerd. Dan kunnen we via een terminalprogramma op de PC rechtstreeks communiceren met de ESP 8266 op het Pretzel-Board.

Ik gebruikte daarvoor mijn favoriete terminalprogramma hterm. Om te beginnen probeerde ik het verbinden van de kaart met het WLAN-netwerk in huis uit (hoofdstuk 1.1). De AT-commando’s zijn heel gemakkelijk en ik kon probleemloos inloggen in het WLAN van mijn kantoor aan huis.

Daarna begon ik met pogingen om TCP /IP te gebruiken. Ik sloeg de rest van hoofdstuk 1 en heel hoofdstuk 2 (UDP) over, maar ik probeerde wel het eerste voorbeeld van hoofdstuk 3. Daarbij doen we alsof we een webbrowser zijn, waarmee we HTML-code opvragen van de website www.example.com met het HTTP- GET -commando.


Daarna wilde ik tekens verzenden binnen mijn intranet. Als TCP -server, die tekenreeksen ontvangt en weergeeft, gebruikte ik mijn zelf geprogrammeerde, eerder beschreven MQTT-client met de TCP -server-uitbreiding. Na een klik op „ TCP  listen“ luisterde deze naar aanvragen van de TCP -client ( ESP 8266).

Met

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


bereidde ik de ESP 8266-chip voor om een teken (plus de twee tekens CR+LF, die mijn terminalprogramma achter een te verzenden tekst hangt) te verzenden.

Na het invoeren en verzenden van het teken in het terminalprogramma kwam het ook keurig tevoorschijn in het ontvangstvenster van de TCP -server. Helaas beëindigde de ESP 8266 kort daarna de verbinding. Dat kon mijn TCP -server (nog) niet opvangen, dus moest ik hem afsluiten en opnieuw starten en opnieuw op de knop „ TCP  listen“ drukken. Hoe dan ook, het eerste experiment was geslaagd. In de volgende aflevering kunt u lezen hoe het verder ging!