Sonntag, 23. Februar 2020

nix wia bresln mit dem Brezlbrett

(für nicht-österreichische bzw. nicht-ost-österreichische Leser: "nix wia bresln" heißt so viel wie "nichts als Schwierigkeiten" (Bresln = Brösel = Krümel))
Und warum Brezlbrett? Weiß ich auch nicht. Wir kommen gleich dazu.

Das ist ein vorwiegend technischer Artikel über die Programmierung des Tello.
Wer sich nur für das fliegen und fotografieren/filmen mit Quadrocoptern interessiert, findet die relevanten Artikel hier

Die Steuerung des Tello mit Arduino und PC funktioniert gut und war ein Spaß zu bauen. Aber in Gedanken war ich, wie ich bereits angedeutet habe, schon weiter.

Statt den PC herum zu schleppen könnte der Arduino direkt mit dem Tello kommunizieren. Dazu gibt es einen Arduino mit eingebautem WLAN-Modul, also genau das richtige für mein Vorhaben. Es handelt sich um einen Nano-kompatiblen Mikroprozessor mit einem ESP 8266 Modul das für die Kommunikation sorgt. Das ganze nennt sich NanoESP oder  "Pretzelboard". Fragt mich nicht woher der zweite Name kommt.

NanoESP ist nicht viel größer als ein Nano alleine. Tello kann ja an seinem Ladestecker 5V liefern (dazu braucht man ein OTG-fähiges USB-Kabel). Dann könnte das Pretzelboard ja mitfliegen und z.B. mit einem Distanz-Sensor (Laser. Ultraschall,...) Kollisionen vermeiden.

Wie sieht die Spannung aus, ist sie stabil, kann man ihr einen Prozessor anvertrauen? Interessanterweise wird die Spannung erst nach dem Selbsttest eingeschaltet, und dann in zwei Stufen. Dies zeigt das folgende Oszilloskop-Bild:


(übrigens ein screenshot vom Raspberry Pi 4, auf dem die Oszlloskop-Software läuft)

Aber erst einmal das Pretzelboard in Betrieb nehmen. Ich habe schon länger eines herum liegen. Ich habe einen Webserver damit realisiert. Mit CGI-Funktionen konnte der Server auf Benutzer-Eingaben reagieren. Ich wollte es verwenden um Reglerparameter für ein autonom fahrendes Segelboot einstellen zu können ohne den PC per Kabel mit dem Boot verbinden zu müssen. Die Kommunikation hat gut funktioniert, aber ich war bald mit dem Speicherplatz zu ende. Ein Micro-SD Kartenleser der Abhilfe hätte schaffen sollen hat aber nicht gut funktioniert sodass das Projekt ins Stocken geraten ist.

OK, TCP/IP geht, UDP sollte ein Kinderspiel sein. Sollte man meinen.

Zuerst einmal kryptische Compilerfehler. Die Ursache: Ich habe zwei ähnliche libraries auf meinem Rechner gehabt die das gleiche h-file beinhaltet haben. Das sollte der Compiler zwar bemerken, hat es aber nicht. Gut, ich habe es bemerkt. Eine library löschen.

Der ESP 8266 wird über AT-Kommandos angesprochen, die der Nano per Software-Serial an den ESP schickt. Ein simples sketch verbindet den PC mit dem ESP indem er die Kommandos durchreicht. Ein typischer Kommunikationsvorgang kann so aussehen:

AT+RST
OK

Das sollte den ESP resettieren. Ich bekomme aber:

AR+RST
ERROR

Jeder Befehl wird mit ERROR verweigert. Was ist los? Im Internet suchen, natürlich hat jemand das gleiche Problem gehabt. Der serielle Monitor muss auf CR/LF eingestellt sein. Steht übrigens in der (sehr knappen) Bedienungsanleitung. RTFM.Read the fabulous manual.

Nachdem diese Hindernisse aus dem Weg geräumt sind geht es an die UDP-Kommunikation. Beispiel-Programme gibt es ja - wie bei fast allem was mit dem Arduino zu tun hat - genug.

Tello mag keine CR/LF's, daher stelle ich den Monitor wieder um und füge CR/LF's dort ein wo der ESP 8266 sie braucht, aber nicht dort wo ein Kommando an Tello weitergereicht wird. 



Aber es will nicht klappen. Ich bekomme zeitweise "gallische Schimpfwörter" wie wenn ich die falsche Baudrate eingestellt hätte. Delays einfügen - nicht sehr sauber - dann funktioniert das.

Das eine Beispielprogramm kann - nach etwas Modifikation - Daten an den PC senden, das andere kann Daten vom PC empfangen. Der jeweils andere Weg funktioniert nicht. Mit etwas Bastlerei gelingt es, ein Programm zusammen zu schustern bei dem Senden und Empfangen funktionieren.

Also Tello einschalten und das Pretzelboard mit dem Tello verbinden, dann kann der erste Probeflug stattfinden!

Geht nicht, ich kann mich nicht mit dem Tello verbinden. Mit allen anderen Netzen hat es bisher geklappt. Ich konnte den NanoESP überall mit dem Internet verbinden, auch im Urlaub über das WLAN des Hotels. Umgekehrt, mit allen anderen Geräten (PC, Handy, Raspberry Pi) konnte ich die Verbindung zum Tello herstellen. Nur diese Kombination geht nicht.

Frust. 

Okay, es gibt einen workaround. Würg-around. Da ich den Tello EDU habe, kann ich ja, umgekehrt, Tello und NanoESP mit einem anderen Netz verbinden, z.B. einem handy-hotspot.

Tello's IP-Adresse mit einem IP-scanner feststellen und diese Adresse ins Arduino-Programm eingeben (vorerst hard-coded). 


So klappt es. In den beiden screenshots sieht man die AT-Kommandos die ich zum Debuggen anzeige. Wie man hier sieht bin ich die gallischen Schimpfwörter nicht ganz los geworden, wahrschenlich  hat Tello etwas "unanständiges" geschickt (das kommt vor, weil auch nicht-ASCII-codierte Informationen ausgetauscht werden, siehe hier). Aber das betrifft nur die Kommunikation zwischen Pretzelboard und PC (der in diesem Stadium der Entwicklung noch dran hängt), über's WLAN scheint es glatt zu gehen. Immerhin, ein Probeflug mit dem Pretzelboard ist geschafft.

Und dann Tello umstellen so dass er wieder einen access point zur Verfügung stellt. Auch ein bisschen kryptisch. Heute bin ich froh dass Tello auf dem Ventilator steht und nicht dauernd überhitzt.

------

Ich habe den Raspberry Pi erwähnt. Den könnte man als Bindeglied zwischen Controller bzw. RC-Sender  und Tello verwenden, obgleich das hieße mit Kanonen auf Spatzen zu schießen.

Leute montieren einen Raspberry auf den Tello, das scheint doch ein bisserl zu viel Gewicht zu sein??

Aber halt! Nicht den normalen Raspberry Pi 3 oder 4, sondern den den "Raspberry Pi Zero W". Kaum größer als das Pretzelboard, mit WLAN, SD-Karte, Kamera-Anschluss und Linux. Und kostet die Hälfte. Ich glaube, er wird auf den Tello gepackt.

Aber das ist eine andere Geschichte und die soll ein anderes Mal erzählt werden.

Links:

https://www.mikrocontroller-elektronik.de/wifi-board-nanoesp-bzw-pretzel-board/

https://iot.fkainka.de/library

 https://iot.fkainka.de/day-3


Keine Kommentare: