(drone) Port série sur linux et nrf24l01 = problème de transmission

Bonjour, je désespère :frowning: Je me suis lancé dans la création d'un drone/quadcopter. Pour ce faire, j'ai opter pour une communication radio. Je veux commander mon drone via joystick (manette de PS3) branchée au PC comme cela :

Manette de PS3 => PC => Port série => [ Arduino => Module radio NRF24L01 ] - - - - -> [Module radio NRF24L01 (drone)]

Je suis sous linux (debian).

J'ai donc un programme écrit en C qui pemet de récolter les données de la manette de PS3, et je veux envoyer ces données via le port série, pour que mon arduino+module radio connecté au PC envoie les données au drone.

Le problème est que les données envoyées par radio arrivent par rafale (environ 1 rafale par seconde), et certaines sont erronées, par exemple si à l'aide de mon joystick j'envoie la position 32 767 pendant 3 secondes, je vais recevoir ceci :

37 767
37 767
37 767
30 303
37 767
37 767
-706
37 767
37 767
37 767
4004
37 767

J'ai donc fais plusieurs test :

1/ j'ai tester les 2 modules radio, pas avec mon programme en C + manette de PS3, mais avec un simple joystick relié à l'arduino, et dans ces conditions, mes 2 modules radio fonctionnent parfaitement bien. Les valeurs sont bonnes et ne sont pas erronées.

2/J'ai tester mon programme C + ma manette de ps3 + 1 aduino relié, au PC, sans mes modules radio, et j'ai constaté que mon arduino reçoit bien les valeurs, en continue, sans faire de rafale.

Mais une fois que je combine le tout, l'arduino+module radio fixé au drone reçois les valeurs par rafales, et certaines d'entre elles sont erronées. Je me suis donc dit : peut être que le PC envoie trop de données par rapport au temps que l'arduino met à les traiter.

Au lieu d'envoyer sur, avec mon programme en C, le serial un int 20 fois par secondes, et essayé d'envoyer ce int, seulement 2 fois par seconde, et même problème, je me retrouve exactement avec la même fréquence d'erreurs...

Que faire ?? Je désespère, ça fait plusieurs jours que je tente en vain de pallier ce problème.

Je vous donne le code du programme en C, de l'émetteur (arduino+module radio fixé au pc) et du récepteur (arduino + module radio fixé au drone).

Merci d'avance, et bonnes fêtes de fin d'années ! :slight_smile:

programme en C : http://pastebin.com/f8wfFhaV
émetteur : http://pastebin.com/f6gD5whv
récepteur :