Après avoir tâtonné pendant quelques heures, j'ai enfin réussi à téléverser Blink, le croquis de clignotement traditionnel, sur un ATtiny85 avec le programmeur AVR de Sparkfun en utilisant l'EDI Arduino (version 1.8.10) dans Ubuntu 18.04. D'autres rencontreront peut-être certaines des mêmes difficultés, alors voici comment j'ai procédé. Comme d'habitude, je ne fais que colliger le travail des autres.
Table des matières
Noyau Arduino
Le guide d'utilisation de Sparkfun intitulé Tiny AVR Programmer Hookup Guide doit être lu même s'il est orienté Windows. Vous y découvrirez qu'un noyau Arduino pour les microcontrôleurs AVR de type ATtiny (modèles 25, 45, 85, 24, 44 et 84) a été développé par David A. Mellis et qu'il est disponible sur GitHub: github.com/damellis/attiny. La procédure est simple, du moins pour ceux qui ont déjà installé un gestionnaire de carte supplémentaire. Il s'agit d'une opération en deux étapes pour ajouter la prise en charge de ces microcontrôleurs dans l'EDI Arduino.
1. Ajoutez le gestionnaire de cartes ATtiny
Dans les Préférences
de l'EDI qu'on atteint avec les choix
de menu Fichier/Préférences
, il faut ajouter l'URL
suivante :
à la liste d'URL de gestionnaire de cartes supplémentaires
.
S'il s'agit de la première URL supplémentaire, elle peut être collée directement dans la boîte de saisie. Sinon, cliquez sur le bouton à droite de cette dernière collez l'URL sur une ligne distincte de la liste, comme indiqué ci-dessus.
2. Install le noyau ATtiny
Lancez le Gestionnaire de carte
avec la sélection de menu
Outils
/Type de carte: "carte courante"
.
Le choix Gestionnaire de carte
est au début de la liste des
cartes actuellement prises en charge.
Entrez attiny
dans le filtre de recherche en haut de la
fenêtre puis sélectionnez le paquet attiny
et cliquez sur le
bouton installer
.
C'est tout, mais si ces explications sont trop laconiques, regardez les instructions d'installation très détaillées du groupe High-Low Tech.
Autorisations
Heureusement, il n'est pas nécessaire d'installer des pilotes sous Linux (sous Windows, suivez les
instructions de la section Automatically Install the Drivers with Zadig du Guide de
branchement.) Connectez simplement le programmeur AVR à un port USB
directement ou avec câble d'extension. Il devrait s'afficher en tant que
Multiple Vendors USBtiny
dans la liste des périphériques USB
connectés.
Si l'appareil n'est pas dans la liste, essayez avec un autre câble USB (le cas échéant) ou un autre port USB en évitant de passer par un concentrateur USB. Si le programmateur n'est toujours pas reconnu, redémarrez et essayez de connecter le programmeur AVR.
Notez comment le programmeur est connecté au bus 3 en tant que
périphérique 10. Son propriétaire et son groupe sont root
et
d'autres (c'est-à-dire moi) n'y ont pas accès en écriture.
Il sera difficile de téléverser un croquis vers l'AVR, mais il existe des
moyens de contourner temporairement ce problème. L'EDI Arduino peut être
démarré en tant que root
.
Bien sûr, le répertoire correct contenant le fichier exécutable
arduino
devra être spécifié. Une autre possibilité consiste à
accorder aux autres utilisateurs des privilèges d'écriture sur
l'appareil.
Ces expédients fonctionnent et il serait possible de passer directement à
la section suivante pour télécharger un croquis sur le microcontrôleur.
Cependant, il est préférable de créer une règle udev
qui définira
automatiquement les autorisations nécessaires lorsque le programmateur est
connecté et reconnu.
D'abord, le répertoire habituel des règles udev
est défini en
tant que répertoire de travail, puis on vérifie qu'aucune règle n'existe pour
le fournisseur 1781
.
Si une règle existe pour ce fournisseur, vérifiez que c'est pour un
produit autre 0c9f
, autrement il y aura un conflit. En supposant
qu'il n'y a pas de conflit ou qu'il a été résolu, une règle sera créée. J'ai
utilisé celle-ci
que j'ai créé avec l'éditeur nano
en tant que super
utilisateur.
Pour voir l'effet de cette règle, déconnectez le programmeur et exécutez
les deux commandes suivantes qui redémarrent le système udev
.
Reconnectez le programmeur AVR, puis retrouvez-le, car il sera probablement connecté en tant que périphérique différent.
Maintenant, les autres utilisateurs quelconques ne peuvent même pas lire
le programmeur, mais ce n'est pas un problème, car le groupe est maintenant
adm
à la place de root
et l'utilisateur (moi!) est
membre de ce groupe&nbps;:
L'utilisateur par défaut doit également être membre du groupe
plugdev
. Selon toute vraisemblance, l'utilisateur par défaut est
membre des deux groupes plugdev
et adm
. J'ai
envisagé d'utiliser le groupe dialout
au lieu de
adm
, car de nombreux microcontrôleurs programmés avec l'EDI
Arduino y sont connectés avec des convertisseurs TTY-USB qui sont affectés à
ce groupe. Cela n'a vraiment pas d'importance.
L'EDI Arduino peut être démarré de la manière habituelle et il sera possible de téléverser un croquis sur un AVR comme indiqué dans la section suivante. Avant, je mentionnerai que d'autres suggèrent les règles suivantes.
La première correspond à la deuxième solution temporaire explorée initialement, mais avec l'avantage qu'elle fonctionnera, quel que soit le numéro de périphérique attribué au programmeur AVR lorsqu'il est branché à chaud sur le bus USB. La deuxième version est pour ceux qui portent bretelles et ceinture.
Blink sur ATtiny85
Le téléversement de l'esquisse de clignotement classique, Blink, vers un ATtiny85 ne se fait pas exactement de la même façon que vers un Arduino Uno ou un ESP8266. En outre, le programmeur AVR n'apparaît pas comme un périphérique série. Néanmoins, la procédure est tout aussi simple.
- Déconnectez le programmeur AVR.
- Insérez le microcontrôleur dans le socle DIP du programmateur AVR. Assurez-vous qu'il est correctement orienté: le point qui dénote la broche 1 doit être dans le coin supérieur gauche lorsque le port USB du programmateur est à votre gauche.
- Obtenez le croquis Blink en utilisant le menu de l'EDI :
Fichier/Examples/01.Basics/Blink
. - Insérez la définition
#define LED_BUILTIN 0
dans le croquis juste avant la fonction void setup() dans le croquis. - Sélectionnez la carte et les paramètres appropriés dans le menu
Outils
. La capture d'écran montre les valeurs correctes pour le ATTiny85.Notez comment le port de communication est désactivé, à la place, le paramètre
Programmateur
doit être défini surUSBtinyISP
. - Téléversez l'esquisse de la manière habituelle: avec la combinaison de
deux touches CtrlU,
le menu
Croquis/Téléverser
ou le boutonTéléverser
.
J'espère que vous aurez du succès comme moi et que vous verrez la DEL orange du programmeur AVR clignoter rapidement lorsque le croquis est transféré vers le microcontrôleur, puis clignoter de façon constante une fois que le programme s'exécute.
Bibliographie et un dernier lien
Voici des commentaires de clients anonymes sur des sites de fournisseurs qui étaient mes premières sources :
- Help fixing device permissions for A000092 usb programmer board, in Ubuntu (2016-03-21).
- Great USB programmer for ATtiny85. Works on Linux! Compatible with Arduino IDE! (2016-12-16).
Les articles suivants sont plus utiles, en particulier celui de Rihard Kubilis que j'aurais aimé avoir trouvé dès le début.
- Gregor van Egdom (2016-12-05), Using USBtinyISP with Ubuntu.
- Rihards Kubilis [Console Breadcrumb] (2016-11-12), Getting started with Attiny microcontroller.
Les publications Tiny AVR Programmer Hookup Guide de Sparkfun et Programming an ATtiny w/ Arduino 1.6 (or 1.0) de David A. Mellis ont déjà été mentionnées.
Enfin, il existe plusieurs noyaux Arduino pour les dispositifs de type ATtiny. Jetez un œil au ATTinyCore de Spence Konde. Il prend en charge beaucoup plus de contrôleurs ATTiny et il semble contenir plus de fonctionnalités.