Flasher un µController avec un arduino

Tout le monde connaît la arduino, la UNO, du moins dans le monde electro-informatique, je pense, de Montéfiore, en passant par Mons pour finir au MIT.

Quel est mon propos ? Cette carte est lourde, quelque part, trop d’I/O, trop de pattes, on voudrai un format façon NE-555. Une bête puce, façon deux fois quatre pattes… Et cela existe… l’ATTINY85

– Certaines de nos applications sur microcontrôleur demandent peu d’entrées/sorties et des cartes tels que la NANO, PRO, UNO sont surdimensionnées. C’est pour cela que je vous proposes de découvrir ce petit microcontrôleur à 8 pattes qui permet de faire des économies de place, financiers et en énergie. – Il existe plusieurs méthodes de programmation : Avec une carte de type ARDUINO Ou avec un module USB FTDI – La méthode utilisée dans la vidéo est la première énoncée. Découvrez-le et retrouvez-le sur la boutique d’ihm-3d. — L’URL de gestionnaire des cartes supplémentaire à copier-coller : https://raw.githubusercontent.com/dam… — Data sheet ATTINY85 : http://ww1.microchip.com/downloads/en… — Le site : http://www.ihm3d.fr

https://www.ihm3d.fr/httpwww-ihm3d-fraides-assistances-tutoriels.html

Un MCU Atmel

Les ATtiny sont une famille de microcontrôleurs* AVR** produits par la société Atmel.
*On trouve souvent l’acronyme MCU, qui signifie Multipoint Control Unit, à la place du mot français microcontrôleur. Mais il s’agit de la même chose: MCU = microcontrôleur = 𝜇C   

La famille des micro-contrôleurs AVR se compose de 5 groupes principaux et, parmi ces derniers, on retrouve: les tiny, les mega, les Xmega. 
Les microcontrôleurs tiny sont optimisés pour les applications qui nécessitent des performances, une efficacité énergétique et une facilité d’utilisation dans un petit boîtier. C’est à cette famille que nous allons nous intéresser.
La famille des ATtiny est relativement nombreuse. On y trouve une multitude de modèles avec des caractéristiques différentes. Si vous voulez les comparer tous, vous pouvez vous reporter à la page du wiki dédiée ICI. En ce qui me concerne j’ai surtout entendu parler des ATtiny45 et ATtiny85 qui semblent les plus connus. Ils ont en commun d’avoir 8 broches: 6 GPIO + VIN + GND. En réalité ils font partie d’un groupe dont les modèles sont compatibles et dont la seule différence est la quantité de mémoire: 

  • Attiny25 = Microcontrôleur avec 2 Ko de mémoire programmable
  • Attiny45 = Microcontrôleur avec 4 Ko de mémoire programmable
  • Attiny85 = Microcontrôleur avec 8 Ko de mémoire programmable

Un autre schéma de brochage extrait du datasheet qui apporte quelques fonctions en plus:

Qu’est ce qu’un bootloader?

Un « chargeur de démarrage » est un programme qui s’exécute au démarrage et utilise les fonctionnalités d’auto-modification du flash pour permettre à l’AVR de se programmer lui-même via des données (le programme) chargées à partir d’une source externe. Les chargeurs de démarrage peuvent obtenir leurs données à partir de n’importe quel emplacement dont le plus fréquent est la communication avec un PC via le port série de l’AVR. 
Les bootloader consomment de l’espace de mémoire flash (Micronucleus occupe 2 ko, limitant la taille totale  disponible pour l’application à 6 ko sur un Attiny85). De plus, ils ne peuvent pas changer les fusibles AVR (nous verrons ultérieurement ce que cela signifie). Sur l’Attiny85, si le bootloader est utilisé pour communiquer avec le PC en USB, 2 broches (3 et 4) verront leur utilisation affectée.

Sur un MCU comme notre Attiny, le bootloader va servir à rendre le microcontrôleur compatible avec une carte de développement en permettant la communication en USB avec un ordinateur. En fonction d’un événement particulier, il va exécuter une séquence de reprogrammation à partir de données externes reçues sur les broches data (P3 et P4) correspondantes aux broches DATA de l’USB, ou alors il va exécuter la suite du programme en mémoire. Par exemple, un bootloader pourrait tester l’état électrique d’une broche. Si elle est à un état haut, dans ce cas, le MCU va se reprogrammer.
Les bootloader se trouvent sur Internet en téléchargement, mais on se retrouve face à un problème de « poule et œuf ».  Pour flasher l’Attiny depuis la platine de développement il faut un bootloader et pour avoir un bootloader il faut flasher l’Attiny. Nous aurons donc besoin d’un programmeur AVR ISP ou d’acheter un MCU avec bootloader préchargé.
Le bootloader le plus courant est Micronucleus : https://github.com/micronucleus/micronucleus

Étapes à suivre 

1/ Ouvrir l’IDE Arduino
2/  S’assurer que le type de carte choisi est bien « Arduino UNO » et que le programmateur est bien sur « ArduinoISP » (ne pas confondre avec « Arduino As ISP » qui sera utilisé ultérieurement).

3/ Raccorder l’Arduino au PC en USB
4/ Identifiez le port COM sur lequel l’Arduino est connecté. Pour cela, allez dans le menu <Outils>/<Port> et assurez vous que le bon port est sélectionné. Ici le port COM4.

5/ Ecrivez le code de votre programme. Je vous laisse le code de mon programme de test un peu plus bas.

6/ Compilez (Bouton « Vérifiez » dans le menu de l’IDE) et téléversez le programme.

7/ Rebootez manuellement l’Arduino

8/ Ouvrez le moniteur série (bouton correspondant à la petite loupe en haut à gauche de l’interface de l’IDE). Vérifiez que vous avez sélectionné la vitesse de communication de l’interface série identique à la vitesse définie dans le programme (dans mon cas j’ai mis 9600 bauds). Dans l’interface série de l’IDE cette vitesse se fixe par un bouton à choix multiple en bas à droite.

Vous devriez voir l’affichage suivant: 

Si c’est le cas, c’est que vous maîtrisez la programmation de votre Arduino et que vous êtes prêt pour la suite.