RCLogger

Banggood

Foxtech

Flyduino.net

Pidso.com

FPV1.DE
Seite 1 von 2 1 2 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: FrSky Telemetrie / Protokoll

  1. #1
    Erfahrener Benutzer
    Registriert seit
    25.11.2012
    Beiträge
    439

    FrSky Telemetrie / Protokoll

    Hallo,

    hat sich jemand schon mal mit den Protokollen von FrSky auseinander gesetzt?
    Konkret möchte ich zb für den Anfang die GPS Daten von einem eigenem GPS Modul übertragen. uC und Programmierkenntnisse habe ich, aber ein Referenzprojekt wäre ganz gut.

    Danke!

  2. #2
    Das Protokoll ist komplett offen, dokumente gibts alle bei FrSky auf der Seite.

    http://www.frsky-rc.com/uploadfile/2...1121837352.pdf
    http://www.frsky-rc.com/uploadfile/2...0193905895.pdf
    und andere,

    Du musst im Prinzip die NMEA Daten vom GPS parsen und in binäre FrSky Hub Frames verwandeln. Soweit hatte ich das alles schon mal am laufen. Das einzige Problem war das das FrSky zwar mit 9600 an Ein und Ausgang arbeitet, aber nur deutlich weniger Zeichen pro sec. übertragen kann. wenn du zu schnell sendest dann verschluckt es sich.
    Du kannst z.B: auch mal im sourcecode vom Naze32 gucken, das kann auch FrSky frames erzeugen und ausspucken.

    Ach und noch eins, FrSky arbeitet an ein und Ausgang mit RS232 Signalen, nicht TTL, also entweder Umsetzer verwenden oder Spannungsteiler und Inverter.
    Geändert von der-Frickler (27.11.2012 um 10:38 Uhr)
    Baubeschreibungen und Fotos meiner Modelle unter http://www.der-frickler.net. Bitte keine Anfragen zum Bau/Fräsen. Bei einigen Projekten werde ich zu gegebener Zeit die Pläne veröffentlichen.

  3. #3
    Erfahrener Benutzer
    Registriert seit
    25.11.2012
    Beiträge
    439
    Danke!
    Wie genau funktioniert es mit der Übertragung? Also wenn ich ein Hub Frame mit meinem (zb) Atmega erzeugt habe - sende ich den via RS-232 an das Telemetriemodul und dieses überträgt es dann? Wie genau kann ich es dann empfangen?

  4. #4
    Genau, du schreibst mit dem Atmel binäre daten auf der seriellen raus, da hast dann n Umsätzer nach RS232 der geht dann an den RX vom FrSky Emfpänger. Am FrSky Sendemodul kommt das Frame dann wieder mit rs232 Level am TX pin raus - hier allerdings in FrSky frames gekapselt. Die kannst du dann über nen Wandler wieder an der seriellen von z.B: nem 2. Atmel einlesen, aus den FrSky frames auspacken und anzeigen oder was auch immer.

    Wenn du am FrSky Empfänger halt Daten im FrSky Hub Format generiert und einspeist dann kannst du am Boden einach mit dem Display von FrSky oder ner 9x mit FrSky mod anzeigen.
    Geändert von der-Frickler (27.11.2012 um 10:38 Uhr)
    Baubeschreibungen und Fotos meiner Modelle unter http://www.der-frickler.net. Bitte keine Anfragen zum Bau/Fräsen. Bei einigen Projekten werde ich zu gegebener Zeit die Pläne veröffentlichen.

  5. #5
    Erfahrener Benutzer
    Registriert seit
    25.11.2012
    Beiträge
    439
    Vielen Dank! Ich lese mich dann weiter ein!

  6. #6
    Hier mal der Code vom Naze32 der die FrSky Daten erzeugt - als Beispiel.
    http://code.google.com/p/afrodevices...rc/telemetry.c
    Baubeschreibungen und Fotos meiner Modelle unter http://www.der-frickler.net. Bitte keine Anfragen zum Bau/Fräsen. Bei einigen Projekten werde ich zu gegebener Zeit die Pläne veröffentlichen.

  7. #7
    Erfahrener Benutzer
    Registriert seit
    25.11.2012
    Beiträge
    439
    Damit kann man ja nun eigentlich relativ einfach zB Antennentracking realisieren, oder stelle ich mir das gerade aus irgendeinem Grund zu einfach vor?

  8. #8
    Im prinzip ja, aber wie gesagt, so einfach isses nicht, GPS Daten zum Boden zu bekommen sollte gut machbar sein, siehe FrSky Hub und Naze Code.
    Was du dann damit am Boden machst ist ne andere Sache, haben ja schon einige hier mal probiert wenn ich nicht irre.
    Für mich keine Option, ich will keinen Tracker der nur mit Fliegern geht die ein GPS drin haben.
    Baubeschreibungen und Fotos meiner Modelle unter http://www.der-frickler.net. Bitte keine Anfragen zum Bau/Fräsen. Bei einigen Projekten werde ich zu gegebener Zeit die Pläne veröffentlichen.

  9. #9
    Erfahrener Benutzer
    Registriert seit
    07.03.2011
    Beiträge
    9.496
    Den FrSky Tracker gibt es schon, musst mal im Forum suchen, den hat einer schon Prorammiert, da mir bisher die GPS Daten vom Modell fehlen, hatte ich den noch nicht nachgebaut

  10. #10
    Erfahrener Benutzer Avatar von meister
    Registriert seit
    19.08.2012
    Ort
    Hessen
    Beiträge
    1.068
    Blog-Einträge
    3
    Hi,
    wollte auch mal was zu FrSky schreiben.

    Am Original-Hub lassen sich auch Standart NMEA-GPS Module betreiben (9600Baud/1Hz), sowie BMP085-Sensoren.
    Der RPM-Eingang erwartet nur einen Takt.
    Einen Konverter (RS232<->TTL) kann man einfach mit einem Transistor und 2 Widerständen bauen.
    Man kann auch andere Daten über FrSky senden (z.B. direkt NMEA), das Protokoll auf der RX-Seite legt nur der Hub fest,
    auf der TX-Seite muss man allerdings seine Daten dann wieder aus dem FrSky-Protokoll (User-Daten) extrahieren.
    Dabei sollte man aber insgesammt unter 2000 Zeichen/Sec bleiben.

    Als Hub kann man auch einen Arduino mit Software-Serial nutzen um den Hardware-Serial Port für ein GPS frei zu haben.

    Einen Demo-Code hab ich auch dafür (Sendet jedoch nur Fake-Daten / RPM & Lipo-Voltage):
    Code:
    #include <SoftwareSerial.h>
    SoftwareSerial mySerial(2, 3);
    
    
    #define FRSKY_USERDATA_GPS_ALT_B    0x01
    #define FRSKY_USERDATA_TEMP1        0x02
    #define FRSKY_USERDATA_RPM          0x03
    #define FRSKY_USERDATA_FUEL         0x04
    #define FRSKY_USERDATA_TEMP2        0x05
    #define FRSKY_USERDATA_CELL_VOLT    0x06
    
    #define FRSKY_USERDATA_GPS_ALT_A    0x09
    #define FRSKY_USERDATA_BARO_ALT_B   0x10
    #define FRSKY_USERDATA_GPS_SPEED_B  0x11
    #define FRSKY_USERDATA_GPS_LONG_B   0x12
    #define FRSKY_USERDATA_GPS_LAT_B    0x13
    #define FRSKY_USERDATA_GPS_CURSE_B  0x14
    #define FRSKY_USERDATA_GPS_DM       0x15
    #define FRSKY_USERDATA_GPS_YEAR     0x16
    #define FRSKY_USERDATA_GPS_HM       0x17
    #define FRSKY_USERDATA_GPS_SEC      0x18
    #define FRSKY_USERDATA_GPS_SPEED_A  0x19
    #define FRSKY_USERDATA_GPS_LONG_A   0x1A
    #define FRSKY_USERDATA_GPS_LAT_A    0x1B
    #define FRSKY_USERDATA_GPS_CURSE_A  0x1C
    
    #define FRSKY_USERDATA_BARO_ALT_A   0x21
    #define FRSKY_USERDATA_GPS_LONG_EW  0x22
    #define FRSKY_USERDATA_GPS_LAT_EW   0x23
    #define FRSKY_USERDATA_ACC_X        0x24
    #define FRSKY_USERDATA_ACC_Y        0x25
    #define FRSKY_USERDATA_ACC_Z        0x26
    
    #define FRSKY_USERDATA_CURRENT      0x28
    
    #define FRSKY_USERDATA_VOLTAGE_B    0x3A
    #define FRSKY_USERDATA_VOLTAGE_A    0x3B
    
    
    uint16_t val = 0;
    
    void SendValue(uint8_t ID, uint16_t Value) {
        uint8_t tmp1 = Value & 0x00ff;
        uint8_t tmp2 = (Value & 0xff00)>>8;
        mySerial.write(0x5E);
        mySerial.write(ID);
        if(tmp1 == 0x5E) {
          mySerial.write(0x5D);
          mySerial.write(0x3E);
        } else if(tmp1 == 0x5D) {
          mySerial.write(0x5D);
          mySerial.write(0x3D);
        } else {
           mySerial.write(tmp1);
        }
        if(tmp2 == 0x5E) {
          mySerial.write(0x5D);
          mySerial.write(0x3E);
        } else if(tmp2 == 0x5D) {
          mySerial.write(0x5D);
          mySerial.write(0x3D);
        } else {
           mySerial.write(tmp2);
        }
        mySerial.write(0x5E);
    }
    
    void SendVoltage(uint8_t cellID, uint16_t voltage) {
      voltage /= 2;
      uint8_t v1 = (voltage & 0x0f00)>>8 | (cellID<<4 & 0xf0);
      uint8_t v2 = (voltage & 0x00ff);
      uint16_t Value = (v1 & 0x00ff) | (v2<<8);
      SendValue(FRSKY_USERDATA_CELL_VOLT, Value);
    }
    
    void setup(void) {
      Serial.begin(9600);
      mySerial.begin(9600);
    }
    
    void loop(void) {
    
      SendValue(FRSKY_USERDATA_RPM, val++);
      delay(400);
    
      SendVoltage(0, 3200);
      delay(100);
      SendVoltage(1, 3300);
      delay(100);
      SendVoltage(2, 3400);
      delay(100);
      
    }
    Der Code ist allerdings nur mit meiner eigenen Boden-Station getestet, diese funktioniert aber genause mit dem Original-Hub.
    Daher sollte es auch mit dem Original Display funktionieren !

    Gruß,
    Olli

Ähnliche Themen

  1. Frsky-Telemetrie an Turnigy 9x
    Von california im Forum FrSky
    Antworten: 41
    Letzter Beitrag: 25.05.2014, 01:31
  2. FrSky Telemetrie Sprachausgabe
    Von christian1990 im Forum Fernsteuerung
    Antworten: 22
    Letzter Beitrag: 28.06.2012, 21:17
  3. Frage zum FrSky Sensor Hub Protokoll
    Von Rangarid im Forum Fernsteuerung
    Antworten: 10
    Letzter Beitrag: 27.03.2012, 18:36
  4. Frage zu FrSky-Telemetrie
    Von wolfgangm im Forum Fernsteuerung
    Antworten: 3
    Letzter Beitrag: 22.01.2012, 16:52
  5. FrSky Sendermudul Telemetrie
    Von amadeus im Forum Suche
    Antworten: 6
    Letzter Beitrag: 08.11.2011, 20:47

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •