Prise en main ATTiny85
On m’a souvent parlé des attiny85 comme de petits arduino programmable consommant très peu de courant (< 1uA en deep sleep). On va donc voir comment programmer ces petites bêtes !
Découverte de l’ATTiny85
L’attiny85 est un microcontroleur à 8 pattes qui se programme avec des commandes types Arduino. C’est un modèle réduit de l’atmega328.
Mémoire Flash | 8 Ko |
Mémoire SRam | 0,5 Ko |
Mémoire EEProm | 0,5 Ko |
Broches | 8 |
E/S numériques max | 6 |
Entrées analogiques | 4 |
Alimentation | 2,7 – 5,5V |
Pour pouvoir programmer l’attiny85, on va passer par un arduino uno qui servira de programmateur.
Paramétrer l’Arduino Uno
Il faut d’abord aller dans les préférences de l’Arduino (Arduino -> Préférences et lui rajouter l’url de gestionnaire de cartes suivante : https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json
Puis on va aller dans le gestionnaire de cartes pour installer la attiny. Aller dans outils -> type de carte -> gestionnaire de carte.
Chercher attiny, sélectionner celui de David A. Mellis et cliquer sur installer.
Ensuite, il faut charger le programme ISP sur l’Arduino pour pouvoir ensuite programmer les ATTiny. Lancer le programme d’exemple ArduinoISP via Fichier -> Exemples -> 11. Arduino ISP -> Arduino ISP
Puis téléverser le programme sur l’Arduino.
Câblage de l’ATTiny85
Pour pouvoir programmer l’attiny85, il est nécessaire de le raccorder à l’Arduino comme suit :
Il faut un condensateur 10 uF, entre RESET et GND. La bande blanche sera connectée au GND. Si vous pensez programmer souvent des attiny85, je vous conseille de vous fabriquer une carte d’interface sur plaque perforée. Voici la mienne ci dessous (le condensateur est sur le dessous de la carte).
J’ai rajouté sur la pin D7 une led pour le heartbeat, sur la pin D8 une led rouge d’erreur, et en D9 une led verte d’activité de téléversement. Ces leds sont déclarées dans le programme ISP.
Préparation de l’ATTiny
Pour pouvoir téléverser un programme sur l’attiny85, il faut au préalable le préparer. On va tout d’abord graver la séquence d’initialisation. Pour ce faire, brancher votre attiny sur votre arduino puis, sélectionner Outils -> Type de carte -> Attiny 25/45/85
Vérifier que vous êtes bien en 8MHz et ATTiny85 comme ci dessous
Puis, très important, il faut choisir le programmateur. Dans outils -> programmateur, sélection Arduino as ISP.
Attention : il faut bien choisir Arduino as ISP et non pas ArduinoISP car cela ne fonctionne pas !
Puis nous allons graver la séquence d’initialisation. Aller dans outils puis Graver la séquence d’initialisation. Cette manipulation n’est à faire qu’une seule fois par attiny !
Mon premier programme
Ca y est, l’attiny est prêt à recevoir son premier programme. Je vous propose de coder un feu tricolore, avec 3 leds : vert, jaune rouge. Vert sera allumé 5 sec, jaune 2 sec et rouge 8 sec, soit des cycles de 15 secondes.
/*
Attiny85 - programme démo feu tricolore
avec :
- Attiny85
- led rouge
- led jaune
- led verte
- resistance 560 ohms
Source : https://www.sla99.fr
30/11/2019 v0 version initiale
*/
const int LED_ROUGE = 0;
const int LED_JAUNE = 1;
const int LED_VERTE = 2;
void setup() {
pinMode(LED_ROUGE, OUTPUT);
pinMode(LED_JAUNE, OUTPUT);
pinMode(LED_VERTE, OUTPUT);
}
void loop() {
//feu vert, 5 sec
digitalWrite(LED_VERTE, HIGH);
digitalWrite(LED_JAUNE, LOW);
digitalWrite(LED_ROUGE, LOW);
delay(5000);
//feu jaune, 2 sec
digitalWrite(LED_VERTE, LOW);
digitalWrite(LED_JAUNE, HIGH);
digitalWrite(LED_ROUGE, LOW);
delay(2000);
//feu rouge, 8 sec
digitalWrite(LED_VERTE, LOW);
digitalWrite(LED_JAUNE, LOW);
digitalWrite(LED_ROUGE, HIGH);
delay(8000);
}
Copier le programme puis téléverser-le.
Conclusion
Une prise en main rapide et efficace. La fabrication de la platine de programmation prend un peu de temps mais en fait gagner beaucoup ensuite.