FlySky i6 IBus: 14 canaux! (part1)

Je suis étudiant (en génie électronique), je suis fauché comme les blés, et pourtant j’suis comme un gosse qui veux un jouet: un quadcopter! Ma quête d’un tel engin à moindre coût s’est déroulée sans trop d’encombre, jusqu’au choix d’une commande RC et de son récepteur… Finalement un joli carton contenant une FlySky FS-i6 est parvenu jusqu’à ma porte. C’est une commande en 2.4GHz, qui permet également, un jour peut-être, de faire de la télémétrie (c’est à dire récupérer des informations sur le drone en temps réel, sur le transmetteur). Elle dispose de 6 canaux de transmission. 6 canaux c’est bien, mais 14 c’est mieux! 

Théorie des commandes Servomoteur

Un servomoteur dispose d’une interface 3 fils: une masse, une alimentation +5V, et un fil de « signal ». Ce signal est en fait un signal PWM (« Pulse Width Modulation »= modulation par largeur d’impulsion), dont la largeur d’impulsion (en µs) est la valeur transmise. Cette valeur va typiquement de 1000 à 2000, 1500 étant le point milieu, par défaut. Dans le cas d’un drone, ces commandes servo sont transmises à un controleur de vol (FC) qui les traduira en commandes à effectuer aux 4 moteurs, plus précisement à leur ESC, en effectuant une régulation grâce aux différents capteurs du FC, plus de détails un jour peut-être sur ce blog (teasing!).

IMG_1212

Transmission IBus

Le point particulier de la FS-i6 est qu’elle dispose de l’interface IBus, qui permet la télémétrie, mais aussi de transmettre les signaux servo au FC au moyen d’une communication série, et donc de limiter les connexions entre récepteur et FC mais aussi de s’appuyer sur une transmission purement numérique et non plus sur la largeur d’impulsion d’un signal carré.

IMG_1207

Par curiosité, j’ai voulu savoir ce qu’il se transmettait par ce canal série, entre récepteur et FC. J’ai donc sorti mon analyseur logique et sniffé le port « servo » sur le récepteur. J’utilise le logiciel Saleae Logic, bien que matériellement je n’ai qu’une contrefaçon de leur produit. J’en suis désolé, mais encore une fois l’argent n’est pas mon ami!

image2 - ibus servo port

On voit donc qu’un paquet est envoyé tous les 7.7 ms environs. On s’attend, dans ce paquet, à retrouver les valeurs de chacun des 6 canaux. Pendant la collecte, les sticks de la commande étaient dans leur position par défaut, c’est à dire 1500 pour le yaw, le pitch et le roll, 1000 pour le thrust, et 2000 pour les 2 autres canaux auxiliaires. En hexadécimal, 1500 se note 0x05DC. Voici un zoom sur un des  paquets, décodé au moyen du logiciel. (Serial 115200 bauds, 8n1)

image3 - ibus servo port zoom

Bingo, le 3eme et le 4eme byte valent 0x05DC (ils sont envoyés à l’envers) et le 5eme et 6eme valent 0X05DB.

Si on reprend tous les bytes transmis dans un paquet, regroupés 2 par 2:

x20x40   = Header
xDCx05  = 1500 ch 1
xDBx05  = 1499 ch 2
xEFx03  = 1007 ch 3
xDDx05  = 1501 ch 4
xD0x07  = 2000 ch 5
xD0x07  = 2000 ch 6
xDCx05  = 1500
xDCx05  = 1500
xDCx05  = 1500
xDCx05  = 1500
xDCx05  = 1500
xDCx05  = 1500
xDCx05  = 1500
xDCx05  = 1500
x54xF3   = Footer, peut-être un checksum?

On reconnais donc 2 bytes de header, invariants selon les paquets, puis 12 bytes qui composent nos 6 canaux et 2 bytes de fin qui représentent peut-être un genre de checksum sur le paquet envoyé. Entre les deux, une surprise! 8 canaux supplémentaires, bloqués à leur valeur par défaut: 1500. Ce qui pourrait porter le nombre de canaux transmis à 14, rien que ça!

Mais avant de se réjouir, il faut vérifier que ces canaux ne soient pas fictifs, c’est à dire qu’ils soient bien envoyés par la commande et pas créés de toute pièce par le récepteur pour coller aux spécifications du IBus. Pour cela, il est temps d’ouvrir la commande! Mon activité préférée! Mais ça sera pour un prochain article 😉

Thom

PS: As Dave says: « Don’t turn it on, tear it appart! »

Advertisements

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s