Low Cost Headtracker mit Arduino und Magnetometer

Rangarid

Erfahrener Benutzer
#1
//EDIT

Sobald der Quellcode getestet wurde kommt hier eine ausführliche Beschreibung inklusive Code und Anschlussbelegungen.
 
Zuletzt bearbeitet:

AndiSichtgrenze

Erfahrener Benutzer
#2
RE: Welche HeadTracker funktionieren mit der WFT09

ppm mixer von HK sollte sich doch noch in die PPM leitung einschleifen lassen, ist zwar eng da aber machbar

der trainerausgang liefert wohl keinen sauberen PPM stream, das wurde schon mal gemessen, finds aber grad nicht... irgendwo im WFLY09 für 25€ fred

EDIT:
hab noch mal durchgescrollt, und meinen Beitrag wiederentdeckt, hatte sogar schon mal Fotos gemacht, wusste ich doch :D

http://www.fpv-community.de/forum/showthread.php?tid=3376&pid=42433#pid42433
 

Rangarid

Erfahrener Benutzer
#3
RE: Welche HeadTracker funktionieren mit der WFT09

Das mit dem Trainerausgang ist dann natürlich ärgerlich, da die ganze Plug&Play Geschichte dadurch behindert wird...Naja da gilt nur ausprobieren wie es läuft...

Was mich hier aber wundert ist, dass eine Zweite Wfly09 im Trainermodus ja ebenfalls das schlechte Signal bekommt und ein ebenso schlechtes Signal wieder ausgibt. Und ich kann mir kaum vorstellen, dass die das nicht getestet haben...

Hat noch irgendwer Ideen wie man an ein sauberes PPM-Signal kommt, ohne viel zu modifizieren? Würde das ganze schon irgendwie gerne über den Trainerport machen...
 

Rangarid

Erfahrener Benutzer
#4
HeadTracker an der WFT09

So, hab grad mal nen ersten Test gemacht...Über den Modulschacht kann ich wunderbar das PPM-Signal auslesen, beim Trainerschacht funktioniert das leider nicht.

Hier ist mir aber auch noch aufgefallen, dass die Spannung vom PPM-Signal im Schacht ~0,8V beträgt (mein Messgerät ist nicht sehr genau...) und am Trainerport bei ~2,3V.

Habe leider kein Osci, sonst könnte ich mir das Signal auch nochmal anschauen, kenn mich mit der Materie aber eh noch nicht so gut aus. Irgendwelche Ideen warum das so ist und wie ich es beheben kann?
 

Rangarid

Erfahrener Benutzer
#5
So...neues Update...

4 Methoden gibt es:
PPMin() - liest die aktuellen PPM-Werte aus und schreibt die einzelnen Kanalwerte in ein Array
PPMout() - erzeugt aus den Werten eines Arrays ein PPM-Signal und schickt es raus
calcCompass() - bestimmt anhand des Kompasses die Richtung
calcChannelValues() - berechnet aus der Kompassrichtung und den PPM-Werten der zugewiesenen Kanäle die neuen Servowege

Es gibt eine schöne Bibliothek für den HMC5883L, die die meiste Arbeit abnimmt. PPMin() und PPMout() sind soweit fertig, calcCompass() ebenso, hier muss ich aber erstmal auf das Kompassmodul warten, um zu testen, ob die Ausgabe stimmt. Wenn das Modul dann da ist werde ich mit der Berechnung der Servowerte fortfahren.

Ich werde bei mir noch einen Schalter anbringen, der den Tracker nullt, man müsste also nicht nach Norden oder sonstwas ausrichten, sondern kann sich beliebig hinsetzen wo man will und einfach loslegen.

Bin mal gespannt ob alles funktioniert...

Wenn er fertig ist versuche ich ihn mal mit der Wfly09 zu benutzen, am liebsten irgendwie über den Trainerport. Der HT sollte aber auch bei jeder beliebigen anderen Fernsteuerung funktionieren, die keine Einzelkanalübergabe hat.
 

sunny

Well-known member
#6
Klasse Projekt.
Verstehe ich das so richtig, dass Du rein aus den Kompasswerten das Servosignal berechnen möchtest?
 

Rangarid

Erfahrener Benutzer
#7
Ich berechne mit dem Kompass die aktuelle Himmelsrichtung, vergleiche mit der genullten Himmelsrichtung und berechne daraus die Servowerte.

Sprich Norden ist z.B. genullt.

Ich gucke nach Westen, also dreht der Servo nach links, ich gucke nach Osten, also dreht der Servo nach rechts. Kann man natürlich dann noch invertieren oder so...

Ich weiß momentan noch nicht genau, was man unter einem 3-Achsenkompass versteht, aber ich wollte aufjedenfall Pan&Tilt irgendwie auslesen wenn es geht, muss ich mal kucken, wie ich das mache. Man kann aufjedenfall für X,Y und Z einzelne Werte ausgeben lassen, also sollte da auch was machbar sein.
 

sunny

Well-known member
#8
Schöner wäre es, wenn Du es mit Winkel un BeschleunigungsSensoren verheiraten würdest. Kann mir nicht vorstellen ein der realen Bewegung entsprechendes Signal nur aus Kompasswerten zu erzeugen.
Wenn Du das hinbekommst, Hut ab.
 

Rangarid

Erfahrener Benutzer
#9
Soweit ich weiß gibt es viele HeadTracker, die nur mit Kompass arbeiten.

Und besonders schwer ist das nicht. Wenn du nach vorne schaust dann guckst du nach Norden z.B., wenn du nach links schaust guckst du nach Westen. Also hab ich nen Winkel vom Startpunkt aus. Den kann ich dann in Servoweg umsetzen.

Mit Beschleunigungssensor wird das ganze dann wieder teurer. Kann ich natürlich mal schauen, ob ich das später erweitere, aber ich will erstmal kucken, ob es so funktioniert.
 

sunny

Well-known member
#10
Ja, Du hast schon die richtige Einstellung.
Aber teuer wird es mit Winkel und ACC Sensor nicht mehr. Inzwischen gibt es so fitte Sensoren, für nen ganz schlanken Euro :)
Na, ich wart ab was Du zauberst. Würd meinen TrackeR2 gern zum alten Eisen legen.
 

Rangarid

Erfahrener Benutzer
#11
Naja teuer sind die echt nicht, hast schon recht. Aber warum soll ich aus nem 35€ HT nen 50€ HT machen wenn es genauso klappt (hoffentlich) :D.

Du kannst doch oder kennst jemanden, der PCB designen und herstellen kann, oder? Wie wärs mit nem Prototypboard falls der Aufbau klappt? Dann muss man nichtmehr alles zusammenwürfeln und die Lötfaulen Leute können auch bedient werden ;). Kann dann über die FPV-Community zum Selbstkostenpreis verscherbelt werden oder so...
 

sunny

Well-known member
#12
Rangarid hat gesagt.:
Naja teuer sind die echt nicht, hast schon recht. Aber warum soll ich aus nem 35€ HT nen 50€ HT machen wenn es genauso klappt (hoffentlich) :D.

Du kannst doch oder kennst jemanden, der PCB designen und herstellen kann, oder? Wie wärs mit nem Prototypboard falls der Aufbau klappt? Dann muss man nichtmehr alles zusammenwürfeln und die Lötfaulen Leute können auch bedient werden ;). Kann dann über die FPV-Community zum Selbstkostenpreis verscherbelt werden oder so...
Bring Deinen Proto ans laufen und wir sehen mal was wir machen...
 

Rangarid

Erfahrener Benutzer
#13
So, habe jetzt Servo invertieren hinzugefügt, paar kleine Änderungen am PPM-Out durchgeführt und ein- bzw. ausschaltbare Debug Nachrichten zum Überprüfen der Funktionsfähigkeit (Eingabe, Kompasswerte, Ausgabe) hinzugefügt.

Einstellungen die der Benutzer anpassen kann wurden in eine extra Datei ausgelagert und sieht etwa so aus:

Code:
//Configure Channels of Radio
//If radio has 4 channels select 6 channels to add two channels 
//If radio has 6 channels select 8 channels if you want to add two channels or select 6 channels if you want to keep 6 channels (two channels will be overwritten)
//If radio has 8 channels the selected channels will be overwritten
#define channelcount 8
//only use existing channels here (e.g. 5&6 when 6 channels selected)
#define pan 7 //Pan Channel
#define tilt 8 //Tilt Channel

//If servo moves the wrong way change it here
//"true" to inverse, "false" for standard
#define inverse_pan false
#define inverse_tilt false

//If servo does not move enough when you move 
//your head increase the values here (0.2 steps recommended)
#define pan_travel 1.0
#define tilt_travel 1.0

//Configure Pins on Arduino, digital pin required
#define input 3 //PPM in -> D3
#define output 4 //PPM out -> D4

//########################
//Debug Modes
//NODEBUG = no debugging
//DEBUGRC = debug rc values
//DEBUGC = debug compass values
#define NODEBUG
Sonstige Wünsche, was man so einstellen kann?

Jetzt fehlt mir nurnoch das Breakout Board und ich kann mit Testen anfangen...
 
#16
Tolles Projekt! :)

Ich find es echt super, dass es im Forum ein Haufen Leute gibt, die unser Hobby durch Kreativität und Erfindergeist stetig voranbringen.
*Daumen hoch!*
 

Rangarid

Erfahrener Benutzer
#17
Naja...ich baue das Teil halt weil es nichts für die Wfly gibt...bei allen anderen Funken mit Trainerport wird es wohl ziehmlich einfach diesen HeadTracker einzubauen. Bei der Wfly bin ich aber noch skeptisch...

Naja freut mich, dass es ein paar Interessenten gibt, dann habt ihr nachher auch noch was von ;)
 

Sledge

lonesome Cowboy
#18
Respekt, ziemlich cooles Projekt. Wenn das so klappt dürfte das alles in den Schatten stellen was es so an Headtrackern gibt. Und ehrlich gesagt habe ich mich immer gefragt warum man bei magnetischen HTs immer eine fixe Ausrichtung braucht. Das kann eigentlich nur an der Programmierfaulheit liegen. Hast Du auch schon Routinen um den Kompass initial zu konfigurieren? Wenn ich es richtig verstanden habe funktioniert das angelernte Setup nur innerhalb der Längen/Breitengrade in der das Setup gemacht wurde. Zumindest beim MK muss man erst mal alle Kompassachsen initialisieren. Wenn Du an Deiner Wfly scheiterst würde ich so einen HT gegen eine Turnigy 9x mit Er9x Software tauschen. Dann hast Du Einzelkanalübergabe und kannst auch Dinge wie Servoweg/Richtung einfach an der Funke einstellen. Bei Interesse schreib mir ne PN. Wenn nicht, hoffe ich dass Du eine schöne detaillierte Nachbauanleitung bereit stellst.
 

Rangarid

Erfahrener Benutzer
#19
Nettes Angebot, danke!!! Vielleicht werd ich mir deine 9x mal ausleihen, um die Kompatibilität mit anderen Funken zu probieren.

Aber ich kann schonmal einen Fortschritt posten. Hatte wohl nen Fehler in meiner PPM-Berechnung drin, jedenfalls bekomm ich jetzt die PPM-Werte auch über den Trainerport ausgelesen. Die Werte scheinen die selben zu sein wie vom PPM-Signal im Modulschacht.

Das ist doch schonmal was. Jetzt muss ich mal morgen gucken, was passiert wenn ich das Signal wieder bei PPM-in in die Funke zurückführe. Hilft auf jedenfall schonmal weiter.

Wegen der 9x können wir uns gerne mal in ner PN kurzschließen, wäre interessant und ich könnte gleich sagen ob es mit anderen Funken auch funktioniert.
 

Rangarid

Erfahrener Benutzer
#20
So, wenn ich mich nicht täusche sollte nun sowohl normales als auch invertierted PPM funktionieren. Was man nicht alles so einbaut wenn einem langweilig ist und die entsprechende Hardware noch nicht da ist...

Inverted PPM wurde sowohl für Input als auch Output implementiert. Somit sollten später mehr Fernsteuerungen unterstützt werden...

####UPDATE####

PPM auslesen und direkt wieder in die Funke einspeisen funktioniert super. Der Servo bewegt sich nicht so flüssig wie vorher, was denk ich an meiner PPM-out Methode liegt, da muss ich noch bissl was verbessern....

Aber grundsätzlich liegt einem HeadTracker an der WFT09 nichts mehr im Weg (außer der Postbote...).

Man muss dann aber für den Trainerswitch einen anderen Schalter einbauen (z.B. den links oben), damit der Trainerport angeschaltet bleibt. Somit kann man den Headtracker immer an und wenn man ihn nicht mehr braucht wieder ausschalten.
 
FPV1

Banggood

Oben Unten