1. Willkommen im Forum! Registriere dich, um eigene Beiträge zu schreiben.

Protokoll des Devo-M Data Bus

Dieses Thema im Forum "Arducopter und Pixhawk (Walkera und andere)" wurde erstellt von Norbert, 2. Dez. 2014.

  1. Norbert

    Norbert Richtiger Walkerafan

    Beiträge:
    156
    Zustimmungen:
    65
    Ort:
    Hamburg
    Hi,

    Die Links sind spannend, ohne Frage. Vermutlich ist das auch eine gute Lösung für die meisten Leute hier. Für mich ist es das aber nicht. Selber machen ist auch ein wenig Prinzip.
    Bis vor Kurzem wollte ich den ganzen Copter selber machen (bis auf die Flugsteuerung selbst). Arduino ist für solche Sachen eigentlich nicht mehr geeignet. Viel zu viel Overhead, wenn man mal selber was machen will.
    Ich programmiere die Dinger auch für die täglichen Brötchen. Allerdings viel näher an der Hardware. Da ist mir Arduino naturgemäß zuwider. Ich kann aber nicht bestreiten, daß das alles auch mit Lösungen auf Basis von Arduino geht.
    Das ist aber nicht das, was ich mir vorstelle.

    Gruß,
    Norbert
     
  2. nVentor

    nVentor Anonyme Fledermaus Mitarbeiter

    Beiträge:
    6.212
    Zustimmungen:
    6.077
    Homepage:
    @Norbert Tipp am Rande: Erst dokumentieren, dann implementieren. Kommt einem zwar anfangs komisch vor, aber irgendwann begeistert man sich ggf. noch für Test-Driven-Development und ist nach der Umgewöhnung richtig effizient. :)
     
    gektor gefällt das.
  3. Sushi

    Sushi Walkera Wahnsinniger

    Beiträge:
    3.793
    Zustimmungen:
    2.308
    Ort:
    Köln
    Die PX4 oder Pixhawk mit 32 Bit Prozessor ist auch nicht mehr was der APM (Arduino Mega) noch vorgegeben hat.
     
  4. Bobness

    Bobness Starker Walkerafan

    Beiträge:
    73
    Zustimmungen:
    71
    Ort:
    Münster
    Hey Norbert,

    ich habe den Source vom MavLink wegen der Prüfsumme überflogen. Im Endeffekt läuft alles auf die folgenden beiden Funktionen in der GCS_MAVLink\include\mavlink\v1.0\checksum.h:

    static inline void crc_accumulate(uint8_t data, uint16_t *crcAccum)
    {
    /*Accumulate one byte of data into the CRC*/
    uint8_t tmp;

    tmp = data ^ (uint8_t)(*crcAccum &0xff);
    tmp ^= (tmp<<4);
    *crcAccum = (*crcAccum>>8) ^ (tmp<<8) ^ (tmp <<3) ^ (tmp>>4);
    }

    static inline void crc_init(uint16_t* crcAccum)
    {
    *crcAccum = X25_INIT_CRC;
    }

    Die crc_init initialisiert die Checksummen-Variable, die crc_accumulate schiebt die Bytes von Zwischen-Checksumme mit Hilfe von data ein wenig hin und her, und wird für jedes Byte der Nachricht einmal durchlaufen.

    Über diese beiden Funktionen sind andere Convenience-Funktionen gestülpt (in GCS_MAVLink\include\mavlink\v1.0\mavlink_helpers.h). Ich glaube die interessanteste ist die
    mavlink_finalize_message_chan, sie errechnet die crc für den ganzen Paket-Buffer.

    Da deine Anfrage immer die selbe müsste (ich hoffe es gibt keine fortlaufenden IDs), würde es reichen, die Funktion einmal zu durchlaufen, die korrekte Prüfsumme zu erhalten, und die Anfrage an den MavLink zu wiederholen.

    Dies ist nur eine ziemlich oberflächliche Analyse. Vielleicht erzähle ich auch großen Quatsch.
    Vielen Dank für deine Bemühungen und gründlichen Erläuterungen zu dem Thema!

    Ich selbst habe Interesse daran, weil ich seit vorgestern meine neue Taranis Plus habe, und die Telemetrie gerne auf der Funke möchte.

    Beste Grüße,
    Bobness
     
    nVentor und gektor gefällt das.
  5. Bobness

    Bobness Starker Walkerafan

    Beiträge:
    73
    Zustimmungen:
    71
    Ort:
    Münster
    Hey,
    ich hab meinen Kollegen gefragt, seinerseits einer der Programmierer des Pixhawks: Es gibt wohl eine fortlaufende ID für Anfragen, die verpflichtend hochgezählt werden muss, ansonsten wird das Paket vom MavLink verworfen. Das soll verhindern, dass aufgrund eines Fehlers des Anfragers Aktionen doppelt ausgelöst werden.

    Beste Grüße,
    Bobness
     
    gektor und nVentor gefällt das.
  6. Norbert

    Norbert Richtiger Walkerafan

    Beiträge:
    156
    Zustimmungen:
    65
    Ort:
    Hamburg
    Hi,

    ich verstehe ganz ehrlich gesagt praktisch nichts von dem Code.
    Allerdings habe ich schon die Anfrage vom APM-Planner abgeschnorchelt, diese kopiert und bekomme das Paket 6 mit praktisch allen relevanten Daten.
    Wenn ich das richtig verstanden habe, wird nicht die Anfrage hochgezählt, sonst hätte das so ja auch nicht funktioniert.
    Die Message von der DEVO-M wird hochgezählt, die Anfrage nicht.

    Ich habe mich jetzt etwas umorientiert und werde die Daten als OSD anzeigen.
    Ich hab ein Minimod, welches das können sollte, aber ich bekomme den Originalzustand nicht wieder hin.
    Bootloader installiert mit Arduino, aber Config OSD will sich nicht verbinden.
    Er sagt, ich solle es mit Arduino versuchen, aber der Checkout vom Quellcode von Minimosd klappt nicht.
    Jetzt habe ich die Faxen dicke und mache es mit meiner eigenen Software auf dem Minimosd.
    Die hatte ich für meine Eigenbauten gemacht und wird simpel wie ein LCD in Bascom seriell angesprochen.
    Eine kleine Platine mit einem ATTiny841 liest den Datensatz per Mavlink aus, misst noch die Batteriespannung und speist das dann in das Minimosd ein.

    Gruß,
    Norbert
     
    gektor und Bobness gefällt das.
  7. gektor

    gektor Chefdiplomflipper Mitarbeiter

    Beiträge:
    11.460
    Zustimmungen:
    6.875
    Ort:
    Koblenz
    Homepage:
    @Bobness Sehr cool! Wer oder was bist du, wenn du solche Leute als Kollegen hast? :D:cool:;)
     
  8. Bobness

    Bobness Starker Walkerafan

    Beiträge:
    73
    Zustimmungen:
    71
    Ort:
    Münster
    Hey,
    ich bin Softwareentwickler. Mein Kollege steuert in seiner Freizeit unentgeltlich Code für das Open-Source-Projekt PX4 (die Software des Pixhawks) bei und bekommt dafür hin und wieder ein paar Goodies von 3D Robotics.
    Mit unserem Arbeitgeber hat das allerdings nichts zu tun, er macht das in erster Linie, weil er Spaß am Fliegen und Basteln hat.
    Meine Kollegen waren es übrigens auch, die mich zur Fliegerei gebracht haben ;)
     
    nVentor und gektor gefällt das.
  9. Bobness

    Bobness Starker Walkerafan

    Beiträge:
    73
    Zustimmungen:
    71
    Ort:
    Münster
    Hallo,
    ich habe soeben mal den Output der normalen Telemetrie (das weiße Kabel, was in den RX705 kommt) mit einem Logic Analyzer untersucht! Sehr interessant, da man vor allem kein kompliziertes Protokoll wie MavLink sprechen muss, und nichts am Devo-M löten. Was wir auf die schnelle rausgefunden haben: 40000 Baud, jede Sekunde kommt ein Frame mit 11 Bytes und dem gleichen Startbyte.

    Ich werde mir den Mitschnitt der Software heute abend in Ruhe angucken, und versuchen, ein Programm für einen Arduino zu schreiben, der es hinterher in FrSky-Telemetrie umsetzt.

    Habe schon richtig Lust darauf. Ich denke, wenn es mehr Infos dazu gibt, mache ich einen neuen Thread dafür auf.
     
  10. Norbert

    Norbert Richtiger Walkerafan

    Beiträge:
    156
    Zustimmungen:
    65
    Ort:
    Hamburg
    Hi,

    alleine für die Position braucht man doch schon 8 Byte (zweimal 32bit), da wird also kaum was spannendes drinstehen, fürchte ich.
    Mit Arduino sollte es aber auch keine große Hürde sein, Mavlink zu sprechen, die Libs gibt es doch.

    Gruß,
    Norbert
     
    Bobness gefällt das.
  11. Bobness

    Bobness Starker Walkerafan

    Beiträge:
    73
    Zustimmungen:
    71
    Ort:
    Münster
    Hey Norbert,

    danke, dass ist mir auch bewusst. Es gibt auch mehrere unterschiedliche Messages.
    Die GPS-Daten müssen aus dem Kabel kommen, da die GPS-Koordinaten auf der Devo angezeigt werden.

    Interessant ist es vor allem, weil es fertig gestellt quasi PlugAndPlay ist, und der MavLink und die winzigen Widerstände nicht angelötet werden müssen.

    Beste Grüße
     
    gektor gefällt das.
  12. Norbert

    Norbert Richtiger Walkerafan

    Beiträge:
    156
    Zustimmungen:
    65
    Ort:
    Hamburg
    Hi,

    meine Befürchtung ist, dass das nur eine Art Heartbeat und Status ist und die richtigen Daten erst kommen, wenn der Empfänger an die Devo-M was sendet.
    Aber wenn Du Glück hast, sind das abwechselnd zwei verschieden Frames.
    Mehr glaube ich nicht - wenn das nur sekündlich kommt. Glaube ich eigentlich überhaupt nicht. Wenn Du keinen Sat-Empfang hast, müssen da viel Nullen sein, wenn die Position da drin ist.
    Zeig doch mal die Daten, dann können wir gemeinsam raten. Das kommt also auch, wenn man den Jumper für normale Servosignale gesteckt hat?
    Dann schraube ich meine Kiste heute Abend vielleicht auch nochmal auf.

    Gruß,
    Norbert
     
  13. Norbert

    Norbert Richtiger Walkerafan

    Beiträge:
    156
    Zustimmungen:
    65
    Ort:
    Hamburg
    Hi,

    ich weiß ja nicht, was Du Dir da angesehen hast, aber ich sehe hier alle 22ms:
    400µs low, 1100µs high, 400µs low, 1100µs high, 400µs low, 600µs high, 400µs low,...
    Wenn die 1100µs 1 sind, dann wird da immer 11010101 übertragen.
    Mir fällt gerade nicht der Name dieser Codierung ein.
    Anfangen kann man damit aber nichts.
    Der wartet wohl auf Antwort.
    Ich habe wie gesagt den Jumper gesteckt. Ohne Jumper passiert da gar nichts.

    Gruß,
    Norbert
     
  14. gektor

    gektor Chefdiplomflipper Mitarbeiter

    Beiträge:
    11.460
    Zustimmungen:
    6.875
    Ort:
    Koblenz
    Homepage:
    Ich finde die Idee, das Telemetrie Verfahren des Empfängers abzugreifen klasse!

    Kann das vielleicht wirklich sein, dass der Empfänger irgendein Handshake Signal senden muss, damit die Daten geliefert werden?
     
  15. Bobness

    Bobness Starker Walkerafan

    Beiträge:
    73
    Zustimmungen:
    71
    Ort:
    Münster
    Hey,
    einen Handshake braucht es nicht, zumindest nicht für die GPS-Daten. Habe nur einen PPM-FrSky-Empfänger am Data-Port. Das GPS-Paket haben wir bereits zu einem guten Teil verstanden, wir haben auch schon ein Verdacht, wo sich die Volt-Zahl verbirgt.

    Das Kabel ist seriell mit 38400 Baud, und die Pakete fangen immer mit 0xAA (Normal) oder 0X5B (GPS-Daten) an.
    Norbert: Du brauchst einen TTL-Adapter konfiguriert auf die angegebene Baudrate (38400, 8 N 1), dann solltest du die Bytes sehen. Den Inhalt der GPS-Pakete versteht man mithilfe dieses Repositories:

    https://github.com/devo-fc/devo-fc
    im speziellen
    https://github.com/devo-fc/devo-fc/blob/master/libraries/AP_GPS/AP_GPS_UBLOX.h

    Mehr Details später.

    Beste Grüße
     
  16. Norbert

    Norbert Richtiger Walkerafan

    Beiträge:
    156
    Zustimmungen:
    65
    Ort:
    Hamburg
    Hi,

    jetzt verstehe ich nix mehr.
    Ich hab auch nen FRSky, genauer D8R-IIplus.
    Hast Du etwa das Summensignal von Empfänger am Dataport angeschlossen?
    Wenn das geht schleppe ich ja ein halbes Kilo Kabel zuviel herum ;)

    Ich hatte nur das Oszi am Dataport der Devo-M und da kam das raus, was ich oben geschrieben hatte.
    Das ist kein normales serielles Uart und das eine Byte ist immer das selbe.
    Mit dem, was Du da schreibst, hat das, was ich hier auf dem Oszi sehe, rein gar nichts zu tun.

    Gruß,
    Norbert
     
  17. Bobness

    Bobness Starker Walkerafan

    Beiträge:
    73
    Zustimmungen:
    71
    Ort:
    Münster
    Hey, ja, das geht ohne Probleme zumindest mit dem D4R-II, aber der D8R-II müsste das gleiche Signal ausgeben. Auf dem Empfänger musst du allerdings einen Jumper setzen, um PPM zu aktivieren.
    Update: Du musst ihn von Plus zum XP flashen. So sollte es gehen:


    Mit dem halben Kilo weniger fliegt dein Kopter bestimmt viel besser ;)

    Ich denke schon. Anbei ein Screenshot der gestern aufgenommenen Daten. Es ist genau ein Paket abgebildet, dieses ist eins vom GPS. Ich versuche später, diese Daten auch nochmal mit meinem TTL-Adapter einzulesen, bin recht sicher dass es klappt.

    Beste Grüße
    X350_Telemetrie.png
     
    Zuletzt bearbeitet: 10. Apr. 2015
  18. Bobness

    Bobness Starker Walkerafan

    Beiträge:
    73
    Zustimmungen:
    71
    Ort:
    Münster
    Argh. Jetzt verstehe ich, warum wir unterschiedliche Werte haben! Du musst das Tali-Kabel-Set verwenden, dieses einzelne weiße Kabel geht dann (normalerweise) in den Telemetrie-Port des Rx705-Empfängers. Genau an dem haben wir gemessen. Du misst vermutlich am Servo-Ausgangskabel des Empfängers - da gibt es keine Telemetrie :)

    Basierend auf dem Mod hier:
    http://walkera-fans.de/telemetrie-upgrade-fuer-x350-pro-mit-devo-f12e-und-rx705/
     
    Zuletzt bearbeitet: 10. Apr. 2015
    gektor gefällt das.
  19. Norbert

    Norbert Richtiger Walkerafan

    Beiträge:
    156
    Zustimmungen:
    65
    Ort:
    Hamburg
    Argh, woher soll ich das denn wissen?
    Mit dem Dataport der Devo-M hat das also nichts zu tun sondern es spielt sich alles am GPS-Modul ab. Richtig?

    Also sind das einerseits Daten vom GPS und Daten von der Devo-M?
    Ich habe ein UBlox-8, nix 6-poliger Stecker.

    So, Oszi an RX und TX vom Ublox-8 gehalten.
    Devo-M sendet etwa jede Sekunde mit 38400Baud ca. 20 Byte an das GPS-Modul und das sendet alle 200ms auch mit 38400Baud schlappe 160 Byte an Devo-M. Für reines NMEA "etwas" zuviel.
    Das ist offensichtlich so synchronisiert, dass nicht gleichzeitig gesendet und empfangen werden muss.
    Auch nicht so ganz das, was Du da gesehen hast, aber da ist sicherlich alles drin.
    Beide Signale auf den RX eines µC zu schleifen ist ja kein Problem und mit dem UART-USB-Schnuffi, Hterm und gleichzeitig APM-Planner sollte man schnell rauskriegen, was was ist.

    Allerdings ergibt sich hier ja bei uns keinerlei Synergie mehr.
    Außerdem habe ich schon am Devo-M rumgelötet und schön Mavlink rausgeführt.
    Minimosd kommt bald und dann ist das alles easy.
    Zum Selbstzweck mache ich sowas nicht mehr.
    Spätestens ab Mo. muss ich zusehen, wie ich I2C mit der ranzigen USI der ATTiny hinkriege. Da muss ich mir sowas nicht noch unnötigerweise freiwillig am WE antun.
    Da gehe ich dieses WE lieber schön fliegen ohne Telemetrie.
    Aber berichte weiter bzw. mache einen Thread auf. Vielleicht habe ich ja auch noch was beizutragen.
    Ein recht ominöses NMEA (irgendwas custom, das es nicht gibt) hab ich auch schon entschlüsselt.

    Gruß,
    Norbert
     
  20. Bobness

    Bobness Starker Walkerafan

    Beiträge:
    73
    Zustimmungen:
    71
    Ort:
    Münster
    Danke für deinen Input!
    Genau, ich könnte mir vorstellen sowohl GPS als auch Devo-M sprechen auf das Kabel. Bin mir nicht sicher, ob die Daten direkt vom GPS stammen oder vom Devo-M weiter gereicht werden.

    Wir haben nur ohne GPS-Lock gesnifft, daher sind die Pakete wohl so kurz. Ich kann dir die Aufnahme als Text-Log-File zusenden, wenn du möchtest.

    Hilfe und Ideen kann man immer gebrauchen. Ich hoffe trotz fehlender Synergie bleibst du weiter am Ball :)

    Wirst du deinen D8R unflashen? Das Resultat würde mich interessieren. Ich bin mir sehr sicher, dass es so klappen wird.
     
Die Seite wird geladen...
Ähnliche Themen - Forum Datum
Modifikation Devo 12/12s Multiprotokoll Modul Walkera Devo 29. Nov. 2019
Gelöst Wer hat Erfahrung mit der Jumper t8sg Sender Multiprotokoll? Sonstige Sender und Empfänger 7. Feb. 2018
Bericht Die Flugelektronik des 300C Sonstige Hubschrauber 6. Feb. 2020
Bericht Die Einstellungen des 300C in der AT9S Sonstige Hubschrauber 2. Feb. 2020
Problem Kein Empfang des Videosignals an der F7 Devo F4 und F7 1. Nov. 2019