Voici un nouvel épisode de la saga du tricopter. Le but de l’opération était pourtant simple : mettre à jour le firmware (micro programme de la carte) de la carte de stabilisation du tricopter en utilisant avrdude et une interface adaptée.
La carte KK2.0 est assez ouverte et bidouillable, on trouve les plans facilement, il y a un connecteur ISP, ce connecteur est documenté, et une communauté qui fournit des firmware avec le code source, avec des alternatives comme OpenAero . Un logiciel (java) est conseillé pour faire la mise à jour : kkmulticopterflashtool. Comprendre l’outil et ses (nombreuses) options est une tâche en soi, j’ai rapidement basculé à utiliser avrdude directement en ligne de commande. Il y a une vrai culture de la bidouille dans ce hobby, des firmware en pagaille : pour la carte de stabilisation, pour les cartes de contrôle du moteur (ESC), pour les télécommandes, etc.
Deux échecs avant de réussir :
- FAIL : utilisation d’une arduino avec le sketch ArduinoISP
- FAIL : achat et utilisation d’un dongle USB USBASP (premier prix sur ebay)
- WIN : utilisation d’une carte BusPirate comme programmeur USB ISP
Première étape : utiliser une nappe IDE sur la carte KK 2.0 :
FAIL : ArduinoISP
J’avais bien vu qu’il y avait une solution toute « facile » avec un dongle USBASP, mais je me disait que ayant une Arduino sous la main, ça devrait être faisable (et pédagogique). Il y a un tutoriel tout prêt pour transformer son arduino en programmeur ISP. Hop, je monte le circuit avec quelques LEDs pour faire indicateur de progression et d’erreur.
Mais c’est l’échec, je passe des heures à lire des forums et des listes de discussion pour essayer de comprendre pourquoi ça ne marche pas. Je tombe finalement sur des retours d’expérience disant qu’il s’agit de la version spécifique de la carte Arduino que j’ai qui ne peut pas faire ce mode là.
FAIL : USB ASP ISP
Face à l’échec sous Arduino, je cède à la tentation d’acheter une clef USB qui utilise le circuit libre USBASP. De nombreux fournisseur vendent ça pour moins de 5$ sur ebay, et j’ai déjà lu des avertissement sur le fait que certains ne marchent pas. Je tente quand même, et pouf, ça ne marche pas.
Malgré de nombreuses tentatives (avec des fils différents, avec un hub USB, sur plusieurs ordinateurs, etc), c’est l’échec. avrdude plante sur :
avrdude: warning: cannot set sck period. please check for usbasp firmware update.
Je finis par accuser le matériel et m’en remettre à une autre solution (et quand j’arriverais à le faire sur la carte KK 2.0, je pourrais envisager d’essayer de mettre à jour le firmware de cette clef USB, la poule et l’œuf tout ça, tout ça.)
WIN : BusPirate AVR programmer
Le père Noel m’ayant gâté de quelques « jouets » électroniques, je peux continuer l’aventure. Je tente donc le coup avec la BusPirate trouvée sous le sapin (livré au mois de février! Je ne citerais pas le fournisseur). La documentation de la BusPirate a une page spéciale pour la programmation AVR. Je connecte donc les câbles correspondants et lance quelques commandes avrdude.
Et WIN! Ça peut paraître tout bête pour certains mais cette petite barre de progression qui marche enfin fut une vrai joie!
Outro
Les communications « série » ont toujours été source de problème dans mes projets, mais au fur et à mesure, je comprend mieux et donc arrive à trouver des solutions. D’ailleurs maintenant que j’ai une configuration qui fonctionne, j’envisage de réessayer la version Arduino, ou au moins mieux comprendre ce qui ne marchait pas.
Prochain article dans la série : la mise à jour de la télécommande bas de gamme avec un firmware open source digne de ce nom.
Je sais que c’est un peu tard pour repondre. Mais le probleme avec l’USBasp n’est pas un problème, c’est simplement un warning et il arrive a chaque fois (c’est dû au fait que l’USBasp ne peut pas faire varier la fréquence du SCK). Normalement le programme se charge correctement.