vendredi 11 juillet 2014

Programmation d'un ATTiny85 avec Arduino



Ce billet a été entièrement réécrit le 14 septembre 2017 afin d'être compatible avec les versions plus récentes de l'IDE Arduino.

Aujourd'hui, on s'intéresse à la programmation d'un ATtiny85 au moyen d'une carte Arduino Uno et de l'IDE Arduino.


L'ATtiny85 est un tout petit microcontrôleur fabriqué par Atmel (la même compagnie qui fabrique les microcontrôleurs Atmega utilisés dans l'Arduino).  Il est cependant beaucoup plus limité que son grand frère Atmega 328, puisque sa mémoire est plus restreinte et il ne comporte que 6 pins pouvant être utilisées comme entrées/sorties.

Alors pourquoi nous compliquerions-nous la vie en utilisant un microcontrôleur dont les performances sont inférieures à celles de notre bien-aimé Arduino Uno?  Il n'y a qu'une seule raison:  son prix.   On peut acheter trois ATTiny85 pour le même prix qu'un seul Atmega 328, et on peut en obtenir une bonne douzaine pour le même prix qu'une seule carte Arduino.   Il s'agit donc d'une option intéressante si vous désirez produire à faible prix un montage permanent pas trop complexe.

Par exemple, si vous voulez fabriquer vous-mêmes une carte d'anniversaire qui joue une mélodie tout en faisant clignoter quelques LEDs, l'ATtiny est une option tout à fait envisageable car c'est petit et ça ne coûte pas cher (tiens, j'ai soudainement une idée pour l'anniversaire de mon beau-frère!).

Alors, on fait comment?

1) Configuration de l'IDE Arduino

Au départ, le logiciel (IDE) Arduino n'est pas conçu pour programmer des microcontrôleurs ATTiny.  Nous devons donc installer des fichiers qui ajouteront de nouvelles fonctionnalités à l'IDE. Heureusement, les dernières versions de l'IDE comportent un gestionnaire de cartes, grâce auquel cette installation est automatique.

Il existe principalement deux options:  l'ATtinyCore Universal de Spence Konde (qui semble être basé sur l'antique Arduino-Tiny), et ATtiny par David A. Mellis.    Chacun de ces deux "cores" a ses avantages et ses inconvénients; certains sketches qui fonctionnent avec un des cores ne fonctionnent pas avec l'autre.  Lors de mes essais, j'ai développé des sketches en apparence anodins qui refusaient obstinément de fonctionner correctement sous ATTinyCore Universal; pour cette raison, je vais plutôt insister sur l'installation de la version de David A. Mellis.  Si vous préférez installer l'autre version, pas de soucis, les étapes sont à toute fin pratique identiques.

Dans un premier temps, on ouvre la boîte de dialogue qui sert à régler les préférences (menu "Fichier/ Préférences").


On localise le champ "URL de gestionnaire de cartes supplémentaires" et on y copie cette adresse:

https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json


(Si vous préférez installer l'ATTinyCore Universal, vous utilisez plutôt l'adresse http://drazzy.com/package_drazzy.com_index.json )

Si le champ contient déjà d'autres adresses, vous pouvez séparer les adresses l'une de l'autre au moyen d'une virgule.

Vous cliquez sur "OK" pour fermer la boîte de dialogue.

Il faut ensuite ouvrir le gestionnaire de carte:  menu "Outils / Type de carte / Gestionnaire de carte".




Dans la liste, vous localisez "attiny by David A. Mellis".  Vous cliquez dans le rectangle, puis sur le bouton "Installer".


Une fois l'installation complétée, la mention "INSTALLED" s'affiche à droite des mots "attiny by David A. Mellis".




2) Transformation de l'Arduino en programmateur ISP

Nous allons maintenant transformer notre carte Arduino Uno en programmateur pour ATTiny (notez qu'il existe d'autres options; par exemple, il est possible de se procurer de petites cartes de développement ATTiny pouvant être directement branchées dans le port USB de l'ordinateur).

Dans le logiciel Arduino, ouvrez le fichier "ArduinoISP" en utilisant le menu "Fichier / Exemples / ArduinoISP".  Téléversez ce sketch dans l'Arduino.


3)  Branchements de l'ATTiny à l'Arduino

Maintenant que votre Arduino a été transformé en programmateur, nous y branchons l'ATTiny de la façon illustrée ci-dessous.
  • Pin 1 de l'ATtny:  pin 10 de l'Arduino
  • Pin 2 de l'ATtiny:  pas branchée
  • Pin 3 de l'ATtiny:  pas branchée
  • Pin 4 de l'ATtiny:  GND de l'Arduino
  • Pin 5 de l'ATtiny:  pin 11 de l'Arduino
  • Pin 6 de l'ATtiny:  pin 12 de l'Arduino
  • Pin 7 de l'ATtiny:  pin 13 de l'Arduino
  • Pin 8 de l'ATtiny:  5 V de l'Arduino
  • Condensateur de 10 µF:  broche + sur le "reset" de l'Arduino, broche "-" sur le GND de l'Arduino. 



4)  Programmation de l'ATtiny

Pour programmer l'ATTiny, nous devons choisir le bon type de carte:  menu "Outils / Type de carte / ATtiny 25/45/85" (ces options sont disponibles depuis que nous avons utilisé le gestionnaire de cartes à l'étape 1).



Ensuite, dans les options qui apparaissent dans le menu "Outil", assurez-vous que "Processeur" est bien réglé à "ATtiny85".



Je préfère laisser "Clock" à "Internal 1 MHz", car les durées sont incorrectes lorsque je le règle à 8 MHz.

Vous devez également régler "Programmateur" à "Arduino as ISP.  



Comme le veut la tradition, faisons clignoter une LED branchée à l'ATtiny.   Le plus simple est d'ouvrir  l'exemple "Blink" (Menu "Fichier / Exemples / 01.Basics / Blink") mais avant de le téléverser, dans l'ATTiny, il est nécessaire de remplacer le numéro de la pin, car l'ATTiny ne comporte pas de pin numéro 13.  Utilisez plutôt les numéros 0, 1, 2, 3 ou 4 (l'illustration ci-contre montre à quoi correspondent ces numéros sur le circuit intégré).





Vous pouvez maintenant cliquer sur le bouton "Téléverser".

Si vous branchez une LED (avec sa résistance de protection de 150 Ω ou plus) à la pin appropriée du ATTiny, elle devrait clignoter.

Voilà, il ne reste plus qu'à créer d'époustouflants montages qui ne vous coûteront presque rien.



Yves Pelletier (Twitter:  @ElectroAmateur)

7 commentaires:

  1. bonjour ça ne veut pas affiché le nom des attiny

    RépondreSupprimer
    Réponses
    1. Hum, l'IDE Arduino a tellement changé depuis la publication de cet article, la procédure est peut-être différente maintenant. Il faudrait que je jette un oeil là-dessus.

      Supprimer
    2. Voir ici pour une marche à suivre avec l'IDE 1.6: https://www.hackster.io/arjun/programming-attiny85-with-arduino-uno-afb829

      Supprimer
  2. Bonjour, à quoi sert le condensateur dans ce cas ci ?

    RépondreSupprimer
  3. Bonjour,
    Simplement au démarrage de l'IDE Arduino, j'ai ce message régulièrement "Erreur de compilation pour la carte ATtiny25/45/85
    La carte sélectionnée nécessite le cœur 'arduino:arduino' qui n'est pas installé ".
    Quelques fois ça remarche sans savoir pourquoi, mais la majeure partie du temps je suis handicapé par ce problème.
    Je souhaite bien évidemment programmer une ATtiny85.
    Une idée ?

    RépondreSupprimer
  4. Arduino: 1.8.10 (Windows 10), Board: "ATtiny, ATtiny85, 1 MHz (internal)"

    Error while burning bootloader.
    avrdude: Yikes! Invalid device signature.
    Double check connections and try again, or use -F to override
    this check.

    This report would have more information with
    "Show verbose output during compilation"
    option enabled in File -> Preferences.
    Arduino: 1.8.10 (Windows 10), Board: "ATtiny, ATtiny85, 1 MHz (internal)"

    Error while burning bootloader.
    avrdude: Yikes! Invalid device signature.
    Double check connections and try again, or use -F to override
    this check.

    This report would have more information with
    "Show verbose output during compilation"
    option enabled in File -> Preferences.

    RépondreSupprimer
  5. Voila le problème que je rencontre depuis

    RépondreSupprimer