Moderne Mikroprozessor-Boards, die beispielsweise mit dem ESP32 oder dem ESP8266 bestückt sind, bieten viel Leistung für wenig Geld und einen hohen Programmierkomfort, etwa in der Arduino-IDE. Besonders interessant ist die Over-the-Air-Funktion (OTA). Sie ermöglicht es, über WLAN sowohl Programmupdates als auch Daten bequem über einen Bootloader aufzuspielen, ohne das Board an den USB eines PCs oder Laptops anzuschließen. Um aber serielle Daten (etwa Debugging-Infos) drahtlos zu übertragen, braucht man eine andere Lösung.

Besonders IoT-Geräte, die „im Feld” arbeiten und nicht so leicht zugänglich sind, profitieren von drahtlosen Firmware-Updates. Ein gutes Tutorial zu Over-the-Air-Updates über die Arduino-IDE findet man unter [1]. Ein Manko hat diese Methode jedoch: Der Serielle Monitor wird nicht unterstützt, so dass Ausgaben und Debugging-Informationen nicht übertragen werden können.

Bei meinem letzten Projekt, einer auf dem ESP32 basierenden Gießanlage, gab es ein Problem mit einem nicht richtig funktionierenden Sensor. Statt nun ein USB-Kabel quer über die Terrasse in mein Wohnzimmer zu meinem Computer zu verlegen, machte ich mich auf die Suche nach einer drahtlosen Lösung. Doch trotz intensiver Suche fand ich keinen fertigen Baustein, der meine Ansprüche befriedigen konnte, so dass ich mich entschloss, eine eigene Lösung zu entwickeln. Dazu fiel mir ein, dass es früher Systeme gab, die eine drahtlose Übertragung der seriellen Schnittstelle ermöglichten; und tatsächlich wurde ich in China rasch fündig. Das Wireless UART-RS232 long distance Set bietet Übertragungsraten bis zu 115.200 Baud mit Konfigurationsmöglichkeit und eine Reichweite bis zu 1 km. Bei einem Preis von 40 € für das Sende- und Empfangspaar rechnete ich mir ein gutes Preis/Leistungsverhältnis für mein Projekt aus.
 

USB-Host-Adapter

Weitaus schwieriger gestaltete sich die Auswahl eines USB/Seriell-Wandlers. Zwar bestand die Möglichkeit, die serielle Schnittstelle aus dem Gießgerät herauszuführen und direkt an das Übertragungssystem anzuschließen, aber ich wollte eine universelle Lösung finden, die an USB-Anschlüssen unterschiedlicher Boards funktioniert. Hierzu benötigt man einen sogenannten „USB-Host-Adapter“, der wie ein PC die jeweilige USB-Schnittstelle unterstützt. Zuerst stieß ich bei meiner Internetrecherche auf „USB-Host Shields“ für den Arduino, siehe [3] und [4]. Ich entschied mich wegen der raschen Lieferung für das Modul aus Deutschland, das wenige Tage später auf meinem Schreibtisch lag. Doch ich stieß gleich auf das nächste Problem: Unterschiedliche Boards verwenden unterschiedliche USB-Chips; die ESP32-Boards zum Beispiel den CP210x oder Chips von FTDI, Arduino-Boards den eigenen Atmel-Controller oder ebenfalls FTDI-Chips. Leider unterstützen die Bibliotheken für das Arduino-USB-Host-Shield nur jeweils einen Chiptyp. Das heißt, man müsste die Software konfigurierbar machen und immer genau wissen, welcher USB-Chip auf dem verwendeten Board sitzt – weit entfernt von einer Plug-and-Play Lösung! Schließlich wurde ich dann doch in einem kleinen Shop in England fündig (Bild 1).

The USB host board.
Bild 1. Ein kleines aber feines USB-Host-Board (Quelle: www.hobbytronics.co.uk).

Interessant an diesem Board ist vor allem, dass es für die verschiedensten Anwendungen wie Flash-Memory-Stick, USB-Keyboard, USB-Joystick, USB-Maus, PS3- und PS4-Dual-Shock-Controller, Serial-Driver für FTDI, CP210X, PL2303, CH340/1 und CDC, MIDI-Gerät und USB-Modem verschiedene kostenlose Firmware-Anwendungen gibt. Bei der Bestellung kann man die gewünschte Firmware gleich mit angeben. Für meine Anwendung ist die Firmware für USB Host - Serial Driver for FTDI, CP210X, PL2303, CH340/1 and CDC genau richtig, die alle relevanten USB-Chips unterstützt.

Für die Programmierung und Konfiguration des Wireless-UART-RS232-Moduls beziehungsweise des USB-Host-Boards benötigt man noch mindestens einen USB-nach-Seriell-Umsetzer, den man entweder vom gleichen Hersteller des Wireless-UART-RS232-Moduls bezieht oder beispielsweise von Logilink in vielen einschlägigen Geschäften findet. Für mein Projekt benötigte ich dann nur noch zwei RS232-Pegelwandler. Hier fiel die leichte Wahl auf den guten alten MAX232.
 

Einstellungssache

Bei der Bestellung des Wireless UART-RS232 long distance Sets war mir noch nicht klar, wie diese Module eigentlich zu konfigurieren seien. Als die Module aus China endlich auf meinem Labortisch lagen, stellte sich zunächst erst einmal Frust ein: Keinerlei Bedienungsanleitung oder sonstige Hinweise waren der Hardware beigefügt. So schrieb ich den Verkäufer an und schon nächsten Tag bekam ich per E-Mail die Software sowie ein Handbuch und ein Konfigurationsvideo. Zuerst befreite ich die Module aus den Plastikgehäusen, lötete an J2 (zwischen den Bohrungen hinter dem RS232-Verbinder) eine Stiftleiste und steckte nach der beigefügten Anleitung einen Jumper auf die Stifte. Dann verband ich das Modul über den USB/Seriell-Adapter mit dem PC. Über ein Mini-USB-Kabel wird das Modul von einer 5-V-Stromversorgung (zum Beispiel einem USB-Steckernetzteil) mit Energie versorgt (Bild 2).

Wireless UART-RS232 long-distance modules need to be configured. Monitor and Debug Over the Air (OTA)
Bild 2. Die Wireless UART-RS232 long distance Module werden konfiguriert. Im Bild kann man den gesteckten Jumper sowie die leuchtende grüne und rote LED erkennen.

Leuchten dann die beiden LEDs, kann man das Programm HY-TRP Setting GUI.exe starten und dort den korrekten COM-Port sowie die Default-Baudrate auf 9.600 einstellen. Danach drückt man auf den Button Open COM und liest mit Read All Setting alle Werte aus. Danach werden die Werte wie in Bild 3 gezeigt eingestellt.

Configuration for the Wireless UART-RS232 long-distance module.
Bild 3. Empfohlene Konfiguration für das Wireless UART-RS232 long distance Modul.

Weitere Details können dem Handbuch entnommen werden. Noch ein Hinweis: Ich habe zunächst eine Übertragungsrate von 115.200 Baud eingestellt, aber erfahren, dass die Übertragung mit der halben Bitrate von 57.600 Bd stabiler und zuverlässiger ist, da das Wireless UART-RS232 long distance Modul dann nicht ständig am Limit arbeiten muss. Das USB-Host-Board verfügt über einen Buffer, der die unterschiedlichen Übertragungsraten ausgleicht. Beide Module werden gleich eingestellt! Danach darf man nicht vergessen, die Jumper zu entfernen.

Konfigurierung des USB-Host-Boards 

Für die Programmierung des USB-Host-Boards mit der korrekten Firmware sei auf die Beschreibung verwiesen. Dort steht ein eigenes Programm zum Download bereit, mit dem das Board geflasht werden kann. Unter [6] kann die korrekte Firmware auf das Board geladen werden, und dort findet man auch eine Beschreibung der Parameter der Kommandoschnittstelle. Für die Konfiguration muss das USB-Host-Board noch – wie in Bild 4 gezeigt – mit dem Pegelwandler-Platinchen verbunden werden. An den RS232-TTL-Adapter schließt man den RS232-zu-USB-Konverter an, der wiederum über ein USB-Kabel mit dem PC verbunden wird. Die Schaltung muss dann nur noch an eine stabile 5-V-Versorgung angeschlossen werden.
 

USB host board, Monitor and Debug OTA article.
Bild 4. Verschaltung des USB-Host-Boards zur Konfiguration.

Danach startet man ein Terminalprogram (hier beispielsweise Hterm), wählt dort den korrekten USB-Port aus und stellt die Baudrate auf den Defaultwert von 9.600 Baud ein. Mit Connect links oben verbindet man sich mit dem USB-Host-Board. Rechts oben werden Newline at und weiter unten Send on Enter auf CR+LF umgestellt. Gibt man jetzt HELP im Eingabefeld von Input Control ein, sollten wie in Bild 5 gezeigt die aktuellen Parameter aufgelistet werden

 Configuring the USB host board using Hterm. Monitor and Debug Over the Air (OTA)
Bild 5. Konfiguration des USB-Host-Boards über Hterm

Im Eingabefeld von Input Control werden nun die Parameter für unsere Anwendung modifiziert. Zunächst stellt man mit dem Befehl BAUD 57600 die Baudrate um, die mit der eingestellten Baudrate des Wireless UART Systems übereinstimmen muss. Unterbricht und verbindet man das Terminal wieder mit dem System (Disconnect-Connect), sollte man mit HELP die Kommunikation mit dem USB-Host-Board überprüfen können.

Mit dem Befehl USBBAUD 115200 wird die USB-Baudrate auf 115.200 eingestellt. Dies bedeutet, dass die serielle Schnittstelle des angeschlossenen Arduino/ESP32/ESP8266-Boards in der Arduino-IDE immer mit dem Befehl Serial.begin(115200); konfiguriert werden muss. Ich habe diese hohe Baudrate gewählt, damit die seriellen Daten die Abarbeitung des eigentlichen Programms nicht zu lange verzögern.

Einstellungen für USBPARITY, INTERFACE, TIMEOUT, USB, RTSCTS, PORT und RS232 bleiben unangetastet. Mit dem Befehl GROUP 0 wird der Wert neu gesetzt. Tabelle 1 zeigt zusammengefasst die korrekten Werte. Damit ist die Konfiguration abgeschlossen.
 

​ Tabelle 1. Parametereinstellungen in HTerm.
BAUD 57600
USBBAUD 115200
USBPARITY 8N1
INTERFACE 0
TIMEOUT 5ms
USB 5ms
GROUP 0
RTSCTS 0
PORT 1
RS232 0
 


Verdrahtung 

Bevor Sender (Seite des IoT-Boards im Feld) und Empfänger (Seite des PCs) fertig für den Betrieb verdrahtet werden können, werden noch auf den Wireless UART-RS232 long distance Modulen die Buchse für die Stromversorgung (neben der USB-Buchse) entfernt, damit sind die Pads zugänglich.

Auf der Sender-Seite wird die Mini-USB-Buchse des USB-Host-Boards als Stromversorgung genutzt. Bild 6 zeigt die korrekte Verdrahtung des Senders. Für die Verbindung des Wireless UART-RS232 long distance Moduls mit dem RS232/TTL-Adapter bastelt man sich ein kurzes Kabel mit zwei männlichen SUBD-9-Verbindern. Pin 2 und Pin 3 sind wie im Bild sichtbar gekreuzt.

Remote transmitter wiring
Bild 6. Verdrahtung des Senders (Seite des IoT-Boards). Das grüne Board ist das Wireless-Modul. Unten rechts wird das zu untersuchende IoT-Board über USB angeschlossen.

Für den Empfänger wird als RS232/USB-Konverter das kompakte Modul aus verwendet und wie in Bild 7 verschaltet. An den RS232/USB-Konverter des Empfängers wird ein USB-Verlängerungskabel angeschlossen, damit der Empfänger vom PC abgesetzt anschlossen werden kann

Receiver station wiring
Bild 7. Verdrahtung des Empfängers. Unten rechts wird der PC über ein USB-Verlängerungskabel angeschlossen.

Schließlich werden Sender und Empfänger in zwei passende kleine Gehäuse eingebaut. Die Tests meines OTA-Systems ergaben eine problemlose Übertragung über zwei Stockwerke mit Stahlbetondecken. Viel Spaß beim Nachbau!
 

Gebrauchsanleitung für den praktischen Einsatz 

Konfiguration der seriellen Schnittstelle des eingesetzten (IoT-)Boards auf 115.200 Baud mit der Zeile Serial.begin(115200); in der Arduino-IDE. Nach Übertragung des Programms auf das eingesetzte Board Versorgung des Senders mit 5 V über die Mini-USB-Buchse des Wireless UART-RS232 long distance Moduls und Anstecken des eingesetzten Boards über ein passendes USB-Kabel. Anstecken des Empfängers an den PC an eine freie USB-Buchse. Der Empfänger wird vom PC aus mit Strom versorgt. Start der Arduino-IDE, Auswahl eines beliebigen Boards, Auswahl der USB-Schnittstelle des Empfängers und Start des Seriellen Monitors. Und schon sollten dort die vom Board gesendeten Daten sichtbar werden.
 

Sie haben Fragen oder Kommentare?

Haben Sie technische Fragen oder Kommentare? Bitte wenden Sie sich per E-Mail  an den Autor unter peter.tschulik@chello.at oder an die Elektor-Redaktion unter redaktion@elektor.de