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. |
Statt des Controllers der für Kinderhände gebaut ist hätte ich auch meinen guten, alten 35MHz Sender zerlegen und umbauen können. Auch er hat Potentiometer die man anzapfen könnte, und in seinem Gehäuse hätte ich den Arduino locker untergebracht.
Mein guter, alter 35MHz Sender |
Der Sender hat eine Lehrer-Schüler-Buchse, praktischerweise ein 2,5mm Klinkenstecker den man leicht bekommt. Sie ist dazu gedacht, zwei Sender miteinander zu verbinden. Der Schüler-Sender schickt seine Knüppelstellungen über das Kabel an den Lehrer-Sender. Der Lehrer kann über einen Schalter entscheiden ob sein Sender das Signal des Schülers an das Modell schickt oder die Daten des Lehrer-Senders. Ich verwende meinen Sender als Schüler-Sender und den PC als "Lehrer-Sender".
Das Signal das bei der Schüler-Buchse heraus kommt lässt sich auslesen und verarbeiten.
8-Kanal PPM-Signal |
Das PPM (Puls-Pause-Modulation) Format kodiert die Information in Pulsen, deren Dauer von der Knüppelstellung der jeweiligen Kanäle abhängt. Wie man im obigen Oszillogramm sieht, handelt es sich um einen 8-Kanal-Sender. Wenn ich die Knüppel bewege verschieben sich die Pulse.
Ich habe mir schon überlegt wie man ein Programm realisieren könnte das diese Zeitdauern misst. Relativ kompliziert, mit Interrupts. Aber ich bin doch sicher nicht der erste der das versucht und habe Tante Gugl gefragt. Sie hat mir zwei nützliche Informationen gegeben.
- Arduino stellt einen Befehl "pulseIn" zur Verfügung der Pulslängen misst
- Jemand hat schon ein Arduino-Programm geschrieben das genau das macht
Man könnte jeden Arduino dazu verwenden, aber ich bin zufällig auf eine besondere Ausführung gestoßen: Beetle BadUSB. Ein Arduino auf einer winzigen Platine die sich direkt in USB-Buchse des Computers stecken lässt.
Zusätzlich handelt es sich um einen 32U4-Prozessor mit dem man die Maus- und Keyboard-Bibliotheken des Arduino verwenden kann. Für meinen konkreten Anwendungsfall brauche ich dieses Feature nicht, weil ich auf der PC-Seite auf die (simulierte) serielle Schnittstelle zugreifen kann. Aber mit Maus- und/oder Keyboard-Simulation kann man jedes beliebige Programm steuern, z.B. Spiele.
Ob du es glaubst oder nicht, das ist ein Arduino! |
Ein bisschen Schrumpfschlauch und fertig. |
Und dann der erste Probeflug mit der neuem Konfiguration. Der "richtige" Sender vermittelt ein ganz anderes Gefühl als die als die kleinen Spielkonsolen und erlaubt eine wesentlich feinfühligere Steuerung. Trimmung, Expo und einstellbare Rückholfedern stehen zur Verfügung. Das steigert das Flugvergnügen noch einmal!
Wie immer gibt es mein Programm als open-source auf GitHub, siehe hier.
Projekt abgeschlossen. Abgehakt? Dann kennst du mich schlecht. Die nächsten Ideen geistern schon in meinem Kopf herum. Den Sender mit nach draußen nehmen, aber den Laptop auf der Parkbank platzieren? Oder auf dem Schoß (dazu ist er ja gedacht)? Nicht so gut. Wie wäre es mit einem kompakteren Rechner? Da gibt es doch den Raspberry Pi. Das Python-Programm auf dem Raspberry zum Laufen bringen und den Raspberry an den Sender montieren. Und noch ein paar Schieber, Schalter, Taster in den Sender einbauen. Und den Raspberry mit dem Handy verbinden,.....
Oder einen Arduino NanoESP ins Gehäuse des Sender einbauen und direkt, ohne zusätzlichen Rechner, mit dem Tello kommunizieren.
Hier wird es bald wieder etwas neues zu lesen geben.
Keine Kommentare:
Kommentar veröffentlichen