Démontage d'un drone, Épisode 3 : La revanche de la télécommande.

Rédigé par Salamandar - - 4 commentaires

Le protocole de communication

Comme je l'avais dit au second épisode, j'ai besoin de comprendre le protocole de communication entre la télécommande et le drone. Comme c'est quasi impossible de souder des fils directement sur le drone, je vais écouter ce qu'il se passe sur la télécommande.

Sur la télécommande, un bus SPI communique entre la puce principale (un PIC ?) et le composant radio (probablement un XN297). J'ai utilisé un Arduino Nano pour écouter sur le bus et afficher en temps réel sur mon PC les trames SPI.

Plusieurs frames se répètent : les 4 premières correspondent à la configuration du XN297. Il m'a suffit de lire la datasheet du nRF24L01 pour connaître quelle configuration est envoyée.
La dernière frame contient les données à envoyer au drone. J'ai décortiqué cette dernière frame et j'ai indiqué quel octet correspond à quelle commande.

0x20 0x0e // Write byte config (Power up, CRC 1 byte enabled)
0x25 0x48 // Write byte RF_channel (freq channel : 100 1000 = chann 72)
0x27 0x70 // Write byte status (clear TX_status/RX_status/MAX_RT status bits)
0xe1 0x00 // Flush TX (clean and new TX buffer)
0xa0 0x55 0x3a 0x88 0x89 0x8a 0xdc 0x05 0xdc 0x05 0xe8 0x03 0xdc 0x05 0x00 0x00
// Write TX buffer data

// Data frame :
//                   Côté  av/ar Gaz   Rotat
// A0 55 3A 88 89 8A cc cc aa 0a gg 0g rr Xr XX X0
// 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16
// byte 14 : 1000 .... Looping
// byte 15 : .1.. .... (press repeat) calibration B (btn2)
// byte 15 : ..1. .... (press repeat) calibration F (btn1)
// byte 15 : ...1 .... (press repeat) calibration L (btn3)
// byte 15 : .... 1... (press repeat) calibration R (btn4)
// byte 15 : .... ..xx Difficulté (0, 1, 2)
// byte 16 : .100 0000 (toggle button) photo
// byte 16 : 1.00 0000 (toggle button) video

J'ai donc ici l'intégralité du protocole de communication. Le drone ne répond jamais, c'est plus simple comme ça.

Prochaine étape : programmer le drone !

4 commentaires

#1  - Suske a dit :

Un petit mot pour te remercier: ce genre de partage peut aider d'autres à se mettre le pied à l'étrier, je fais suivre le lien ;-)

Suske

Répondre
#2  - Salamandar a dit :

Merci ! J'espère que ça te motivera ^^

Répondre
#3  - Eyolon a dit :

Hello merci pour tes recherches et cet article. En ce qui me concerne j ai fais l acquisition d un H8 mini et la radio com a le meme émetteur (xn297). Mais du coup avec ce que tu decrit comme mode op, je vais pouvoir utiliser la RC pour un montage perso sans la transformer avec un nrf24l01+ en reception

Répondre
#4  - Salamandar a dit :

En effet, c'est l'idée :)
Je ne me suis pas assez motivé pour écrire la suite et fin de mes bidouillages, mais tu peux trouver mon code de réception sur
https://github.com/Salamandar/nano-drone/blob/master/Code/nano-robot/src/radioTask.c
Il y a quelques subteletés sur les toggle, j'ai galéré à les gérer ^^
De même, il faut gérer le changement de channel après appairage. Bref, lis et comprends le code :D

Répondre

Fil RSS des commentaires de cet article

Écrire un commentaire

Quelle est la première lettre du mot rgqsj ?