[TUTO] Dropix MavLink to FrSky X8R X6R X4R S.Port converter
Forum Multirotors et Drones
MikroKopter de fred_photo
Merci de vous connecter ou de vous inscrire.

Connexion avec identifiant, mot de passe et durée de la session

Auteur Sujet: [TUTO] Dropix MavLink to FrSky X8R X6R X4R S.Port converter  (Lu 23261 fois)

djsyl

  • Modérateur Global
  • Membre Héroïque
  • ******
  • Hors ligne Hors ligne
  • Messages: 13 634
  • Sylvain - F8byc
    • Club-Aquilon
[TUTO] Dropix MavLink to FrSky X8R X6R X4R S.Port converter
« le: 09 janvier 2015 à 10:38:01 »

J'ai l'intension de suivre et de réaliser ce sujet pour ma Dropix !

http://diydrones.com/forum/topics/amp-to-frsky-x8r-sport-converter?id=705844:Topic:1539556&page=1#comments

Si quelqu'un a une solution "Plus software" ou plus élégante je suis preneur !

en gros ce système fonctionne ainsi

Dropix -> TX/TR (mavlink) -> teensy (conversion mavlink / Sport frsky) -> TX/RX S-port X8R !

la partie hardware semble très simple ...






D'autres idées ?


« Modifié: 02 avril 2015 à 07:43:23 par djsyl »
IP archivée

nicodh

  • Membre Senior
  • *****
  • Hors ligne Hors ligne
  • Messages: 849
  • che boludo, un café.
Dropix MavLink to FrSky X8R S.Port converter
« Réponse #1 le: 09 janvier 2015 à 11:05:12 »

Tu pourras aussi l'utiliser avec ton mk. ;-)

IP archivée
- minishit, chassis diy, rctimer 1806-2300, 3S-4S
- Quad pliable, nacelle 3 axes gopro, full inmersive vectorized
- hexa S1 GH4 nacelle 3 axes. mk
- quad rachel 4S 1200W 600 gr 3D. abused naze32
- quad mk pour tests
- 360° drone pour videos 360.
- une chiée d'autres machines en etat de mi marche (un peu cassé, un peu detruit)

Randy

  • Membre Senior
  • *****
  • Hors ligne Hors ligne
  • Messages: 628
Dropix MavLink to FrSky X8R S.Port converter
« Réponse #2 le: 09 janvier 2015 à 11:10:07 »

FrSky propose un convertisseur : http://www.frsky-rc.com/product/pro.php?pro_id=34
http://copter.ardupilot.com/wiki/common-frsky-telemetry/ (je t'avais déjà mis le lien dans un autre post je crois, donc désolé de me répéter si ce n'est pas ce que tu cherches)
IP archivée
Chassis Sky-Hero Y6 900mm (hexa), électronique MK (Flight-Ctrl v2.5; Navi-Ctrl v2.0; Gps v2.1; EPI-OSD; carte de distrib Hexa XL; contrôleurs BL-Ctrl v2.0), Jeti DC-16 2.4GHz, transmetteur et récepteur vidéo diversity 5.8GHz, motorisation T-Motor U3, hélices 13x4.4", nacelle brushless 2 axes et carte Alexmos, batterie lipo 4S 8000mAh (configuration souhaitée) :D

djsyl

  • Modérateur Global
  • Membre Héroïque
  • ******
  • Hors ligne Hors ligne
  • Messages: 13 634
  • Sylvain - F8byc
    • Club-Aquilon
Dropix MavLink to FrSky X8R S.Port converter
« Réponse #3 le: 09 janvier 2015 à 11:46:07 »

FrSky propose un convertisseur : http://www.frsky-rc.com/product/pro.php?pro_id=34
http://copter.ardupilot.com/wiki/common-frsky-telemetry/ (je t'avais déjà mis le lien dans un autre post je crois, donc désolé de me répéter si ce n'est pas ce que tu cherches)


Oui merci mais ça c'est pour les séries D qui ont un TX/RX séparé ...

sur les séries X en Sport il n'y a qu'une ligne TX et RX sont confondu.

et je ne sais pas si le protocol est présenté pareil !

@Nicodh j'ai plus de MK Snif ...

nicodh

  • Membre Senior
  • *****
  • Hors ligne Hors ligne
  • Messages: 849
  • che boludo, un café.
Dropix MavLink to FrSky X8R S.Port converter
« Réponse #4 le: 09 janvier 2015 à 14:53:16 »

Mais quand tu auras à nouveau. ;-)
Et non le protocole de et x ne sont pas les même.
IP archivée
- minishit, chassis diy, rctimer 1806-2300, 3S-4S
- Quad pliable, nacelle 3 axes gopro, full inmersive vectorized
- hexa S1 GH4 nacelle 3 axes. mk
- quad rachel 4S 1200W 600 gr 3D. abused naze32
- quad mk pour tests
- 360° drone pour videos 360.
- une chiée d'autres machines en etat de mi marche (un peu cassé, un peu detruit)

djsyl

  • Modérateur Global
  • Membre Héroïque
  • ******
  • Hors ligne Hors ligne
  • Messages: 13 634
  • Sylvain - F8byc
    • Club-Aquilon
Dropix MavLink to FrSky X8R S.Port converter
« Réponse #5 le: 09 janvier 2015 à 15:04:02 »

Mais quand tu auras à nouveau. ;-)
Et non le protocole de et x ne sont pas les même.

Merci de cette confirmation.

Tu crois que l'on pourrait utiliser le code S-PORT pour Récepteur X directement dans la dropix ?
ça fait un peut mal aux dents d'avoir un avec un proc 32 et de devoir mettre une verrue a l'extérieur ...

nicodh

  • Membre Senior
  • *****
  • Hors ligne Hors ligne
  • Messages: 849
  • che boludo, un café.
Dropix MavLink to FrSky X8R S.Port converter
« Réponse #6 le: 09 janvier 2015 à 16:14:21 »

Oui tu peux. J'ai dérivé mon code pour mk du code pour arducopter,mavlink.
Il existe déjà le mavlink to frsky nouveau protocole. Il est quelque part cherche altapix j'ai pas de réseau pour le faire à mon bureau.
IP archivée
- minishit, chassis diy, rctimer 1806-2300, 3S-4S
- Quad pliable, nacelle 3 axes gopro, full inmersive vectorized
- hexa S1 GH4 nacelle 3 axes. mk
- quad rachel 4S 1200W 600 gr 3D. abused naze32
- quad mk pour tests
- 360° drone pour videos 360.
- une chiée d'autres machines en etat de mi marche (un peu cassé, un peu detruit)

nicodh

  • Membre Senior
  • *****
  • Hors ligne Hors ligne
  • Messages: 849
  • che boludo, un café.
Dropix MavLink to FrSky X8R S.Port converter
« Réponse #7 le: 09 janvier 2015 à 17:21:06 »

djsyl, il faut bricoler le code de la dropix, donc arducopter et modifier le fichier qui correspond a la telemetry frsky vieux protocole remplacer par le nouveau protocole.
Ca dvrait etre realisable assez facilement. Je crois avoir vu quelque chose mais je ne sais plus ou.. :-(
IP archivée
- minishit, chassis diy, rctimer 1806-2300, 3S-4S
- Quad pliable, nacelle 3 axes gopro, full inmersive vectorized
- hexa S1 GH4 nacelle 3 axes. mk
- quad rachel 4S 1200W 600 gr 3D. abused naze32
- quad mk pour tests
- 360° drone pour videos 360.
- une chiée d'autres machines en etat de mi marche (un peu cassé, un peu detruit)

djsyl

  • Modérateur Global
  • Membre Héroïque
  • ******
  • Hors ligne Hors ligne
  • Messages: 13 634
  • Sylvain - F8byc
    • Club-Aquilon
Dropix MavLink to FrSky X8R S.Port converter
« Réponse #8 le: 09 janvier 2015 à 18:31:16 »

Ben dans le source qui est donné il y a déjà pas mal de choses ...
#include "FrSkySPort.h"

#define _FrSkySPort_Serial            Serial1
#define _FrSkySPort_C1                UART0_C1
#define _FrSkySPort_C3                UART0_C3
#define _FrSkySPort_S2                UART0_S2
#define _FrSkySPort_BAUD           57600
#define   MAX_ID_COUNT              19

short crc;                         // used for crc calc of frsky-packet
uint8_t lastRx;
uint32_t FR_ID_count = 0;
uint8_t cell_count = 0;
uint8_t latlong_flag = 0;
uint32_t latlong = 0;
uint8_t first=0;
// ***********************************************************************
void FrSkySPort_Init(void)  {
      _FrSkySPort_Serial.begin(_FrSkySPort_BAUD);
      _FrSkySPort_C3 = 0x10;            // Tx invert
      _FrSkySPort_C1= 0xA0;            // Single wire mode
      _FrSkySPort_S2 = 0x10;           // Rx Invert
     
}

// ***********************************************************************
void FrSkySPort_Process(void) {
uint8_t data = 0;
        uint32_t temp=0;
uint8_t offset;
        while ( _FrSkySPort_Serial.available())
          {
  data =  _FrSkySPort_Serial.read();
          if (lastRx == START_STOP && ((data == SENSOR_ID1) || (data == SENSOR_ID2) || (data == SENSOR_ID3)  || (data == SENSOR_ID4)))
            {
             
              switch(FR_ID_count) {
                 case 0:
                   if(ap_fixtype==3) {
                     FrSkySPort_SendPackage(FR_ID_SPEED,ap_groundspeed *20 );  // from GPS converted to km/h
                    }
                   break;
                 case 1:
                   FrSkySPort_SendPackage(FR_ID_RPM,ap_throttle * 2);   //  * 2 if number of blades on Taranis is set to 2
                   break;
                case 2:
                   FrSkySPort_SendPackage(FR_ID_CURRENT,ap_current_battery / 10);
                   break;
               case 3:        // Sends the altitude value from barometer, first sent value used as zero altitude
                  FrSkySPort_SendPackage(FR_ID_ALTITUDE,ap_bar_altitude);   // from barometer, 100 = 1m
                  break;       
                case 4:        // Sends the ap_longitude value, setting bit 31 high
                   if(ap_fixtype==3) {
                       if(ap_longitude < 0)
                           latlong=((abs(ap_longitude)/100)*6)  | 0xC0000000;
                           else
                           latlong=((abs(ap_longitude)/100)*6)  | 0x80000000;
                       FrSkySPort_SendPackage(FR_ID_LATLONG,latlong);
                       }
                   break;
                 case 5:        // Sends the ap_latitude value, setting bit 31 low 
                     if(ap_fixtype==3) {
                         if(ap_latitude < 0 )
                             latlong=((abs(ap_latitude)/100)*6) | 0x40000000;
                             else
                             latlong=((abs(ap_latitude)/100)*6);
                         FrSkySPort_SendPackage(FR_ID_LATLONG,latlong);
                         }
                    break; 
                 case 6:        // Sends the compass heading
                   FrSkySPort_SendPackage(FR_ID_HEADING,ap_heading * 100);   // 10000 = 100 deg
                   break;   
                 case 7:        // Sends the analog value from input A0 on Teensy 3.1
                    FrSkySPort_SendPackage(FR_ID_ADC2,adc2);                 
                    break;       
                 case 8:        // First 2 cells
                       temp=((ap_voltage_battery/(ap_cell_count * 2)) & 0xFFF);
                       FrSkySPort_SendPackage(FR_ID_CELLS,(temp << 20) | (temp << 8));          // Battery cell 0,1
                       break;
                  case 9:    // Optional 3 and 4 Cells
                      if(ap_cell_count > 2) {
                          offset = ap_cell_count > 3 ? 0x02: 0x01;
                          temp=((ap_voltage_battery/(ap_cell_count * 2)) & 0xFFF);
                          FrSkySPort_SendPackage(FR_ID_CELLS,(temp << 20) | (temp << 8) | offset);  // Battery cell 2,3
                          }
                      break;
                 case 10:    // Optional 5 and 6 Cells
                      if(ap_cell_count > 4) {
                          offset = ap_cell_count > 5 ? 0x04: 0x03;
                          temp=((ap_voltage_battery/(ap_cell_count * 2)) & 0xFFF);
                          FrSkySPort_SendPackage(FR_ID_CELLS,(temp << 20) | (temp << 8) | offset);  // Battery cell 2,3
                          }
                      break;     
                 case 11:
                   FrSkySPort_SendPackage(FR_ID_ACCX,ap_accX_old - ap_accX);   
                     break;
                case 12:
                   FrSkySPort_SendPackage(FR_ID_ACCY,ap_accY_old - ap_accY);
                   break;
                case 13:
                   FrSkySPort_SendPackage(FR_ID_ACCZ,ap_accZ_old - ap_accZ );
                   break;
                case 14:        // Sends voltage as a VFAS value
                   FrSkySPort_SendPackage(FR_ID_VFAS,ap_voltage_battery/10);
                   break;   
                case 15:
                   FrSkySPort_SendPackage(FR_ID_T1,gps_status);
                   break;
                case 16:
                   FrSkySPort_SendPackage(FR_ID_T2,ap_base_mode);
                   break;
               case 17:
                   FrSkySPort_SendPackage(FR_ID_VARIO,ap_climb_rate );       // 100 = 1m/s       
                   break;
               case 18:
                   //if(ap_fixtype==3) {
                       FrSkySPort_SendPackage(FR_ID_GPS_ALT,ap_gps_altitude / 10);   // from GPS,  100=1m
                     // }
                   break;
               case 19:
                   FrSkySPort_SendPackage(FR_ID_FUEL,ap_custom_mode);
                   break;     
                   
               }
            FR_ID_count++;
            if(FR_ID_count > MAX_ID_COUNT) FR_ID_count = 0; 
            }
          lastRx=data;
          }
}


// ***********************************************************************
void FrSkySPort_SendByte(uint8_t byte) {

       _FrSkySPort_Serial.write(byte);

        // CRC update
crc += byte;         //0-1FF
crc += crc >> 8;   //0-100
crc &= 0x00ff;
crc += crc >> 8;   //0-0FF
crc &= 0x00ff;
}


// ***********************************************************************
void FrSkySPort_SendCrc() {
_FrSkySPort_Serial.write(0xFF-crc);
        crc = 0;          // CRC reset
}


// ***********************************************************************
void FrSkySPort_SendPackage(uint16_t id, uint32_t value) {
             
if(MavLink_Connected) {
            digitalWrite(led,HIGH);
            }
        _FrSkySPort_C3 |= 32;      //  Transmit direction, to S.Port
FrSkySPort_SendByte(DATA_FRAME);
uint8_t *bytes = (uint8_t*)&id;
FrSkySPort_SendByte(bytes[0]);
FrSkySPort_SendByte(bytes[1]);
bytes = (uint8_t*)&value;
FrSkySPort_SendByte(bytes[0]);
FrSkySPort_SendByte(bytes[1]);
FrSkySPort_SendByte(bytes[2]);
FrSkySPort_SendByte(bytes[3]);
FrSkySPort_SendCrc();
_FrSkySPort_Serial.flush();
_FrSkySPort_C3 ^= 32;      // Transmit direction, from S.Port

        digitalWrite(led,LOW);
       
}

djsyl

  • Modérateur Global
  • Membre Héroïque
  • ******
  • Hors ligne Hors ligne
  • Messages: 13 634
  • Sylvain - F8byc
    • Club-Aquilon
Dropix MavLink to FrSky X8R S.Port converter
« Réponse #9 le: 10 janvier 2015 à 15:13:09 »

Bon j'ai reçu mes teensy ce matin Nickel !

3 fils d'un coté, 3 fils de l'autre, un petit coup de programmation et hop hop hop le tout sur la dropix ça fonctionne au 1/4 de tour du 1ere coup !




Slyfly

  • Membre Héroïque
  • ******
  • Hors ligne Hors ligne
  • Messages: 1 160
    • Panormandic
Dropix MavLink to FrSky X8R S.Port converter
« Réponse #10 le: 10 janvier 2015 à 15:46:54 »

Super, tu me diras si tu arrives à paramétrer des alarmes vocales sur la batterie, le HDOP ou l'altitude
IP archivée
Hexa S3 65cm 2kg X2212 10X3.3 4S
Quad S3 45cm 1,5kg X2212 10x5 4S
Hexa S1 4kg 3508 580kv 13x5 Brushless 3 axes Nex7
Quad slow fly S3 2kg 3508 380kv 15X5 6S pour cartographie
Ailes volantes S2 2kg pour cartographie
FC : Pixhawk - APM2 - APM 2.5

djsyl

  • Modérateur Global
  • Membre Héroïque
  • ******
  • Hors ligne Hors ligne
  • Messages: 13 634
  • Sylvain - F8byc
    • Club-Aquilon
Dropix MavLink to FrSky X8R S.Port converter
« Réponse #11 le: 10 janvier 2015 à 17:20:39 »

Mise a part ce qui est présent dans l'écran de "Télémesure" il faudra passer par du LUA !

nicodh

  • Membre Senior
  • *****
  • Hors ligne Hors ligne
  • Messages: 849
  • che boludo, un café.
Dropix MavLink to FrSky X8R S.Port converter
« Réponse #12 le: 10 janvier 2015 à 19:03:58 »

Et passer sur le lua c'est super easy. ;-)

IP archivée
- minishit, chassis diy, rctimer 1806-2300, 3S-4S
- Quad pliable, nacelle 3 axes gopro, full inmersive vectorized
- hexa S1 GH4 nacelle 3 axes. mk
- quad rachel 4S 1200W 600 gr 3D. abused naze32
- quad mk pour tests
- 360° drone pour videos 360.
- une chiée d'autres machines en etat de mi marche (un peu cassé, un peu detruit)

djsyl

  • Modérateur Global
  • Membre Héroïque
  • ******
  • Hors ligne Hors ligne
  • Messages: 13 634
  • Sylvain - F8byc
    • Club-Aquilon
Dropix MavLink to FrSky X8R S.Port converter
« Réponse #13 le: 10 janvier 2015 à 23:48:35 »

Avant LUA il y a quand même les inters logiques :)

Slyfly

  • Membre Héroïque
  • ******
  • Hors ligne Hors ligne
  • Messages: 1 160
    • Panormandic
Dropix MavLink to FrSky X8R S.Port converter
« Réponse #14 le: 11 janvier 2015 à 02:07:37 »

Merci les gars, vous venez d’écrire mon programme de la semaine
IP archivée
Hexa S3 65cm 2kg X2212 10X3.3 4S
Quad S3 45cm 1,5kg X2212 10x5 4S
Hexa S1 4kg 3508 580kv 13x5 Brushless 3 axes Nex7
Quad slow fly S3 2kg 3508 380kv 15X5 6S pour cartographie
Ailes volantes S2 2kg pour cartographie
FC : Pixhawk - APM2 - APM 2.5

nicodh

  • Membre Senior
  • *****
  • Hors ligne Hors ligne
  • Messages: 849
  • che boludo, un café.
Dropix MavLink to FrSky X8R S.Port converter
« Réponse #15 le: 11 janvier 2015 à 06:04:32 »

oui mais c'est tellement plu beau les lua:


Avec le pouet comme son d'alarme quand une erreur mk est envoyé. Il me reste juste a rajouter un ou deux trucs et ce sera parfait.
Je pourrais presque faire passer le sbus, le decoder avec la teensy et sortir la trame ppm. Mais ca me rajouterais 2 fils. :D
IP archivée
- minishit, chassis diy, rctimer 1806-2300, 3S-4S
- Quad pliable, nacelle 3 axes gopro, full inmersive vectorized
- hexa S1 GH4 nacelle 3 axes. mk
- quad rachel 4S 1200W 600 gr 3D. abused naze32
- quad mk pour tests
- 360° drone pour videos 360.
- une chiée d'autres machines en etat de mi marche (un peu cassé, un peu detruit)

djsyl

  • Modérateur Global
  • Membre Héroïque
  • ******
  • Hors ligne Hors ligne
  • Messages: 13 634
  • Sylvain - F8byc
    • Club-Aquilon
Dropix MavLink to FrSky X8R S.Port converter
« Réponse #16 le: 11 janvier 2015 à 07:27:31 »

Dommage ça manque un peut de graphique

je me suis modifier celui-la aussi :)

« Modifié: 11 janvier 2015 à 07:29:24 par djsyl »
IP archivée

nicodh

  • Membre Senior
  • *****
  • Hors ligne Hors ligne
  • Messages: 849
  • che boludo, un café.
Dropix MavLink to FrSky X8R S.Port converter
« Réponse #17 le: 11 janvier 2015 à 08:13:56 »

il est beau le tien.

J'avais decidé de copié exactement la telem de graupner pour ne pas depayser quelqu'un.

Mais c'est vrai que pourquoi pas refaire un truc diferent en plus.

Tiens tu me files le lien du lua?


Merci.

Ca y est j'ai trouvé. :)
Maintenant a faire des modifs pour le faire compatible avec mon systeme.


« Modifié: 11 janvier 2015 à 08:28:27 par nicodh »
IP archivée
- minishit, chassis diy, rctimer 1806-2300, 3S-4S
- Quad pliable, nacelle 3 axes gopro, full inmersive vectorized
- hexa S1 GH4 nacelle 3 axes. mk
- quad rachel 4S 1200W 600 gr 3D. abused naze32
- quad mk pour tests
- 360° drone pour videos 360.
- une chiée d'autres machines en etat de mi marche (un peu cassé, un peu detruit)

djsyl

  • Modérateur Global
  • Membre Héroïque
  • ******
  • Hors ligne Hors ligne
  • Messages: 13 634
  • Sylvain - F8byc
    • Club-Aquilon
Dropix MavLink to FrSky X8R S.Port converter
« Réponse #18 le: 11 janvier 2015 à 09:03:21 »

Fégnasse  ;)

c'est a bricoler car c'est pour du DJI  MDR

les sources viennent de la :


http://www.kopterforum.de/topic/17168-mod-phantom2-taranis-zaggometry/
« Modifié: 11 janvier 2015 à 09:05:39 par djsyl »
IP archivée

nicodh

  • Membre Senior
  • *****
  • Hors ligne Hors ligne
  • Messages: 849
  • che boludo, un café.
Dropix MavLink to FrSky X8R S.Port converter
« Réponse #19 le: 11 janvier 2015 à 09:15:43 »

J'ai pas envie de me taper les dessins de zéro. Je suis nul en dessin j'ai eu 2 au bac comme en philo.
J'avais bien compris que c'était pour dji. ;-)
Je modifierait en fonction. Et enlever les trucs qui servent à rien. :-)
Merci
IP archivée
- minishit, chassis diy, rctimer 1806-2300, 3S-4S
- Quad pliable, nacelle 3 axes gopro, full inmersive vectorized
- hexa S1 GH4 nacelle 3 axes. mk
- quad rachel 4S 1200W 600 gr 3D. abused naze32
- quad mk pour tests
- 360° drone pour videos 360.
- une chiée d'autres machines en etat de mi marche (un peu cassé, un peu detruit)