Drohnen fliegen macht Spaß, mit einem selbst programmierten UAV umso mehr. Die DJI Ryze Tello und Python machen das möglich.
In diesem Artikel arbeiten wir mit der Drohne DJI Ryze Tello, die es für etwa 100 Euro unter anderem bei Amazon [1] gibt. Sie fragen sich jetzt sicherlich, warum wir uns ausgerechnet für dieses Modell entschieden haben. Die Antwort fällt leicht: Die Drohne wurde für den Einsatz im Bildungsbereich konzipiert und verfügt daher über offene Schnittstellen. Das erlaubt es, für das Fluggerät Programme in Scratch oder Python zu entwickeln.
Um sich erst einmal ein wenig mit den Möglichkeiten der Drohne zu beschäftigen, genügt es, die passende App herunterzuladen und sie manuell zu steuern. Dabei hält der Akku etwa 13 Minuten, die Reichweite der Steuerung liegt bei ungefähr 100 Metern. Da die Drohne eher für den Betrieb innerhalb von Gebäuden gedacht ist, genügt diese Distanz vollkommen. Hat man sich doch einmal verflogen, erlaubt es die eingebaute 720p-Kamera, den momentanen Standort einzusehen.
Falls Sie sich intensiver mit der Drohne beschäftigen möchten, erweist sich das Tello-Booster-Paket für rund 150 Euro als unverzichtbare Erweiterung. Es enthält unter anderem zwei Extra-Akkus und ein Propellerschutz-Set. Gerade wenn Sie die ersten Versuche mit der Programmierung starten, hilft der Propellerschutz gegen größere Schäden (Abbildung 1). Weitergehende Informationen über die DJI Ryze Tello finden sich auf der Webseite des Herstellers [2], die wichtigsten technischen Daten zeigt die Tabelle “DJI Ryze Tello im Überblick”.

Abbildung 1: Die DJI Ryze Tello mit dem durchaus empfehlenswerten Propellerschutz aus dem Zubehörangebot. (Quelle: DJI)
|
Abmessungen |
98,0 x 92,5 x 41,0 Millimeter |
|
Gewicht |
80 Gramm inklusive Propeller und Akku |
|
Akku |
1,1 Ah / 3,8 V (herausnehmbar) |
|
Anschluss |
Micro-USB-Anschluss zum Laden |
|
Funktionen |
Entfernungsmesser, Barometer, LED, Sichtsystem, Wi-Fi 802.11n, 720p-Livestream |
|
Leistung |
|
|---|---|
|
Max. Flugstrecke |
100 Meter |
|
Max. Flughöhe |
30 Meter |
|
Max. Geschwindigkeit |
8 m/s (28 km/h) |
|
Max. Flugzeit |
13 Minuten |
|
Kamera mit elektronischer Bildstabilisierung |
|
|
Sichtfeld (FOV) |
82,6 Grad |
|
Foto |
5 Megapixel (2592 x 1936, JPG) |
|
Video |
HD720p30 (MP4) |
Softwareinstallation
Wie erwähnt empfiehlt es sich, die passende App für die Drohne herunterzuladen. Suchen Sie im App-Store von Google oder Apple nach “Tello” und installieren Sie die App. Sie erlaubt es auch, die Firmware der Drohne zu aktualisieren. Eine Anleitung dazu finden Sie im Kasten “Firmware aktualisieren”.
Um sich über die App mit der Drohne zu verbinden, schalten Sie zuerst die Drohne ein und warten, bis die LED blinkt. Dabei startet ein eigenes WLAN, mit dem Sie sich verbinden müssen. Jetzt starten Sie die Tello-App und verbinden sich mit der Drohne. Welche Schritte dazu nötig sind, teilt Ihnen die App mit. Hat alles geklappt, sehen Sie in der App das Kamerabild. Die Drohne lässt sich jetzt mit dem Lift-off-Symbol oben links starten.
Die DJI Ryze Tello verfügt über vier Freiheitsgrade, die Sie über die App steuern: vor, zurück, links und rechts, nach oben und unten sowie Rotation um die Z-Achse in beide Richtungen. Diese vier Freiheitsgrade werden Ihnen beim Erstellen von Programmen wieder begegnen. Um zu sehen, ob alles richtig funktioniert, unternehmen Sie zunächst einen kleinen Testflug, bevor Sie beginnen, die Drohne über Python zu steuern.
Da man das Fluggerät in Python programmiert, installieren Sie eine geeignete Entwicklungsumgebung (IDE). PyCharm Community [3] von JetBrains eignet sich für unsere Anforderungen bestens. Sie finden es auf der Projektseite für unterschiedliche Betriebssysteme. Mit der Installation sind die Vorarbeiten bereits abgeschlossen, und Sie können Ihr erstes Programm für die Drohne schreiben.
Firmware aktualisieren
Da man nie genau weiß, wie lange die Drohne schon in irgendeinem Lager herumlag, empfiehlt es sich, zuerst einmal die Firmware des Geräts auf den aktuellen Stand zu bringen. Um das zu erledigen, verwenden Sie die App auf dem Smartphone. Verbinden Sie sich mit der Drohne und wechseln Sie anschließend über das Zahnrad-Icon in die Einstellungen der App. Tippen Sie hier auf Mehr dann auf die drei Punkte. Sie sehen nun das Fenster aus Abbildung 2. Hier klicken Sie bei Firmware Version auf Aktualisieren. Sie bekommen daraufhin die Release Notes angezeigt und starten mit Aktualisieren den Update-Vorgang.
Verbindungstest
Um mit PyCharm ein Programm zu erstellen, erzeugen Sie zunächst über File | New Projekt ein neues Projekt. Belassen Sie alle Einstellungen bei den Vorgaben, bis auf Location: In dieses Feld tragen Sie als letzten Bestandteil des Pfads einen sprechenden Projektnamen ein. Nach dem Erstellen des Projekts mit einem Klick auf Create erzeugt die IDE direkt eine Datei main.py. Den darin enthaltenen Beispielcode löschen Sie und speichern Ihre eigenen Programme darin.
Um die Skripte für die Drohne verwenden zu können, müssen Sie noch eine Bibliothek [4] zum Ansteuern in das Projekt einbinden. Das erledigen Sie über File | Settings | Project | Python Interpreter. Hier verwenden wir das Plus-Icon, um die zusätzliche Bibliothek djitellopy zu installieren (Abbildung 3).

Abbildung 3: Um die Drohne steuern zu können, gilt es, die Bibliothek djitellopy in PyCharm einzubinden.
Unser erstes Programm (Listing 1) soll eine Verbindung zur Drohne aufbauen und danach die Temperatur und den Batteriestand anzeigen. Diese beiden Messwerte sind für den Betrieb der Drohne sehr wichtig. Bei zu niedrigem Ladestand sollte man tunlichst auf einen Flug verzichten. Überhitzt die Elektronik oder der Akku, ist es allerhöchste Zeit für eine kleine Pause. Um das Programm zu starten, genügt ein Klick auf den grünen Pfeil oben in der IDE. Listing 2 zeigt Ihnen die Ausgabe des Programms.
Listing 1
Verbindungsaufbau
from djitellopy import tello
drone = tello.Tello()
drone.connect()
print("Temperature: "+drone.get_temperature())
print("Battery: "+drone.get_battery())
Listing 2
Verbindungsaufbau – Ausgabe
[INFO] tello.py - 122 - Tello instance was initialized. Host: '192.168.10.1'. Port: '8889'. [INFO] tello.py - 437 - Send command: 'command' Temperature: 60.0 Battery: 93 [INFO] tello.py - 461 - Response command: 'ok' Process finished with exit code 0
Je nach Ausstattung Ihres Rechners kann es sein, dass Sie lediglich eine Fehlermeldung erhalten und nichts funktioniert. Hierzu muss man wissen, dass sich das Programm mit dem WLAN der Drohne verbinden muss, um sie zu steuern. Den meisten Desktop-PCs fehlt eine WLAN-Schnittstelle. Eine einfache und kostengünstige Lösung für dieses Problem besteht in einem zusätzlichen USB-WLAN-Adapter. Der Autor hatte noch ein Exemplar [5] in der Bastelkiste, das mit Ubuntu tadellos funktionierte.
Start frei
Sie wissen jetzt, wie man den Rechner mit der Drohne verbindet und einfache Statusinformationen abfragt. Damit ist der Zeitpunkt für einen kleinen Testflug gekommen. Mit dem Programm aus Listing 3 starten Sie die Drohne, lassen sie einige Zentimeter vorwärts fliegen und landen danach. Das Ansteuern erfolgt immer nach demselben Muster: Sie erzeugen ein Objekt für die Drohne und rufen dessen Methoden auf, die bestimmten Aktionen auszuführen.
Um zu erfahren, welche Aktionen das Objekt kennt, platzieren Sie den Mauszeiger über einer Methode, halten [Strg] gedrückt und drücken gleichzeitig die linke Maustaste. So gelangen Sie in den Quellcode der Bibliothek und können sich dort etwas umsehen. Alternativ dazu geben Sie drone. ein und scrollen durch das Menü (Abbildung 4). Nach einer besseren Dokumentation für die Bibliothek haben wir vergeblich gesucht.
Listing 3
Drohne fliegen
from djitellopy import tello drone = tello.Tello() drone.connect() drone.takeoff() drone.move_forward(30) drone.land()
Auf eine spezielle Methode des Drohnenobjekts sollten wir noch eingehen: Über die Methode send_rc_control geben Sie den einzelnen Freiheitsgraden der Drohne eine bestimmte Bewegungsgeschwindigkeit vor. Die erlaubten Werte liegen dabei zwischen -100 und +100. Die Methode kennt vier Übergabeparameter:
- Geschwindigkeit nach rechts / links,
- Geschwindigkeit vorwärts / rückwärts,
- Geschwindigkeit nach oben / unten, und
- Rotationsgeschwindigkeit im / gegen den Uhrzeigersinn.
Mit dieser Methode lässt sich auf einfache Weise eine manuelle Fernbedienung für die Drohne nachbauen.
Film ab
Um das Bild des Funktionsumfangs der DJI Ryze Tello zu vervollständigen, sehen wir uns zu guter Letzt an, wie man auf die Kamera zugreift. Dazu müssen Sie zunächst die Bibliothek opencv-python in das Projekt einbinden. Dabei gehen Sie genauso vor wie bei der djitellopy-Bibliothek beschrieben. OpenCV [6] ist eine sehr leistungsfähige Bibliothek, die umfangreiche Funktionen für die Bildverarbeitung bereitstellt.
Das Programm aus Listing 4 öffnet den Videostream der Kamera und zeigt ihn in einem Extrafenster an. Beachten Sie, dass es sich dabei um viele Einzelbilder handelt, die die Kamera schnell nacheinander anzeigt. Um die Auflösung der Bilder zu verändern, entfernen Sie das Kommentarzeichen (#) vor Zeile 8.
Listing 4
Videostream
from djitellopy import tello
import cv2
drone = tello.Tello()
drone.connect()
drone.streamon()
while True:
image = drone.get_frame_read().frame
#image = cv2.resize(image, (200, 200))
cv2.imshow("Tello Drone", image)
cv2.waitKey(1)
Wissenswertes
Im Test stellte sich heraus, dass es sich bei der DJI Ryze Tello um ein Licht liebendes Gerät handelt. Wenn es in Ihrem Büro zu schummrig ist, funktioniert die Drohne nicht richtig und gibt ständig Meldungen wie ‘error No valid imu’ aus. Im Flug kommt die Kamera für die Navigation zum Einsatz. Wenn das Licht nicht ausreicht, wird das Bild der Kamera unbrauchbar.
Sobald Sie sich ein wenig intensiver mit der Kamera der Tello beschäftigen, fällt Ihnen auf, dass die Bildverarbeitung recht rechenintensiv ans Werk geht. Um diesem Problem entgegenzuwirken, hilft es, die Auflösung der Videos zu verringern. Oft genügen auch Bilder mit erheblich geringerer Auflösung für die Weiterverarbeitung.
Nichts ist nerviger als eine Drohne, die mangels Energie abstürzt. Daher sollten Sie vor jedem Start in Ihrem Programm den Ladezustand des Akkus checken und das Programm automatisch beenden, falls er zu niedrig ist.
Fazit
Während unseres Tests gab es etliche Kollisionen mit allen möglichen Gegenständen im Büro. Zwei Propeller verschwanden nach einem Crash auf Nimmerwiedersehen. Eine im Flugweg stehende Zimmerpflanze wurde unfreiwillig zurückgeschnitten – es überrascht, wie weit zerkleinerte Blätter fliegen.
Achten Sie also bei den ersten Flugversuchen akribisch darauf, dass möglichst keine Gegenstände im Bereich des Flugwegs herumstehen, und fliegen Sie die Drohne in einem möglichst großen Raum. Alles in allem macht es eine Menge Spaß, sich mit der DJI Ryze Tello zu beschäftigen und mehr über das kleine Fluggerät zu lernen. Der einzige Nachteil der kompakten Drohne ist die relativ geringe Akkukapazität, die immer wieder für Zwangspausen sorgt. (tlejlu)
Der Autor
Martin Mohr hat die komplette Entwicklung der modernen Computertechnik live miterlebt. Nach dem Studium entwickelte er überwiegend Java-Applikationen. Mit dem Raspberry Pi erwachte seine alte Liebe zur Elektronik wieder.
Infos
-
Tello-Drohne bei Amazon: https://www.amazon.de/Ryze-Tello-Gamecontrollern-kompatibilit%C3%A4t-HD-%C3%9Cbertragung/dp/B078XV32CJ/
-
Homepage Tello-Drohne: https://www.ryzerobotics.com/de/tello
-
PyCharm herunterladen: https://www.jetbrains.com/pycharm/download/
-
Python-Bibliothek djitellopy für Tello: https://github.com/damiafuentes/DJITelloPy
-
USB WLAN-Adapter: https://www.amazon.de/Edimax-EW-7811Un-Wi-Fi-Nano-Adapter/dp/B08D3DBP55/
-
OpenCV: https://opencv.org







