Attiny 85 : Programmation avec un Arduino

Introduction :

Les Attiny sont des microcontrôleurs très intéressants car même s’ils ne sont pas très puissants (enfin certains seulement … comme celui que j’utilise pour cet article), ils ont l’avantage de ne pas être chers, de consommer peu d’énergie et de prendre peu de place.

Ils peuvent être utilisés pour réaliser des capteurs de mesure de la température, de l’hygrométrie ou de toute autre grandeur physico chimique dans le cadre de l’internet des objets par exemple … Ou plus simplement pour par exemple fabriquer une carte d’anniversaire qui joue de la musique tout en faisant clignoter des Leds.

Ils sont fabriqués par Atmel (la compagnie qui fabrique aussi les microcontrôleurs Atmega utilisés dans les Arduino)

Cet article montre comment il est possible de programmer facilement un Attiny85 à l’aide d’un Arduino UNO transformé en programmateur ISP.

NB : ISP signifie « In-System Programming » qui se traduit par programmation in-situ. C’est un procédé permettant de programmer un microcontrôleur (ici l’Attiny) alors qu’il est déjà en place sur la carte qu’il doit piloter.

Présentation de l’Attiny 85

Les caractéristiques techniques de ce micro-contrôleur sont les suivantes:

Taille de la mémoire Flash 8 Ko (pour les programmes)
Mémoire SRAM 512 Octets
Mémoire EEPROM 512 Octets
Nombre d’entrées/sorties: Jusqu’à 6 (5 en pratique)
Courant maximal en sortie: 40 mA
Courant maximal total 200 mA

Tension d’alimentation : 2.7 à 5.5V
Fréquence d’utilisation : 0 à 20Mhz

Photo de l’Attiny85 :
pm_attiny85_photo

Brochage de l’Attiny85 :

pm_attiny85_brochage

Préparation IDE Arduino

La préparation de l’IDE ARduino en version 1.6.4 est décrite ci-dessous :

Aller dans les préférences et saisir l’URL  suivante :  https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json dans la zone « Additional board URL » en bas de l’écran, puis cliquer sur OK :

pm_attiny_preferences

Aller ensuite dans le menu « Type de carte » / « Boards Manager », cliquer sur attiny et un bouton « Install » doit apparaître désormais.

Cliquer dessus.

pm_attiny_boarmanager

Le message « INSTALLED » doit apparaître à la fin de l’installation comme on peut le voir ci-dessous :

pm_attiny_installed.png

… et dans le menu « Outil » / « Type de carte » il doit désormais y avoir Attiny… Votre IDE Arduino est désormais pret pour programmer des Attiny.

Dans le menu « Outil », sélectionner :

  • Type de carte : Attiny,
  • Processor : Attiny85,
  • Programmateur : Arduino as ISP.

Ensuite ouvrir le sketch ArduinoISP disponible via les menus dans les exemples et le téléverser dans votre Arduino.

Votre Arduino est désormais capable de programmer des Attiny.

Vérification Arduino

Avant de passer à une première programmation, nous allons tout d’abord vérifier que tout fonctionne bien.

Pour cela, il faut relier les pattes E/S numériques de l’Arduino à des Leds via des resistances d’environ 150 ohms de la manière suivante :

  • Patte 7 Arduino > Led orange
  • Patte 8 Arduino > Led rouge
  • Patte 9 Arduino > Led verte

Si tout se passe bien, la Led verte doit s’allumer et s’éteinder progressivement.

Les autres Leds indiquent servent à indiquer :

  • Led orange : programmation en cours,
  • Led rouge : erreur.

Photos du montage :

 

Connexion de l’Attiny

Rappel du brochage de l’Attiny85 :

pm_attiny85_brochage

Il faut connecter MISO, MOSI, SCK, RESET, VCC, et GND de l’Arduino vers l’Attiny de la manière suivante :

  • RESET : Arduino Pin 10 -> ATtiny Reset Pin (patte 1)
  • MOSI   : Arduino Pin 11 -> ATtiny Pin 0 (patte 5)
  • MISO   : Arduino Pin 12 -> ATtiny Pin 1 (patte 6)
  • SCK      : Arduino Pin 13 -> ATtiny Pin 2 (patte 7)

Ensuite, sur l’Arduino placer un condensateur chimique de 10 uF entre la broche Reset et la masse (GND) de l’Arduino (pole négatif avec un trait sur le condensateur).

Ce condensateur empêche la carte Arduino de faire un reset et de redémarrer ainsi le bootloader lors des téléversements destinés à l’Attiny. De cette facon en effet on est sur que l’IDE Arduino rentre en communication avec ArduinoISP (et non le bootloader) durant le téléversement du croquis qui est destiné à l’Attiny et pas pas à l’Arduino 🙂

pm_arduino_attiny

pm_arduino_attiny_program_photo_montage

Configuration de l’Attiny à 8 MHz (optionnel)

Par défaut, l’Attiny tourne à 1 Mhz. Pour pouvoir utiliser la bibliothèque SoftwareSerial (si vous en avez le besoin), il faut le programmer pour qu’il tourne à 8 Mhz.

Pour cela, une fois le montage réalisé présenté précédemment, il faut choisir dans le menu « Outil » / « Clock » / « 8Mhz INTERNAL ».

Ensuite sélectionner dans le menu « Outil » « Graver la séquence d’initialisation ».

Test du programmateur d’Attiny avec l’Arduino

Nous allons maintenant réaliser un programme de test et téléverser ce programme dans l’Attiny à l’aide de l’Arduino comme programmateur ISP puis un chenillard.

Programme de test 1

Pour le premier test on peut simplement utiliser l’exemple classique blink disponible via les menus  en remplacant ensuite pour la led à faire clignoter la patte 13 indiqué dans le sketch par la patte 3 et brancher enuite sur l’Attiny (pin 3) une led en série avec une resistance de 150 ohms environ.

Code :

/*
  Blink
  Turns on an LED on for one second, then off for one second, repeatedly.

  Most Arduinos have an on-board LED you can control. On the Uno and
  Leonardo, it is attached to digital pin 13. If you're unsure what
  pin the on-board LED is connected to on your Arduino model, check
  the documentation at http://www.arduino.cc

  This example code is in the public domain.

  modified 8 May 2014
  by Scott Fitzgerald
 */


// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin 13 as an output.
  pinMode(3, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(3, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);              // wait for a second
  digitalWrite(3, LOW);    // turn the LED off by making the voltage LOW
  delay(5000);              // wait for a second
}

Programme chenillard à quatre leds

Le programme ci-dessous développé pour l’Attiny est un chenillard avec quatre Leds connectées de la manière suivante :

  • Pin 0 Attiny : led verte
  • Pin 1 Attiny : led jaune
  • Pin 2 Attiny : led bleue
  • Pin 3 Attiny : led rouge

Rappel brochage Attiny 85 :

pm_attiny85_brochage

Saisir ce programme dans l’IDE Arduino puis demander son téléversement.

/*
Chenillard avec un ATTINY 85 programmé en ISP avec un Arduino UNO
Fait le 11 12 2015
 */

#define VERT 0    // La led verte est sur la brohe 0 de l'ATTINY
#define ROUGE 3   // La led rouge est sur la brohe 3 de l'ATTINY
#define BLEU 2    // La led bleue est sur la brohe 2 de l'ATTINY
#define JAUNE 1   // La led jaune est sur la brohe 1 de l'ATTINY

// Initialisation en sortie des pattes et extinction des LEDs
void setup() {
  pinMode(VERT, OUTPUT);
  pinMode(ROUGE, OUTPUT);
  pinMode(BLEU, OUTPUT);
  pinMode(JAUNE, OUTPUT);
  digitalWrite(VERT, LOW); 
  digitalWrite(ROUGE, LOW); 
  digitalWrite(BLEU, LOW); 
  digitalWrite(JAUNE, LOW); 
}

// Boucle d allumage et extinction des LEDs en série                          
void loop() {
  digitalWrite(BLEU, HIGH);   // allumage led bleue
  delay(1000);                // attente une seconde
  digitalWrite(BLEU, LOW);    // extinction de la led bleue
  delay(1000);                // attente une seconde
  
  digitalWrite(JAUNE, HIGH);   
  delay(1000);              
  digitalWrite(JAUNE, LOW);    
  delay(1000);              
  
  digitalWrite(VERT, HIGH);   
  delay(1000);              
  digitalWrite(VERT, LOW);   
  delay(1000);              
  
  digitalWrite(ROUGE, HIGH);   
  delay(1000);              
  digitalWrite(ROUGE, LOW);    
  delay(1000);             
}

Référence

Pour info, les ordres Arduino ne sont pas tous utilisables pour un programme destiné à l’Attiny. Seuls les ordres Arduino ci-dessous sont disponibles pour les programmes Attiny :

Montage

Une fois la programmation de l’Attiny terminée, celui-ci peut fonctionner de manière autonome.

Dans le montage ci-dessous, l’Attiny est  connecté à l’Arduino pour juste l’alimentation pendant les tests (fils noir et rouge) mais il peut bien sur être alimenté à l’aide d’une simple pile et fonctionner ainsi de manière complètement autonome.

pm_photo_test_programm_attiny_chenillard

Publicités

9 réflexions au sujet de « Attiny 85 : Programmation avec un Arduino »

  1. bonjour
    j’ai suivi exactements vos conseils pour progammer l’attiny 85 j’ai controler a plusieurs reprises mes branchements mis le condo etc , je ne peut pas televerser le programme j’ai toujours un message d’erreur de televersement du type  » avrdude: stk500_recv(): programmer is not repeponding
    avrdude: stk500_getsync() attempt 1 of 10 :not is sync: resp=0*03″
    10 fois
    et  » Problème de téléversement vers la carte »
    j’avais deja graver la sequence d’initialisation il y a plusieurs annees sur les memes attiny que je reprends maintenant que je suis en retraite  » j’ai beaucoup plus de temps « et cela fonctionnait tres bien entre temps j’ai changer du materiel st passe a windows10 mais là impossible
    j’ai pourtant televerser le programme « ArduinoISP » a l’arduino dans un 1er temps
    brancher le type de carte sur »ATtiny25/45/85″
    puis Processeur »ATtiny85″
    puis clock « internal 8 MHz
    verifier le port « com3″qui correspond bien dans le panneau de configuration windows10
    puis programmateur « Arduino as ISP »
    j’ai également suivi le même processus avec la derniers version d’arnuino 1.8.1 du j’ai retrograder a la version 1.6.4 pour essai
    je vous remercie d’avance pour votre aide

    J'aime

    1. Bonjour. Merci pour votre commentaire. J’ai ajouté dans l’article des informations permettant de vérifier le bon fonctionnement de l’Arduino comme programmateur ISP après le chargement du sketch. En espérant que cela pourra vous aider.

      J'aime

  2. Il a un bug avec windows 10 pour la programmation à l’aide de ArduinoISP. Par contre il y a une parade facile à mettre en oeuvre. Dans le répertoire de l’exécutable Arduino, rechercher le fichier programmers.txt (Sur mon ordinateur il se retrouve dans le dossier: C:\Program Files (x86)\Arduino\hardware\arduino\avr . Copier ce fichier sur le bureau. Ensuite modifier ce fichier à l’aide de notepad (Ou autre éditeur de texte). Ajouter à la fin du fichier le bloc de code suivant:

    arduinopleo.name=Arduino as ISP (leonardo)
    arduinopleo.communication=serial
    arduinopleo.protocol=arduino
    arduinopleo.speed=19200
    arduinopleo.program.protocol=arduino
    arduinopleo.program.speed=19200
    arduinopleo.program.tool=avrdude
    arduinopleo.program.extra_params=-P{serial.port} -b{program.speed}

    Lors de la programmation de l’atTiny. Aller dans outils->Programmateur et choississez Arduino as ISP (leonardo).

    Le truc de cette manip est de changer le protocol de programmation de arvdude à serial (arduiopleo.communication).

    Avec cette manip j’ai pu rammener à la vie un arduino micro et un Arduino Leonardo qui ne voulait plus démarrer.

    Bonne chance

    J'aime

    1. Petit oubli.
      Replacer le fichier programmers.txt à son endroit d’origine. Windows devrait vous demander une autorisation pour écraser le fichier. La raison pourquoi je copie ce fichier sur le bureau est que windows 10 ne nous permet pas de modifier un fichier dans les répertoires System.

      J'aime

  3. Bonjour, j’ai un petit souci au moment du téléversement du sketch ArduinoISP , dans la fenêtre débug il m’écrit : ‘serial’ was not declared in this scop Je suis pas un grand cador en programmation donc je me permet de venir vers vous merci

    J'aime

  4. Désolé c’est bon j’ai compris , en fait il faut téléverser le sketch ArduinoISP avant de renommer le type de carte en ATTINY 85 comme c’est le cas pour moi . vraiment je suis confus milles excuses 😉

    J'aime

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s