Je viens de recevoir une commande de chez Farnell : deux microcontrôleurs Atmel ATTINY45, deux modules XBee, et une caméra pour brancher sur mon Raspberry Pi.

Depuis un certain temps, je réfléchissais à une façon de faire pour programmer un microcontrôleur et l'utiliser dans un projet sans pour autant acheter à chaque fois une carte Arduino. En fait, on peut utiliser toute une gamme de microcontrôleurs Atmel "nus", les programmer à l'aide d'une Arduino et les utiliser tels quels!

Pour les curieux, voici tous les produits fabriqués par Atmel (ça ne s'arrête pas aux microcontrôleurs).

Bref! Voyons comment utiliser notre carte Arduino Uno pour programmer le ATTINY45. La mise en place est relativement rapide.

D'abord, un grand merci à HighLowTech pour cet article.

L'idée de base, c'est d'utiliser une Arduino (dans mon cas, Uno) qui va servir d'interface entre le PC et l'ATTINY45. Manque de bol, depuis la version 1.0 de l'IDE Arduino, les puces ATTINY ne sont plus au menu :

image

Pour pouvoir les utiliser, il faut aller chercher ici (pour la version 1.0 ou 1.5, selon la version de l'IDE).

Une fois le zip récupéré, il faut créer un répertoire hardware dans votre dossier de sketches (donc pour moi, C:UsersnicoDocumentsArduinohardware). Dans ce dossier hardware, copier le dossier tiny trouvé dans le zip. On y est presque.

Dans le dossier tiny, il y a un fichier nommé Prospective Boards.txt. Renommons-le en boards.txt tout court.

On relance l'IDE, et là :

image

Yeaaaah baby! En fait, dans le fichier boards.txt, on peut commenter toutes les puces ATTINY dont on ne veut pas se servir, ça évite de polluer cette liste.

Voilà pour la préparation logicielle :)

Maintenant, préparons le matériel:

imageJ'ai honteusement repris le schéma réalisé par Semageek.com. Allez-y, ça vaut le coup!

Voici le schéma de brochage de l'ATTINY45:

image

Pour le condensateur connecté au reset de l'Arduino Uno, je n'avais pas de 10µF, alors j'ai utilisé un 33µF qui va tout aussi bien.

Prêts? Alors dans l'IDE, chargeons l'exemple ArduinoISP. Nous voulons l'envoyer sur la Uno, donc type de carte > Arduino Uno.

On envoie le programme, et là... Problème de synchronisation. Hé hé hé :) La blague, c'est qu'il faut enlever le condensateur pour pouvoir envoyer un programme ;)

Voilà, l'Arduino Uno est maintenant utilisable comme programmateur pour notre ATTINY!

Nous pouvons reconnecter le condensateur, et dans l'IDE, définir comme type de carte : em>ATTINY@1MHz</em, et comme programmateur : Arduino as ISP.

Chargeons un programme d'exemple, disons Fade. On va juste changer le pin de la LED, mettons le sur 0. On upload le programme. Dans les messages de l'IDE Arduino, on peut lire ceci :

Taille binaire du croquis : 802 octets (d'un max de 4 096 octets)
avrdude: please define PAGEL and BS2 signals in the configuration file for part ATtiny45

En fait, ce message, selon des gens avertis, on peut l'ignorer (je ne sais pas vous, mais moi j'ai bien envie de les croire).

Voici une superbe photo pour illustrer cela!imageJ'ai connecté la LED bleue au pin 0 (broche 5) de l'ATTINY45. Et elle clignote en mode 'fade' :)

Pour être sûr, j'ai tout déconnecté (en me servant juste de la Uno comme alimentation :

imageEt ça marche toujours!

Reste maintenant à trouver des applications pour cette bestiole de 4Ko de mémoire, avec ses 3 entrées analogiques et 2 sorties PWM; je suis certain que ça me viendra :)

Un grand merci spécial à Michael, Farnell, Semageek et HighLowTech!

Article précédent Article suivant