Comment programmer la carte CJMCU ATTiny85 (LilyTiny / LilyPad) • Domotique et objets connectés à faire soi-même

La carte CJMCU est une petite carte destinée à des projets d’électronique vestimentaire (Wearable en anglais) basée sur le chipset ATTiny85 (documentation technique ATMEL). Dans cet article, nous allons simplement survoler l’ATTiny85 qui fera l’objet d’un prochain article. Cet article porte sur l’installation du drivers Digistump, la préparation de l’IDE Arduino et la programmation de la carte CJMCU à l’aide de l’IDE Arduino qui est très peu documentée.

Présentation de la carte CJMCU (LilyTiny)

La carte CJMCU est une carte miniature circulaire de 25mm de diamètre environ. Elle ne possède donc aucune broche de connexion, destinée aux application d’électronique vestimentaire, on viendra simplement relier les différents composants du projet (interrupteur, pile bouton, Led, accéléromètre, GPS…) à l’aide d’un fil conducteur cousu.

Par rapport à la carte LilyTiny de Sparkfun (page produit), la programmation est plus simple car on utilise un câble USB (lien vers le tuto Sparkfun) à la place d’un programmateur AVR.

Caractéristiques techniques de la carte CJMCU

  • Processeur : ATTiny85

  • 2 ko de mémoire disponible pour le programme Arduino
  • Dimensions : diamètre 25mm, épaisseur 4mm
  • GPIO : 5 (1 réservé pour le Reset nécessaire à la programmation)
  • Connecteur : micro USB
  • 1 Led rouge de mise sous tension
  • 1 Led rouge reliée au GPIO1
  • Bootloader : micronucleus (page github du projet)

LilyTiny vs LilyPad

Il peut y avoir confusion (entretenue par les sites marchants) entre le LilyTiny, le nom commercial de la carte Sparkfun basée sur le micro-contrôleur ATTiny et la carte LilyPad (lien vers le projet) qui est basée sur un ATmega328 ou l’Atmega32u4. La LilyPad a été initialement développée par Leah Buechley pour faciliter l’apprentissage du e-textile. La version commerciale a été lancée en collaboration avec SparkFun Electronics.

Voici un petit aperçu des 4 cartes que l’on rencontre très souvent

Comparaison entre l’ATTiny85 et l’ATmega328 d’un Arduino

L’ATTiny85 (et les autres membres de la famille) est un micro-contrôleur AVR tout comme l’ATmega328 qui équipe les cartes Arduino. Il est donc capable d’exécuter les programmes créés avec l’IDE Arduino moyennant quelques restrictions. Voici un tableau comparant les principales caractéristiques techniques des deux micro-contrôleurs

ATiny85 ATmega328
Nombre de broches 8 28
Taille Flash (ko) 8 32
Taille SRAM (octets) 512 2048
Taille EEPROM (octets) 512 1024
Canaux PWM 2 6
GPIO (en comptant les ADC et PWM) 6 (5 disponibles sans désactiver le fusible de reset*) 23 (dont 20 exposées sur Arduino Uno)
Connectivité I2C oui oui
Connectivité SPI oui oui
Connectivité UART non oui

*Désactiver le fusible de Reset permet d’utiliser la broche 1 comme canal analogique ou numérique, mais désactive par la même occasion la possibilité de programmer le micro-contrôleur. Voici un guide pour réactiver le fusible.

Comment programmer la carte CJMCU avec l’IDE Arduino

Il est tout a fait possible de programmer la carte CJMCU à l’aide de l’IDE Arduino (lien vers la page de téléchargement) comme n’importe quel Arduino.

Installer le driver Digistump sous Windows

La première étape consiste à récupérer et à installer le driver pour les cartes Digistump. Vous pouvez le télécharger sur github (lien direct vers DigistumpDrivers.zip). Après avoir décompressé le Zip, allez dans le répertoire et exécutez le programme DPinst.exe (ou DPinst64.exe si vous possédez Windows 64 bits).

Branchez maintenant votre carte. Allez dans le gestionnaire de périphérique. Si votre carte a correctement été installée, vous devez avoir un nouveau périphérique appelé libusb-win32 devices dans lequel se trouve le Digispark Bootloader.

0hspzsidev2srbualham-7549767

Sous macOS

Sur macOS X (je n’ai pas testé sous Linux), vous n’avez pas besoin d’installer de drivers.

Ajouter la librairie des cartes Digistump

Ouvrez ensuite votre IDE Arduino. La procédure fonctionne à partir de la version 1.6.4 et au delà. Pour cet article, j’ai utilisé la version 1.6.8

Ouvrez les préférences et ajouter le chemin vers la librairie Digistump

http://digistump.com/package_digistump_index.json

0hspzsidev2srbualham-7549767

Ensuite, aller dans le gestionnaire de carte et ajouter la librairie Digistump AVR Boards.
Sélectionnez maintenant la carte Digispark (Default 16Mhz).

azndm0rqpl3sqbqgayow-3346698

Téléverser le programme Blink sur la carte CJMCU

Tout est prêt, il ne nous reste plus qu’à téléverser notre premier programme. Nous allons simplement essayer le programme Blink Arduino en faisant clignoter une Led pour application e-textile sur la broche P3.

u1gtikoahwmw0r8ofr7p-9294061

Pour réaliser ce montage, vous aurez besoin du matériel suivant (liens commerciaux)

A chaque fois que vous voulez téléverser un programme sur une carte Digispark, vous devrez débrancher celle-ci de l’ordinateur. Ensuite appuyez sur Téléverser. Après compilation du programme, un message vous invite à brancher votre carte. Vous avez 60 secondes pour la brancher. Dès que la carte est détectée, le flashage du programme commence. Le programme démarre dès la fin de l’opération.

Cartes compatibles

Si le micro-contrôleur ATTiny vous tente maintenant et que vous avez des projets sympas d’électronique vestimentaire, sachez que vous pouvez trouver des cartes similaires chez les principaux fabricants. Chez Adafruit, c’est la carte Gemma qui dispose d’un port USB pour la programmation ainsi qu’un connecteur JST pour ajouter une batterie LiPo. Sparkfun commercialise quant à lui la LilyTiny, une carte très compacte (diamètre 20mm) mais plus compliquée et plus couteuse à programmer. Il faudra acheter un programmateur AVR, une pince IC Test Clip pour SOIC8 Pins ainsi que des câbles Dupont.

Sparkfun LilyTiny : programmation de l’ATtiny85 (source : Sparkfun)

Adafruit Gemma
Sparkfun LilyTiny

Problème rencontré sur macOS

Lors de mes essais sur macOS X, j’ai rencontré le message d’erreur suivant :

Board digispark-tiny (platform avr, package digistump) is unknown

J’ai commis l’erreur de penser qu’il manquait un drivers, mais grâce au commentaire de Julien (que je remercie par la même occasion), j’ai trouvé la solution sur ce forum. En fait, c’est juste un problème d’installation de la librairie des cartes Digistump. Voici comment procéder pour corriger le problème :

  1. Allez dans le gestionnaire de carte et désinstallez les cartes Digistump.
  2. Fermez l’IDE Arduino
  3. Ouvrez le Finder et aller dans le répertoire /Users/VOTRE_NOM/Library/Arduino15/packages
  4. Supprimez le répertoire digistump
  5. Relancez l’IDE Arduino
  6. Réinstallez les cartes Digistump

Et voilà, ça marche aussi sur macOS !

Avez-vous aimé cet article ?