Comment transformer votre Arduino en un FAI - Programmation de l'ATmel ATtiny85

Publié: 2017-06-13

Octets courts : Parfois, l'utilisation d'une carte Arduino pré-construite dans un projet est exagérée, ou simplement surdimensionnée. L'ATtiny85 est un microcontrôleur peu coûteux mais étonnamment performant qui peut vous aider à réduire l'encombrement de votre projet. Voici comment vous pouvez programmer un ATtiny pour l'utiliser dans votre projet.

La plate-forme Arduino est un outil d'apprentissage incroyable, mais parfois les cartes Arduino prises en charge ne correspondent pas tout à fait là où vous en avez besoin. Avec l'Arduino Uno (le modèle le plus courant) mesurant environ 65 mm x 50 mm, il est facile de voir comment il pourrait être le plus gros composant de certains projets. Il existe d'autres cartes comme la Nano qui sont beaucoup plus petites (ma copie Nano fait 43 mm sur 17 mm, 4,5 fois plus petite) , mais même dans ce cas, c'est parfois trop grand. Que se passe-t-il si, par exemple, vous voulez construire un appareil portable, peut-être que c'est juste une LED clignotante que votre chien doit porter la nuit. Une fois que vous avez pris en compte une batterie, etc., cela peut devenir assez volumineux.

Cue la ligne ATtiny, le héros de notre problème. L'homonyme de l'ATtiny est évident. Vous pouvez le trouver dans un boîtier DIP-8 (boîtier double en ligne - 8 broches) , qui mesure environ 9 mm au carré. Dans la vraie nature de son homonyme, l'ATtiny est minuscule, mais à bien d'autres égards que sa taille physique. L'ATtiny85, qui est utilisé pour cet article, ne dispose que de 8 Ko de stockage flash du programme, de 512 octets de RAM et de 512 octets d'EEPROM (stockage permanent en dehors du stockage du programme) .

Maintenant, le problème est de programmer l'un de ces petits gars. Il existe quelques tutoriels en ligne pour cela, mais je les ai trouvés légèrement incomplets ou manquant d'instructions.

FAI - Programmeur système

Un programmeur système (ISP) n'est pas aussi sophistiqué qu'il y paraît. En règle générale, un FAI pour une puce ATmel se compose d'un appareil avec un câble USB à six broches. Les broches ISP sont vraiment faciles à repérer sur les Arduinos, elles sont généralement situées en face du connecteur USB. Les puces ATmel sont destinées à être programmées via les broches ISP, mais la plate-forme Arduino a implémenté un adaptateur USB vers série sur la carte pour éliminer le besoin du périphérique ISP. Malgré cela, ils ont laissé les broches ISP disponibles sur de nombreux modèles, sinon sur la plupart.

Parce que nos puces ATtiny n'ont pas le périphérique USB vers série que les Arduinos ont, il est nécessaire qu'elles soient programmées à l'aide d'un FAI. Les appareils ATmel ISP sont assez chers, du moins par rapport au coût d'un Arduino lui-même, nous économiserons donc de l'argent et du temps d'expédition en programmant un Arduino pour qu'il se comporte comme un ISP.

Pour ce faire, nous ouvrons l'IDE Arduino et sélectionnons ArduinoISP dans les exemples de croquis.

Lors de l'ouverture du fichier d'esquisse, vous verrez des informations sur le comportement attendu du code. Dans ce fichier, nous devons faire une modification rapide pour que notre FAI communique correctement avec l'IDE Arduino.

À la ligne 220, nous trouvons la fonction setup() .

 void setup() {
  SERIAL.begin(BAUDRATE);

  pinMode(LED_PMODE, SORTIE);
  impulsion(LED_PMODE, 2);
  pinMode(LED_ERR, SORTIE);
  impulsion(LED_ERR, 2);
  pinMode(LED_HB, SORTIE);
  impulsion(LED_HB, 2);

}

Nous devons changer BAUDRATE à 19200 pour que la ligne se lise

 SÉRIE.begin(19200);

D'après ce que j'ai lu, l'IDE Arduino a reçu une mise à jour qui a rompu la compatibilité avec ce firmware ArduinoISP. L'Arduino et l'IDE tentaient de communiquer à différents débits en bauds, ce qui empêchait d'utiliser l'Arduino en tant que FAI, malgré le clignotement correct du micrologiciel.

Bibliothèques ATtiny

L'IDE Arduino prend en charge une variété de microcontrôleurs et de cartes différents, mais malheureusement, la série ATtiny n'est pas incluse. Cela signifie que nous devons nous-mêmes les soutenir.

La méthode qui a fonctionné pour moi consistait à ajouter l'URL ci-dessous aux URL du gestionnaire de cartes supplémentaires sous les préférences de l'IDE Arduino,

https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json

redémarrez l'IDE, ouvrez le gestionnaire de cartes sous Outils -> Conseil -> Gestionnaire de cartes, puis recherchez le package ATtiny et installez-le.

Une fois cela fait, vous pouvez commencer à construire votre circuit pour programmer votre ATtiny.

Créer votre FAI

Il existe plusieurs façons de créer votre FAI. Vous pouvez le construire dans une planche à pain sans soudure afin de pouvoir réutiliser les pièces, ou vous pouvez créer une solution semi-permanente en le soudant tous ensemble comme je l'ai fait. Si vous soudez soigneusement le tout ensemble, vous pouvez réutiliser l'Arduino pour un autre projet si vous le souhaitez.

En regardant les trente premières lignes de l'esquisse ArduinoISP, nous pouvons trouver les informations suivantes sur la configuration de l'Arduino pour qu'il fonctionne comme un FAI.

Broche 10 Pour réinitialiser la broche pour
Microcontrôleur cible
Broche 11 Sortie maître SPI
Esclave dans
Broche 12 Entrée maître SPI
Esclave
Broche 13 Horloge série SPI

En option, vous pouvez connecter des LED aux broches suivantes pour indiquer l'état

  • Broche 9 - Heartbeat - Indique que le FAI est en cours d'exécution
  • Broche 8 - Erreur - Indique qu'une erreur s'est produite
  • Broche 7 - Programmation - Indique une communication active avec la cible

Gardez à l'esprit que ces LED nécessiteront des résistances.

Ici, nous pouvons voir le brochage de l'ATtiny85 et les connexions appropriées que nous devons rétablir avec l'Arduino. C'est un dessin assez grossier, mais j'ai étiqueté les broches sur l'ATtiny85 pour plus de commodité. Il convient de noter, cependant, que les broches ne sont pas adressées à 1,2,3..8 comme elles le sont dans le schéma, elles sont désignées dans l'IDE Arduino comme elles ont été étiquetées dans le texte en diagonale.

Voici un schéma beaucoup plus détaillé des différentes connexions. Toutes les LED sont facultatives, mais elles sont utiles pour le dépannage, en plus des trois LED d'état qui étaient recommandées dans le fichier de croquis ArduinoISP, il y en a une qui se connecte simplement du 5V à la masse (avec une résistance, bien sûr) , et puis il y en a un connecté à la deuxième broche (broche 3 dans l'IDE) pour tester l'ATtiny avec le test de clignotement. Remarquez le condensateur qui relie la broche de réinitialisation à la terre, cela est nécessaire pour que l'Arduino fonctionne comme un FAI.

C'est le FAI Arduino que j'ai construit pour les microcontrôleurs ATtiny. Vous pouvez voir que j'ai utilisé la prise DIP-8 pour maintenir l'ATtiny pendant sa programmation. J'ai également laissé suffisamment de place sur la droite pour installer une prise DIP-28 pour programmer des puces ATmega comme l'ATmega328P. La mise à niveau sera très simple, nécessitant seulement que les broches nécessaires pour les puces Atmega soient connectées comme nous l'avons fait avec l'ATtiny.

Une fois que vous aurez assemblé votre FAI Arduino, vous voudrez sûrement l'essayer. Assurez-vous de sélectionner les paramètres appropriés à programmer via votre Arduino connecté et de ne pas programmer l'Arduino lui-même.

Pour la carte, nous choisissons l'option ATiny 25/45/85, puis sélectionnons ATtiny85 dans la sélection du processeur, et enfin, nous sélectionnons Arduino comme FAI parmi les programmeurs. Cela indique à l'IDE tout ce qu'il doit savoir sur le système cible, y compris la manière dont il communiquera avec lui. Nous sommes maintenant prêts à afficher le croquis Blink (ou à le taper vous-même si vous êtes aussi hardcore) et à l'essayer, assurez-vous simplement de changer la broche utilisée pour faire clignoter la LED sur celle que vous avez utilisée dans votre circuit, c'est la broche 3 si vous utilisez le schéma que j'ai fourni. Enfin, nous compilons et téléchargeons le sketch en cliquant sur Sketch -> Upload Using Programmer.

 void setup() {
  pinMode(3, SORTIE);
}

boucle vide() {
  digitalWrite(3, ÉLEVÉ);
  retard(1000);
  digitalWrite(3, BAS);
  retard(1000);
}

Au total, mon FAI Arduino qui est soudé ensemble coûte probablement environ trois ou quatre dollars. Les puces ATtiny peuvent également être extrêmement peu coûteuses, généralement seulement environ un dollar pièce. Je recommande d'acheter les sockets DIP-8 si vous envisagez d'intégrer des puces ATtiny dans des projets, car vous souhaiterez peut-être mettre à jour du code ou réutiliser la puce. Souder un circuit intégré en place est faisable, mais vous pouvez facilement endommager le circuit intégré, en particulier avec une exposition répétée, comme ce serait le cas si vous mettiez à jour le code plusieurs fois.

Est-ce que quelqu'un d'autre a fait quelque chose comme ça? Aimeriez-vous voir plus de trucs Arduino? Faites-le nous savoir dans les commentaires ci-dessous.

Lisez aussi : Raspberry Pi ou Arduino — Quelle carte est la meilleure pour un débutant ?