Skyduino:~#
Articles
arduino, Autre, programmation, projet, tutoriel

[Hack] Utiliser teensyduino avec une carte arduino leonardo ou compatible leonardo

Bonjour tout le monde !

Aujourd’hui j’ai décidé de publier la procédure complète permettant d’utiliser des programmes "teensyduino" sur une carte arduino leonardo ou compatible leonardo.

Attention : cette procédure n’est encore qu’au stade expérimental !
Si vous rencontrez des bugs / problémes merci de laisser un commentaire ;)

Introduction :

Cette procédure permet d’utiliser l’excellent logiciel "teensyduino" avec une carte arduino autre que teensy ou teensy++, telle que l’arduino leonardo ou tout autre dérivé à base d’atmega32u4.

Bien sur cela n’as rien à voir comparé avec une vrai carte teensy !
- pas de fonctionnement garanti,
- pas de reset automatique,
- procédure d’installation longue et compliqué.

Mais c’est le jeu, si vous ne voulez pas vous casser la tête achetez une carte teensy et puis c’est tout ! :)

Pour ceux qui voudraient ce lancer dans l’aventure, gardez en tête que cette procédure n’est pas "simple" et non sans conséquences en cas de fausse manipulation.
Surtout sous windows, sauvegardez tout se que vous faite et ne gardez rien d’ouvert en arrière plan, en cas d’erreur c’est l’écran bleu et le reboot forcé ;)
De plus si vous ne savez pas comment utiliser avrdude pour sauver les meubles en cas de probléme passez votre chemin !

Le blabla habituel "si vous vous plantez c’est pas ma faute" :

Utilisation du logiciel teensyduino avec une carte arduino leonardo ou compatible leonardo et le bootloader "caterina"

*************************************************************************************************************************
** DISCLAIMER : Je ne pourrai être tenu responsable en cas de problémes matériels ou logiciels quels qu’ils soit
** Cette procédure peut entrainer un dysfonctionnement permanent de la carte arduino et/ou de l’ordinateur !
** Des connaissances en programmation via avrdude et en calcul de "fusibles AVR" sont fortement recommandé !
** Je ne donne aucune garantie qu’en au fonctionnement de cette procédure, c’est à vos risques et périls !
*************************************************************************************************************************

Edit et mise à jour :
07/07 14h30 - Bootloader mis à jour, testé et fonctionnel, disponible en téléchargement via le lien dropbox
07/07 17h40 - Mise à jour de la partie "programmation du bootloader", l'ide arduino pose probléme pour certain (tout dépend de la config d'origine de la carte)
07/07 18h20 - Ajout d'une petite remarque concernant le efuse (extended fuse)
07/07 18h30 - Petite modification du chemin du dossier "bootloaders"

Au passage :
Un grand merci à Al1fch pour ses test du bootloader qui ont pu mettre en évidence certains probléme critique.
Et un autre grand merci à Barbudor qui m’as était d’une grande aide pour consolider la procédure.

Le matériel requis pour la procédure :

Matériel requis :
- une carte arduino leonardo ou compatible leonardo,
- un programmateur d'AVR (+ câble ICSP 6 broches),
- ~1h de temps libre,
- un cerveau, du café et de la patience.

Remarque : Sous windows, l’édition des fichiers .txt doit ce faire avec un éditeur compatible avec le format de lignes UNIX (notepad++ par exemple).

La procédure pas à pas :

Remarque : Lisez TOUTE les étapes avant de commencer !

Instruction d’installation et d’utilisation :

1 – Téléchargement et installation de la toolchain AVR-GCC :
A) Téléchargez la dernière version de l’installateur AVR-GCC depuis http://www.makehackvoid.com/node/578/release
B) Lancez l’installateur et installez AVR-GCC à la racine du disque C:\ dans un dossier quelconque.
–> Important : Ne pas oublier de cocher "Ajouter au PATH" lorsque que l’installateur le propose !
C) Ouvrez le dossier d’installation de AVR-GCC et effectuez les opérations suivantes :
- Créez un dossier nommé "etc" (sans les quotes),
- Copiez le fichier "avrdude.conf" du dossier "bin" dans le dossier "etc" fraichement créée.

2 – Téléchargement de l’ide arduino 1.0.x :
A) Téléchargez la dernière version de l’ide arduino (branche 1.0.x) depuis http://arduino.cc/en/Main/Software
B) Dézipez le contenu de l’archive dans C:\arduinoIDE (créer le dossier si nécéssaire)

3 – Mise à jour de la toolchain fourni avec l’ide arduino avec la dernière version de AVR-GCC :
A) Naviguez jusqu’au dossier C:\arduinoIDE\hardware\tools\
B) Renommez le dossier "avr" en "avr-old"
C) Copiez le dossier C:\dossier_installation_avr_gcc\ dans C:\arduinoIDE\hardware\tools\
D) Renommez le dossier fraichement copié en "avr"

4 – Téléchargement et installation du plugin teensyduino :
A) Téléchargez l’installateur de teensyduino depuis http://www.pjrc.com/teensy/td_download.html
B) Lancez l’installateur et suivez les consignes afin d’installer les drivers usb ainsi que le "core teensy"
C) Choisissez C:\arduinoIDE\ comme chemin d’installation de teensyduino
D) Sélectionnez les librairies que vous jugez intéréssante pour vos programmes (optionnel)
E) Copiez le fichier nommé "cdc_acm_class.inf" du dossier temporaire de windows vers votre le dossier C:\arduinoIDE\drivers\
(%appdata%\..\Local\Temp sous windows 7, C:\Documents and Settings\\Local Settings\Temp\ sous windows XP)

5 – Nettoyage des fichiers inutiles (optionnel) :
A) Supprimez les dossiers suivant :
- C:\arduinoIDE\hardware\tools\avr-old\
- C:\arduinoIDE\reference\
- C:\arduinoIDE\tools\
- C:\arduinoIDE\src\

B) Si vous avez Java JVM 6 ou 7 installé sur votre machine vous pouvez aussi supprimer le dossier C:\arduinoIDE\java\
C) Dans C:\arduinoIDE\hardware\tools\avr\ doit se trouver le dé-installateur de AVR-GCC, vous pouvez le supprimer

6 – Téléchargement et installation du patch pour le bootloader caterina et pour le logiciel teensyduino :
A) Téléchargez les fichiers suivants :
- Bootloader "caterina" modifié : https://dl.dropbox.com/u/53604363/leonardo_teensyduino/Caterina.zip
- Fichier boards.txt personnalisé : https://dl.dropbox.com/u/53604363/leonardo_teensyduino/boards.txt
B) Dézipez le contenu de l’archive "caterina.zip" dans C:\arduinoIDE\hardware\teensy\bootloaders\caterina (crée les dossiers et sous dossiers si nécéssaire)
C) Copiez le contenu du boards.txt personnalisé et collez le texte à la fin du fichier C:\arduinoIDE\hardware\teensy\boards.txt
D) Modifiez (si nécéssaire) les commentaires du nouveau C:\arduinoIDE\hardware\teensy\boards.txt afin de configurer au mieux teensyduino suivant votre carte leonardo

7 – Préparatif avant l’installation du bootloader modifié :
A) Ouvrez le fichier C:\arduinoIDE\hardware\arduino\programmers.txt
B) Assurez vous que votre programmateur d’AVR ce trouve bien dans la liste
C) Si ce n’est pas le cas, ajoutez deux lignes de la forme xxxxx.name=yyyyy et xxxxx.protocol=zzzzz, avec x le nom du programmateur sans espace, y le nom du programmateur "humainement lisible" et z le nom du programmateur sous avrdude
Exemple avec l’avr pocket programmer de sparkfun :
avrpocket.name=AVR pocket programmer
avrpocket.protocol=usbtiny

8 – Flashage du bootloader modifié :
Méthode simple avec l’ide (si ça plante lors de l’écriture du efuse utilisez l’autre méthode) : :
A) Ouvrez l’ide arduino
B) Choisissez dans "tools -> board" la carte "Arduino leonardo w/ teensyduino"
C) Choisissez dans "tools -> programmer" le nom de votre programmateur d’avr
D) Lancez le flashage via "tools -> burn bootloader"
Note : La flashage prend environ 2 minutes, tout dépend du programmateur utilisé.

Autre méthode (moins simple, en console) :
A) Ouvrez une console via la combinaison de touches : windows + R puis "cmd"
B) Naviguez jusqu’au dossier "bootloader\caterina" avec la commande cd C:\arduinoIDE\hardware\arduino\bootloaders\caterina
C) Programmez les fusibles via la commande suivante :
(xxxx = nom de votre programmateur sous avrdude)
- avrdude -p atmega32u4 -c xxxx -e -U lfuse:w:0xff:m -U hfuse:w:0xd8:m -U lock:w:0x3f:m -U efuse:w:0xc3:m
(Il ce peut que lors de l’écriture il y ai une erreur de vérification du efuse, ignorez là c’est pas grave (les bits indéterminé du efuse ne sont pas modifiable, allez savoir pourquoi)
D) Programmez ensuite le bootloader via la commande :
(xxxx = nom de votre programmateur sous avrdude)
- avrdude -p atmega32u4 -c xxxx -U flash:w:Caterina.hex

9 – Vérification des fusibles et du "lock byte" (uniquement si la méthode "simple" avec l’ide a été utilisé)
A) Ouvrez une console via la combinaison de touches : windows + R puis "cmd"
B) Naviguez jusqu’au dossier "arduinoIDE" avec la commande cd C:\arduinoIDE
C) Lancez la commande "avrdude" pour vous assurez du bon fonctionnement de la toolchain winAVR
D) Exécutez les commandes suivantes, entre chaque commande ouvrez le fichier C:\arduinoIDE\fuses.txt et vérifiez la conformité des valeurs avec celle ci dessous :
(xxxx = nom de votre programmateur sous avrdude)
- avrdude -p atmega32u4 -c xxxx -U lfuse:r:fuses.txt:h
–> Résultat attendu : 0xff

- avrdude -p atmega32u4 -c xxxx -U hfuse:r:fuses.txt:h
–> Résultat attendu : 0x8d (ou 0x9d si vous avez modifié le boards.txt -> voir étape 6-D)

- avrdude -p atmega32u4 -c xxxx -U efuse:r:fuses.txt:h
–> Résultat attendu : 0xc3

- avrdude -p atmega32u4 -c xxxx -U lock:r:fuses.txt:h
–> Résultat attendu : 0x3f

Note pour les beta testeurs :
Après de nombreux test il s’avère que modifier le couple VID / PID + SERIAL du "core teensy" n’est pas une bonne idée.
De plus dans la version beta (note pour al1fch en particulier) il y avait une erreur de copier / coller dans mon message.
En réalité avoir le même couple VID / PID que le bootloader dans l’application teensy ne fait que déclencher un magnifique écran bleu …

Utilisation du mode "leonardo officiel" et du mode "leonardo teensyduino" :

Upload d’un sketch en "arduino leonardo officiel"
(L’auto reset ne fonctionnera que si le sketch précédent était lui même compilé en "arduino leonardo officiel")
A) Branchez la carte et attendez que celle ci s’énumère en tant que port série usb
B) Sélectionnez "Arduino leonardo" dans le menu "tools -> board" (les menu "tools -> usb type" et "tools -> keyboard layout" devrait devenir grisé)
C) Écrivez votre code et appuyez sur le bouton "compiler" (pas upload)
D) Une fois la compilation réussi appuyez sur le bouton "upload"
E) Quand "Uploading …" apparait appuyez sur le bouton reset de la carte (sauf si l’auto reset est disponible, voir la note plus haut)
F) Tout est une question de timing, cela peut rater, la patience et plusieurs essais sont de mise ;)

-

Upload d’un sketch en "arduino leonardo w/ teensyduino"
(L’auto reset n’est pas disponible en mode "arduino leonardo w/ teensyduino")
A) Sélectionnez "Arduino leonardo w/ teensyduino" dans le menu "tools -> board" (les menu "tools -> usb type" et "tools -> keyboard layout" devrait alors être disponible)
B) Sélectionnez le type de périphérique usb voulu ainsi que le type de clavier si nécéssaire
C) Écrivez votre code et appuyez sur le bouton "compiler" (pas upload)
D) Débranchez la carte et attendez quelques secondes que la déconnexion de la carte soit bien prise en compte
E) Appuyez sur le bouton "upload" et quand "Uploading …" apparait rebranchez la carte
F) Tout est une question de timing, cela peut rater, la patience et plusieurs essais sont de mise ;)

Avis aux possesseurs de carte arduino leonardo ou leonardo compatible !
Merci de laisser un commentaire si vous tentez la procédure, et si cela fonctionne (ou non) chez vous ;)

Remarque :
Procédure testé et réalisé avec une carte olimexino-32u4 (de olimex) et Vinciduino (test par Al1fch).
Le fonctionnement devrait être identique sur une carte arduino leonardo ou dérivé, mais je ne peut rien garantir.

Attention :
Le brochage "teensyduino" n’est pas le même que le brochage "arduino" !
Reportez vous au schéma de votre carte et au pinmapping teensy pour connaitre l’emplacement des broches.
Leonardo : http://arduino.cc/en/Hacking/PinMapping32u4
Teensy 2.0 : http://www.pjrc.com/teensy/pinout.html

Tableau de conversion teensy / leonardo :

Bon hack à tous :)

About these ads

Discussion

4 réflexions sur “[Hack] Utiliser teensyduino avec une carte arduino leonardo ou compatible leonardo

  1. Bravo et merci skywodd pour ce travail !!

    Les derniers essais avec le bootloader de cet article et le complément pour board.txt fonctionnent BIEN sur une carte Vinciduino.

    J’ai testé en sautant la mis à jour de WinAvr dans l’IDE Arduino (étape 1 de cet article)… c’est quand même OK

    La dizaine d’essais ‘du jour’ (divers exemples Teensy en ‘types USB’ : serial, serial+keyboard+mouse+joystick et en rawHID) a donné des téléchargements sans débranchement de la carte (coups de chance ?), juste avec un bref appui sur le bouton RESET au moment précis ou le message "Compilation du croquis…." est remplacé par "Téléversement’" (c’est à dire au moment ou est tenté, l’autoreset par l’IDE)

    Pour avoir effectué des tests les jours précédents au fur et à mesure du travail de skywodd je peux dire que c’est maintenant OK !!

    Publié par Al1Fch | 8 juillet 2012, 22 h 16 min
    • >> J’ai testé en sautant la mis à jour de WinAvr dans l’IDE Arduino (étape 1 de cet article)… c’est quand même OK

      La mise à jour de winAVR c’est vraiment pour éviter tout probléme de version entre utilisateurs, Barbudor a lui aussi confirmé le bon fonctionnement de la procédure sans la mise à jour.

      >> La dizaine d’essais ‘du jour’ a donné des téléchargements sans débranchement de la carte (coups de chance ?)

      Coup de chance ou timing bien en main ;)

      Publié par skywodd | 8 juillet 2012, 22 h 36 min
  2. Avant de me lancer dans tout ça je voulais savoir si cela fonctionné pour Linux? Car personnellement j’ai une carte Leonardo (si j’avais su…..) sous Linux. L’IDE Arduino 1.0.1 est en train de me rendre fou!! J’upload en usb (et non en AVR, même si j’en ai un), mais j’aimerais éviter de devoir souder le connecteur. En effet j’ai choisi cette carte pour sa finesse (contrairement à l’UNO) sans avoir à désouder quoi que ce soit. Ce qui me sera utile pour intégrer le tout dans mon support embarqué. Enfin bref je raconte ma vie mais tout ça pour dire que j’aimerais éviter de devoir changer de carte ou de souder des pins.

    Donc sous Linux ton tuto (même tes tutos) qui sont très instructifs (en passant je rend à césar ce qui appartient à césar) marche t il?

    Merci d’avance!

    Publié par MikeLarson | 10 juillet 2012, 16 h 24 min
    • La procédure est identique pour linux, sauf qu’il n’y a pas besoin de mettre à jour la toolchain ou d’installer les drivers.
      (Et que les chemin seront différent puisque ici je me base sur une installation windows ;))

      Il n’est pas obligatoire de souder le connecteur, il est possible de juste mettre des fils "volant".
      Par contre il est obligatoire de changer le bootloader et donc d’utiliser un programmateur câblé sur le port ICSP (d’une façon ou d’une autre).

      Publié par skywodd | 10 juillet 2012, 17 h 01 min

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

Archives

Wow. Dogecoin. Amaze.

Laissez un tip en Dogecoin

DMMNFk6WBVTpx2Wu1Z35GL61QXSd6r6WQx

Suivre

Recevez les nouvelles publications par mail.

Rejoignez 715 autres abonnés