[TUTO] Comment convertir un DigiSpark à 1€ en un Trinket à 7€

Dans ce tuto nous n'allons pas parler de LED ( enfin si un petit peu ), de Raspberry ou d'Ambilight mais plutôt de Trinket et de Dispigpark.

 

Dans le cadre d'un projet terminé à base de LEDs, j'avais commandé plusieurs Trinkets qui m'ont malheureusement coûtés plus de 6€ voir 7€ l'unité ( j'en ai pris 6 ). Quand on sais que l'Attiny85 ne coûte qu'1€, ça fait quand même mal aux f**** si vous devez en achetés plusieurs.

 

Je me suis donc mis en quête d'alternative ( bien que j'aurai dû le faire avant ) et j'ai découvert une carte qui pourrait être un bon remplaçant à celle-ci à savoir le Digispark. C’était malheureusement trop beau pour être vrai. 

 

En effet, le code dans le Sketch que j'utilisais posa problème et les LEDs connectés sur le Digispark ne réagisse pas ( surtout que je ne m'y connais pas trop trop en code... mais je me débrouille quand même comme je peux ).

 

Bref, Je me suis remis une nouvelle fois en quête d'information et suis tombé sur un tuto expliquant comment transformer un Digispark en Trinket. Miracle, la transformation à fonctionné et j'ai pu utiliser le Disgispark à 1€ à la place du Trinket à 7€.

 

A mon tour de vous montrer comment effectuer cette transformation qui pourra vous rendre service un jour, si jamais vous comptez mettre en place un projet nécessitant un Trinket  ( Vous trouverez le tuto source ici ).

 

Certains me dirons : Pourquoi faire un tuto quasi identique alors qu'un autre du même type décrivant cette procédure est déjà disponible ?

 

Tout simplement car celui-ci ne décrit pas toutes les étapes pour réaliser cette transformation. Ayant eu quelques difficultés et n'ayant pas trouvé d'autre tuto du même genre, je me suis dit que c’était une bonne idée de proposer le mien enfin, en majorité le sien pour être exact, mais en Français et beaucoup plus détaillé.

 

 

Préalable

 

Nous aurons besoin pour ce tuto :

  • D'un Arduino ( j'ai utilisé un Arduino Nano )
  • D'un Digispark ( j'ai utilisé celui avec le port MicroUSB, carte noir )
  • D'un Transistor 2N3904 ( pas nécessaire pour la méthode alternative, voir paragraphe 1er schéma de câblage, le  3ème schéma  )
  • De 4 Résistances 100 Ohm ( idem qu'au dessus )
  • De 2 Résistances 1 kOhm ( idem, sauf qu'il nous faudra tout de même une résistance au lieu de 2 )
  • D'une pile 12V
  • D'un condensateur 10 µF ( pour l’utilisation en mode ArduinoISP )
  • D'une Breadboard ou d'un circuit imprimé
  • D'une Douzaine de câbles Dupont ( j'ai utilisé des Femelle/Femelle et Male/Male )
  • Du logiciel Arduino IDE correctement configuré pour utiliser un Digispark et un Trinket ( sinon voir ici )
  • Du Sketch HV_Programmer_for_ATtiny85
  • Du Bootloader correspondant au Trinket soit trinketgemma_v1
  • Du Sketch de test Firewalker_Lite ( correspondant au Sketch utilisé dans la conception de basket LEDs réactive au pas )

Avant de commencer, voici les différentes étapes que l'on va suivre : 

  • Reset des fusibles du Digispark via la Programmation Haute Tension ( 12V ) de l'Arduino
  • Reprogrammation de l'Arduino avec le Sketch ArduinoISP pour l'utiliser en mode Programmateur
  • Ecriture du Bootloader trinketgemma_v1.hex dans le Digispark via avrdude
  • Test de la programmation du Sketch Firewalker_Lite.ino sur le Digispark ( que l'on a transformé en Trinket )

Pour avoir d'avantages d'explications, je vous renvoi vers la lecture du tuto original. En attendant voyons notre première partie.

Si vous voulez, essayez de programmer votre Digispark avec ce Sketch et voyez par vous-même le résultat.

 

 

Premier Schéma de câblage et Programmation en Haute tension

 

1er Schéma de cablage

 

Nous allons tout d'abord voir le Schéma de câblage que l'on va mettre en place pour effectuer la programmation Haute Tension. Elle va en quelque sorte débloquer notre Digispark afin qu'il puisse accueillir le nouveau Bootloader.

 

Voici les schémas en question:

Je vous ai mis mon schéma et celui du tuto dont je me suis inspiré. Le troisième schéma est une methode alternative proposé sur la page du tuto.

Pour résumer le Schéma :

  • La broche 13 relie une résistance 1 kOhm puis la broche du milieu du transistor 
  • La borne + de la batterie relie une résistance 1 kOhm puis la broche de droite du transistor qui elle même relie la broche P5 du Digispark
  • La broche 12 relie une résistance 100 Ohm puis la broche P3 du Digispark
  • La broche 11 relie une résistance 100 Ohm puis la broche P2 du Digispark
  • La broche 10 relie une résistance 100 Ohm puis la broche P1 du Digispark
  • La broche 9 relie une résistance 100 Ohm puis la broche P0 du Digispark
  • La broche 8 relie directement la broche 5V du Digispark
  • Le GND de l'Arduino relie la borne - de la batterie, la broche gauche du transistor et la broche GND du Digispark.

On voit que la broche 5V de l'Arduino n'est relié à rien sur le breadboard. J'ai quand même soudé un câble provenant du 5v sur mon circuit imprimé au cas ou.

 

Pour Info : La batterie n'est à connectée qu'après la programmation de l'Arduino. Vous pouvez connecter le GND et laisser la borne + en attente.

Par contre, pour mon montage, j'ai utilisé les mêmes couleurs de câbles que ceux du tuto disponible sur instructables.

 

J'ai utilisé pour mon montage 2 types de câbles Dupont :

  • Male/Male que j'ai connecté sur l'Arduino et sur le Digispark
  • Femelle/Femelle dont j'ai soudé un coté sur la circuit imprimé. L'autre coté me sert à les reliés aux connecteurs mâles.

Si vous ne voulez pas vous embêter avec la circuit imprimé il est tout à fait possible de souder les câbles directement sur les résistances et les protégés par de la gaine thermorétractable.

 

Programmation Haute Tension

  

Nous venons de finir le 1er montage et pouvons à présent passer à la partie Software. Nous allons, comme je vous l'ai dit plus haut, procéder à un reset des fusibles du Digispark, via le televersement du Sketch dans l'Arduino, pour permettre sa reprogrammation en Trinket.

Pour cela :

  • Ouvir le logiciel Arduino IDE
  • Configurer dans Outils le Type de carte ainsi que le Port ou est connecté votre Arduino ( pour moi un Arduino Nano sur le port COM3 )
  • Ouvrir le sketch HV_Programmer_for_ATtiny85.ino

Voici ce qu'on obtient :

Une fois n'est pas coutume aucune modification n'est à faire dans le fichier. Il faudra simplement :

  • Cliquer sur la sorte de loupe en haut à droite pour ouvrir le moniteur série puis
  • Sélectionner dans le premier menu déroulant la ligne Les Deux, NL et CR puis dans le second la valeur 9600 Baud
  • Cliquer ensuite sur Croquis puis Téléverser pour lancer la programmation ( ou sur la flèche, 2ème icone en dessous de la barre de titre ).
  • Re-Cliquer sur la loupe pour mettre le moniteur série au premier plan.

Attention : Ne toujours pas connecter la batterie.

La ligne Televersement Terminé vous informera du succès et de la fin de la programmation. A ce moment précis :

  • Des lignes Enter a character to continue doivent s'afficher
  • Dès que vous les voyez défiler à l’écran Connecter la borne + de la batterie ( en ayant déjà le - de connecté bien entendu ) puis
  • Entrer par exemple la lettre a dans le champ de texte puis valider en appuyant sur Entrée ou cliquant sur Envoyer.

Dès que vous aurez validé, le Digispark devrait s'allumer et des lignes dans le moniteur série commencer à défiler.

Voici le résultat de ma programmation :

Pour Info : La programmation ne dure qu'1 à 2 secondes donc si vous ne voyez rien se passer c'est que vos branchements ne sont pas bon.

 

Je vous mets également la vidéo provenant du tutoriel d'origine, montrant la procédure de programmation. On peux y voir de plus prêt le schéma de montage pour ceux qui souhaitent le voir en place d'une manière comment dire, plus professionnelle. /:-)

Une fois que le Digispark à était débridé on pourra déconnecter la batterie puis débrancher l'Arduino et enfin le Digispark.

On peut dire que le plus dur à était fait mais il reste encore 2 programmation à faire :

  • La première, celle de l'Arduino qui est assez simple utilisant le Sketch ArduinoISP
  • La seconde, celle du Digispark pour envoyer le Bootloader du Trinket en ligne de commande en utilisant avrdude.

Entre les 2 il faudra mettre en place un nouveau schéma de câblage afin de pouvoir utiliser l'Arduino en tant que Programmateur ISP.

 

ArduinoISP, 2nd Schéma et Programmation du Bootloader via avrdude

 

ArduinoISP

 

Nous allons utiliser l'Arduino pour envoyer le nouveau Bootloader sur le Digispark mais avant cela il nous faudra le reprogrammer pour utiliser le mode ArduinoISP. Pour cela :

  • Débrancher tout les câbles de l'Arduino en laissant seulement  le port USB de connecté
  • Dans Arduino IDE cliquer sur Fichiers, Exemples, ArduinoISP puis une nouvell fois sur ArduinoISP pour ouvrir le Sketch
  • Fermer la fenêtre précédente avec le Sketch HV_Programmer_for_ATtiny85 d'ouvert, nous n'en aurons plus besoin
  • Cliquer sur Téléverser pour lancer la programmation de l'Arduino
  • Une fois terminé cliquer sur Outils puis dans Programmateur puis choisir Arduino as ISP

Voici ce que cela donne :

 

2nd Schéma de cablage

 

Une fois que l'Arduino est programmé pour fonctionner en tant qu'ISP il nous faut voir le nouveau schéma de câblage. Malheureusement le simple fait de brancher des câbles Dupont sur les broches de l'un ou de l'autre ne suffira pas.

 

Il va nous falloir rajouter un condensateur 10 µF qui relie une des bornes GND à une des brone RST ( Reset ) de l'Arduino.

Voici mon nouveau Schéma et celui provenant du tuto original :

J'ai laissé les même couleurs que sur le 1er schéma

 

Pour résumer le câblage :

  • La broche 13 de l'Arduino relie la broche P2 du Digispark
  • La broche 12 sur la P1
  • La broche 11 sur la P0
  • La broche 10 sur la P5
  • Les GND et les 5V de l'Arduino et du Digispark sont reliés les uns aux autres
  • Le GND du condensateur sur une des broches GND de l'Arduino
  • L'autre patte du condensateur sur la broche RST de l'Arduino, juste à coté du GND sur laquelle elle est connecté.

Contrairement à la programmation Haute tension, il faudra laisser le condensateur branché dès le début de la procédure. 

Voici à quoi devrai ressembler votre installation :

La mienne et celle de notre ami dmjlambert.

 

Une fois que tout est en place nous pouvons voir comment nous allons injecter le Bootloader dans le Digispark avec avrdude.

 

Programmation du Bootloader

 

Avant de pouvoir lancer la programmation du Bootloader il va falloir placer le fichier trinketgemma_v1.hex dans le bon dossier, celui ou se trouve avrdude. Mon dossier Arduino se trouve dans C:\Program Files (x86). Je vais donc :

  • Me rendre dans C:\Program Files (x86) puis dans Arduino
  • Entrer dans le dossier Hardware, tools, avr puis bin
  • Et copier le fichier  trinketgemma_v1.hex à l'interieur de celui. ( vérifier aussi que avrdude.exe et avrdude.conf sont bien présent ).

Mon fichier est maintenant en place. Je suis pret à lancer la programmaton. Pour cela je vais devoir :

  • Ouvrir une invite de commandes ( Touches Windows + R , taper cmd puis entrée )

Je vais ensuite aller dans le dossier bin ou se trouve le Bootloader et avrdude en exécutant cette commande :

  • cd "\Program Files (x86)\Arduino\hardware\tools\avr\bin"

Une fois dans le dossier je vais pouvoir exécuter ma commande :

  • avrdude -v -pattiny85 -cstk500v1 -P com3 -b19200 -Uflash:w:trinketgemma_v1.hex -U lfuse:w:0xF1:m -U hfuse:w:0xD5:m -U efuse:w:0xFE:m

Attention : Cette commande est à modifier en fonction du port COM utilisé par votre Arduino. On peut voir que dans la ligne commande,  après le caractère -P, j'ai défini COM3, Port ou est accessible mon Arduino.

 

Voici le résultat de cette commande :

Pour Info : Si vous voyez la LED de votre Digispark et celle de votre Arduino clignoter c'est déjà bon signe.

 

A l’écran il faut que vous ayez quelque chose de similaire voir identique à ces 2 impressions mais surtout cette dernière ligne :

  • avrdude done. Thank You.

Elle confirmera que tout s'est bien déroulé et que le Bootloader à bien était injecté dans le Digispark. On se retrouve en possession d'un Digispark ayant le Bootloader d'un Trinket. Il est temps de le tester et voir si c'est vraiment le cas.

 

Programmation du Digispark en mode Trinket avec le sketch Firewalker_lite.ino

 

Pour le moment tout se passe comme prévu, nous avons grillés les fusibles du Digispark, l'avons reprogrammé en Trinket en lui injectant son Bootloader mais viens le moment de vérité, le test de programmation.

 

Ce qui posais problème dans la programmation du Digispark était ce genre de ligne pinMode(MOTION_PIN, INPUT_PULLUP);. J'ai eu beau essayé de changer le code avec les informations trouvées sur les différents forums que j'ai consulté mais rien à faire.

 

Heureusement que je suis tombé sur ce tuto afin d'effectuer cette transformation. Trève de bavardage et testons la programmation :

  • Debrancher votre Arduino, Fermer le logiciel Arduino IDE et rouvrez le 
  • Ouvrir le Sketch Firewalker_Lite.ino que vous avais dut télécharger
  • Cliquer sur Outils puis sélectionner Type de carte et choisir Adafruit Trinket 8Mhz
  • Puis changer le Programmateur Arduino as ISP en USBtinyISP.

Brancher votre Digispark sur le port USB puis cliquer sur Téléverser.

Si tout se passe comme prévu :

  • La programmation de votre Digispark devrait se faire sans aucun message d'erreur ne s'affiche
  • La 2ème LED rouge doit clignoter quelques instants, informant qu'elle reçoit bien des données ( ça ressemble à 1- 2 battements de cœur ) 
  • Le message Téléversement terminé doit s'afficher.

Si vous avez une message d'erreur de ce genre :

Pas de panique, déconnecter le Digispark, reconnecter le puis cliquer de nouveau sur Téléverser tout de suite après avoir effectuer la connexion. La programmation devrait se faire sans soucis.

 

Vous voila en main d'un Digispark transformé en Trinket et pouvez mettre en place des projets consultable sur le site Web d'Adafruit, ou l'on trouve plein de choses sympa à réaliser notamment à base de LEDs comme :

  • Des Chaussures réactive aux pas
  • Un Skateboard ou Bracelet lumineux
  • Un Vumetre avec un Micro Amplifié
  • Des masques, casques, lunettes, et costumes en tout genres
  • et bien d'autres projets à reproduire aussi farfelus les uns que les autres.

A vous de voir celui que vous voulez réalisés.

 

Un grand merci à dmjlambert pour son tuto. /;-)), c'est gentil à lui de l'avoir proposé car, comme je l'ai dit, impossible à trouver autre part.

N'oublier pas de vous y rendre pour avoir des informations complémentaire.

 

Bon mod à tous !!!

Commentaires : 0 (Discussion fermée)
    Aucun commentaire pour le moment.