Projet Arduino avec les ATtiny

Ce doc porte majoritairement sur les ATtiny 25/45/85 puisque ceux sont eux que j'utilise principalement.
Les ATtiny 24/44/84 sont compatibles.

Informations préalables:

  • je travail avec l'IDE Arduino 1.0.3
  • j'utilise un Arduino Nano Rev.3
  • j'utilise ce "core" Arduino-tiny (détails plus loin)

La famille ATtiny utilisable avec l'interface Arduino:

On va les classer par sous-familles

-ATtiny 24 / 44 / 84 avec une mémoire de 2K 4K ou 8K bytes. 14 broches dont 8 ADC, 3 PWM.

-ATtiny 25 / 45 / 85 avec une mémoire de 2K 4K ou 8K bytes. 8 broches dont 3 ADC, 2 PWM.

ATtiny 24/44/84 ATtiny 25/45/85

VCC -I 1 14 I- GND Reset -I 1 8 I- VCC
Pin10 -I 2 13 I- Adc0/Pin0 Adc3/Pin3 -I 2 7 I- Adc1/Pin2
Pin9 -I 3 12 I- Adc1/Pin1 Adc2/Pin4 -I 3 6 I- Pwm/Pin1
Reset -I 4 11 I- Adc2/Pin2 GND -I 4 5 I- Pwm/Pin0
Pwm/Pin8 -I 5 10 I- Adc3/Pin3
Adc7/Pwm/Pin7 -I 6 9 I- Adc4/Pin4
Adc6/Pwm/Pin6 -I 7 8 I- Adc5/Pin5/Pwm

Ce sont tous des µ-Controleurs 8Bit avec une horloge interne programmable à 1MHz et 20MHz

Programmer un ATtiny:

-Première étape : la prise en charge des Tiny par Arduino
Il existe deux principaux codes (ou core) :

Le core développé par le MIT :

Le core du projet Arduino-Tiny :
http://code.google.com/p/arduino-tiny/

Quel que soit le core, le procédé d'installation est le même :

déziper les fichiers
dans le dossier des croquis Arduino (trouver le dossier croquis dans les préférence),
créer un dossier hardware.Copier dans ce dossier le core
On obtient : Documents/Arduino/hardware/attiny
Ou : Documents/Arduino/hardware/tiny
Relancer l'IDE arduino : dans le menu Outils<type de carte . On peut désormais choisir les ATtiny.

-Seconde étape : utiliser une carte arduino comme programmateur.

-on va d'abord charger le sketch ArduinoISP sur la carte (le sketch se trouve d'origine dans les exemples.

-ensuite on procède au branchement :

-ATtiny Pin2 au pin 13 de la carte arduino (ou pin SCK)
-ATtiny Pin1 au pin 12 de la carte Arduino (ou pin MISO)
-ATtiny Pin0 au pin 11 de la carte Arduino (ou pin M0SI)
-ATtiny Pin reset au pin10de la carte Arduino (ou pin RESET)

En plus il faut alimenter le ATtiny à ses broches VCC (+5V) et GND (Masse).
Et mettre un condensateur chimique 10µF entre le Pin reset et GND de la carte arduino. (Attention à la polarité du condensateur)

-Troisième étape : faire un test.

-Ouvrir le sketch Blink. Changer le pin 13 en pin 0.
-dans Outils>Programmateur, choisir Arduino as ISP
-dans Outils>Type de carte, choisir celle qui correspond à votre ATtiny en 1Mhz
-charger le sketch. A la fin, si tout c'est bien passé vous obtenez deux fois le même message d’erreur :
avrdude: please define PAGEL and BS2 signals in the configuration file for part Attiny85.
Ne pas y faire attention.

-En laissant l'alimentation branchée et une led (avec sa résistance) sur la broche 5 (Pin0).
Cette dernière doit clignoter !!!!!!.

Note : Par défaut les ATtiny sont configurés pour une fréquence de 1Mhz.Pour configurer à 8Mhz
-refaites les étapes 1 et 2
-dans Outils>Type de carte, choisissez votre ATtiny à 8Mhz.
-enfin dans Outils cliquer sur « graver la séquence d'initialisation ».
Voilà.
La fréquence reste à valeur de dernière configuration tant que vous ne la changez pas.Donc pas besoins de refaire ce changement à chaque fois
(méthode tirée du site http://hlt.media.mit.edu/?p=1695 )

A suivre :
Les librairies spécifiques aux ATtiny (I2C, Servo, LCD…)

Si vous voyez des erreurs faites moi signe.Si vous avez des remarques n'hésitez pas. Si vous avez des questions c'est fait pour ça.

Les librairies spécifiques aux ATtiny

Il fallait des librairies spécifiques aux ATtiny car :

-ils ne possèdent pas par défaut de communication sérial
-pas non plus de communication I²C
-un nombre limité de broche (seul 5 utiles pour les 25/45/85)
-un processeur 8 Bit
-une mémoire réduite

I²C :

Les ATtiny grâce au travail de la communauté arduino, gère la communication I²C.
Dans le lien qui suit vous trouverez les librairies
TinyWire Master et Slave pour les ATtiny 25/45/85
En bas de la page vous trouverez également pour les Attiny24/44/84.
http://playground.arduino.cc/Code/USIi2c

Également un très bon tuto pour transformer un capteur analogique en capteur I²C grâce aux ATtiny :
http://kasey.fr/ATTiny-capteur-universel-en-I2C.html

Servo :
une librairie pour la gestion des servomoteur (uniquement ATTiny 25/45/85)

LCD :
Pour le LCD vous pouvez utiliser la communication I²c (encore faut il avoit un LCD qui le supporte).
Ou utiliser la librairie classique LCD qui utilise 6 broches donc impossible sur les ATtiny 25/45/85 limités à 5 broches utilisables.
La solution peut également être un LCD standard qui n'utilise que 3 fils grâce à un petit composant : un shift registers et une librairie spécifique : ShiftLCD.
Vous trouverez un tuto complet pour réaliser l'interface :

et la librairie Shift LCD au lien suivant ( en bas de la page avant les commentaires :

Autres:

Vous trouverez, pour finir, d'autes librairies optimisées pour le ATtiny mais que je n'ai pas testé personnellement :

Bref:

Grâce à ces librairies il est possible sur seulement 5 broches de pouvoir brancher un grand nombre de capteur et un LCD pour le debug ou tout simplement pour un affichage.
Bien sûr dans la limite de la mémoire du µ-controleur.

Voilà pour l'instant.

Si vous voyez des erreurs faites moi signe.Si vous avez des remarques n'hésitez pas. Si vous avez des questions c'est fait pour ça.

Gestion de la partie Hardware :

Petit conseil, pensez un faire un shield pour la programmation des ATtiny. Vous allez passez votre temps à le brocher/débrocher :
une plaque de C.I à pastilles, des connecteurs droits, un condensateur 10µF et surtout un support pour ATTiny double Lyre plus facile à débrancher que les support tulipe.

Ainsi qu'une plaque test avec un régulateur de tension 3,3v ou 5V (attention aux spécification tension VCC et fréquence cf datasheet), un interrupteur pour le reset, une led avec directement sa résistance correspondante.

Pour aller plus loin :

Il existe également une troisième sous-famille ATtiny 2313/4313.
Ceux qui sont observateur les ont aperçu lors du choix de la carte dans l'IDE Arduino. Ces derniers ne diposent pas de convertisseur analogique en numérique (ADC).

Il y a des différences dans les fonctions entre les 2 cores (MIT/Tiny).

Pour facilité le debuggage, il y a un équivalent de la fonction sérial (pas testé).

Il serait compliquer de modifier la fonction de la broche reset. Cela entraine l'impossibilité de programmer l'ATtiny avec un arduino

Il existe de plus en plus de Kit ATtiny chez les fournisseurs.

Voilà

EDIT: J'ajoute des petites observations au fur et à mesure que j'utilise les ATtiny

27/03/13: à 1 MHz la fonction Tone() produit un son qui grésille.

Si vous voyez des erreurs faites moi signe.Si vous avez des remarques n'hésitez pas. Si vous avez des questions c'est fait pour ça.

Bonjour skimeur

Merci pour les informations que tu partages.

A bientôt

@nolimit60.

merci

Tu devrais aller faire un tour sur http://digistump.com/

Petite "mésaventure" que je viens de rencontrer : pas de soucis sur attiny45 mais sous 44A mon pinout n'est pas le même que celui qu'on trouve partout, à savoir :

Je n'ai trouvé qu'un site qui en avait un qui correspondait :

Je n'ai pas creusé le problème plus que ça encore, mais si quelqu'un a la réponse direct ça m'évitera de rechercher xD

Dans ce tuto il s'agit principalement des micro contrôleur Tiny 44 (standard) ou Tiny 44V (basse tension) mais pas les Tiny44A

Le 44a est un mélange du 44 et du 44v : il peut travailler à basse tension et peut être configurer à 20 Mhz.

Cependant sur les datasheet fournies par Atmel les 44 et 44a ont le même brochage.

Peut être le tiens est-il réalisé par un autre fabricant ????

Nan c'est de l'Atmel :wink:

Bonjour à tous,

Peut-on utiliser un ATtiny85v avec tes manipulations ?
Faut-il changer a un endroit la fréquence car pour un ATtiny85v = 10Mhz et le ATtiny85 = 20Mhz.

Merci

Bonjour,

effectivement on peut utiliser l'ATtiny 85v avec ces manip'.
Le 10Mhz correspond à la fréquence max des 85v qui initialement sont configurés à 1Mhz
Pour changer la fréquence (si besoins et en fonction des compatibilité des librairies utilisées) suis les indications de ce tuto (voir Note après la partie programation).

Voilà !!!

Merci pour ce tutoriel :slight_smile:

Où achètes tu tes ATtiny ? Je vais surement acheter un kit chez semageek mais après il ne vend pas d'ATtiny séparément.

Hors frais de port (12€) Farnell sont très bien placés, et pas que sur les Attiny

Moi je les commande chez limpulsion.fr (magasin à côté de chez moi).
ils ont les 85 et 85V mais je connais pas leur frais de port.

Bonjour B@tto,

Je suis nouveau avec les AT Tiny et j'utilisais, jusqu'à il y a quelques minutes, votre charte des broches des Tiny ! Mais il y a des omissions dans ce charte, par exemple, il n'y a pas de broche pour « MOSI » concernant le Tiny84.

B@tto:
...
Je n'ai trouvé qu'un site qui en avait un qui correspondait :


...

Cela fut source d'erreurs et de confusions pour moi, cette dernière semaine. Je suis donc à la recherche d'une charte équivalente, mais qui ne comporte pas d'erreurs ou d'omissions. Mais comme je suis nouveau avec le Tiny, je ne suis pas bien placé pour juger les autres chartes sans un certain temps d'expérimentation. Mais si vous avez une autre charte que vous utilisez déjà pour vos travaux, je suis preneur !

Cordialement,

L'ami René

Bonjour,

Il suffit de consulter la datasheet :wink:

http://www.atmel.com/Images/8006S.pdf => page 2 => MOSI sur PA6 (d'ailleurs on voit l'omission sur la charte puisqu'il y a un //)

Bonjour B@tto,

Merci pour l'info et le lien !

Quand on débute sur Arduino, on a pas toujours le réflexe d'ouvrir un document de plus de 200 pages dans une langue qu'on ne maîtrise pas, pour chercher une image quand il y a Google Image...

Mais, je viens de faire des clips-écrans de toutes les puces Atmel que j'ai, alors, il ne me reste plus qu'a trouver un logiciel pour en peaufiner la présentation, un peu comme votre image, mais plus comme celle-ci, qui fait le lien entre les broches des différents produits Atmel et Arduino :

Si quelqu'un sait avec quel logiciel est utilisé pour produire cette présentation graphique, j'aimerais le savoir ?

L'ami René