Hi!
Update:
Es gibt sehr, sehr, sehr, sehr erfreuliche Neuigkeiten für alle MTK (MT3329) Nutzer (LZ GPS, APM, Flyduino usw.). Warum soll ublox so viel besser sein als MTK? Nach meinen Experimenten mit eos bandi code und nmea habe ich mich gefragt, wie die überhaupt ein Modul verkaufen können. Der Verdacht einer fehlerhaften Datenaquisition liegt nahe. NMEA ist immer die zweite Wahl, weil gegenüber einem Binärprotokoll (direkt die wichtigen Zahlen) das Datenaufkommen erhöht und meistens die Genauigkeit (Stellenanzahl) reduziert ist. Alles muss nämlich in Ascii Langtext übersetzt werden. Das MTK Binärprotokoll muss also funktionieren. Als erstes dachte ich an einen schwachen seriellen Teil des eos bandi codes und habe ihn durch die direkte mwii Version ersetzt (hat sich ja kein Freiwilliger gemeldet). Der gewünschte Erfolg, bis auf eine Reduktion der Codesize blieb aus. Es funktioniert, vermutlich besser als die original arduino serial.x Funktionen, also lasse ich es drin. Die geflashte FW AXN1.51_2722_3329_384.1151100.5.bin (
http://code.google.com/p/i2c-gps-nav/downloads/detail?name=MTK-firmware-tools-for-2.1.zip&can=2&q=) mit Unterstützung des APM "custom" Binärprotokolls (
http://stuff.storediydrones.com/reference/CustomizeFunctionSpecificationv16.doc) brachte auch nicht den Durchbruch. Dann habe ich den Datenstrom mit Putty (
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html) und Hexedit (
http://hexedit.nextsoft.de/) (BTW: alles Freeware) untersucht und musste doch erhebliche Abweichungen von den Arducopter/APM Vorgaben feststellen (Dokument). Realität und Fiktion (APM/3DR-Dokument) treffen aufeinander. Die APM und eos bandi (Kopie) lesen den tatsächlichen, binären Datenstrom fehlerhaft aus. Diese Aussage trifft auf die APM natürlich nur zu, wenn dort nicht eine andere FW verwendet wird. Für die Mwii stimmt es auf alle Fälle. Auch die aktuelle APM Version macht da keine Ausnahme, das hätte mir nämlich viel Arbeit erspart. Es gibt mehrere Probleme. Zum einen wird eine Checksumme überprüft, die erst GARNICHT übertragen wird (!) und zum anderen wird das Kauderwelsch (eigentlich ein kontinuierlicher, verkürzter und gleicher Datenstrom, der aber nicht dokumentiert ist) bei nicht vorhandenen Satelliten/Fix m.E nur zufällig, wenn überhaupt adäquat, abgehandelt. Also musste ich den kompletten Binärtreiber neu schrieben
. Dabei habe ich mich, als Praktiker (Motto: die SchXXXX muss laufen), daran gehalten, was das MTK Modul tatsächlich liefert. Die, für mich als nicht Programmierer, verwirrende Komplexität des original Treibers habe ich weg gelassen. Meine jetzige Version liesst jedes Byte wirklich "per Hand" aus. Das hat Vor und Nachteile. Vorteil: Schneller, idiotensicher, plötzlicher Sat Verlust führt nicht zu falschen Koordinaten. Nachteil: Für Programmierer lachhafter code, erhöhter Speicherverbrauch (immer noch fast 10K frei auf LZ GPS). Die Checksummenüberprüfung habe ich eliminiert da, erstens kein serieller Übertragunsfehler im Beobachtungszeitraum (mehrere Minuten) auftrat (vielleicht ein Benefit der Umsetzung der mwii-seriellen-Funktionen - die Hoffnung bleibt, dass die Arbeit etwas gebracht hat), zweitens eine 1-Byte Checksumme sowieso nicht besonders aussagekräftig ist und drittens ein einzelner Ausreisser (selbst jede Sekunde 2 Fehler) von meinem Spikefilter gefressen wird. So, jetzt kommt der Hammer, meine Arbeit kostet euch alle ein Päckchen Zigaretten pro Download, das geht nur als .hex File raus und ist gesünder für die Lunge! War nur ein übler Scherz (@mahowik - mwii forum), es bleibt OPEN SOURCE, alle sollen etwas davon haben!! Momentan habe ich noch 2 Probleme, die mich von einer Downloadversion abhalten:
1.: Der Code ist nur bei stehendem Copter getestet - Freiflug steht noch aus (Wetter ..
......)
2.: Um die Sat-Fix Meldung habe ich mich noch nicht gekümmert, deswegen meint die mwii schon beim powerup GPS wäre OK......
Fazit: Bei MTK ist noch ordentlich Luft unter dem Gaspedal. Es muss nicht immer ublox sein. Ich bin der Ansicht, dass ein MTK Modul mit gleich grosser Antenne, einem vergleichbaren ublox Modul (6) das Wasser reichen kann.
LG
Rob