Looking for Computer Science  & Information Technology online courses ?
Check my new web site: https://www.yesik.it !

Cette année, j'ai donné des cours d'initiation à l'électronique et l'informatique embarqué à des adolescents. Dans le cadre de leur formation, je m'étais dit que ce serait bien que chacun possède sa propre petite carte de développement. Cela me semblait une bonne idée pour les responsabiliser vis à vis du matériel. En plus, cela ouvrait la possibilité pour les plus motivés de travailler à la maison.

Mon choix s'était porté sur l'USnooBie qui combine les avantages d'être bon marché (16$), facile à programmer puisque compatible Arduino – et en plus livré en kit, ce qui donnait l'occasion d'une activité d'assemblage/soudure sympa.

Le résultat fût assez décevant. <grognon>Dès l'activité proposée, j'ai eu le droit à un cortège de plaintes et de récriminations: effectivement, dépenser une vingtaine d'euros (port compris) pour sa formation, c'est du gaspillage quand dans le même temps on se paye un portable quad-core/8GO de RAM pour jouer…</grognon>

En tout et pour tout, 2 élèves sur 24 ont accepté de me suivre sur ce projet. Cet article est pour eux, et pour tous ceux qui se sont laissés tenter par un USnooBie mais qui ne savent pas trop comment passer à l'étape suivante une fois la carte assemblée. Pour des raisons (malheureusement) évidentes, et contrairement à mon habitude, les explications données ici seront pour la plate-forme Windows.

L'USnooBie en deux mots

L'USnooBie est une carte à micro-contrôleur AVR ATmega328P. L'originalité du produit tient en la présence d'un port USB-A mâle sur la carte qui permet de s'en servir comme (une grosse) clé USB. La communication USB est gérée en logiciel par un bootloader spécifique à l'USnooBie. Des broches en périphérie de la carte permettent aussi d'accéder aux ports d'entrée-sortie de l'AVR.

Plate-forme de développement

Une fois l'USnooBie assemblée conformément aux instructions de son concepteur Frank Zhao – et convenablement testée d'un point de vue électrique – vous aurez besoin d'outil de développement pour commencer à programmer pour votre carte. La grande bonne nouvelle, c'est que ces logiciels sont disponibles gratuitement sur internet et sont d'un emploi facile puisqu'il s'agit de l'environnement de développement Arduino (IDE Arduino).

En plus de cela, pour faire vos premiers pas avec l'USnooBie, une petite poignée de composants classiques seront aussi nécessaires (fils électrique, LEDs, résistances de quelques centaines d'ohms). Je vous conseille aussi une platine Labdec (breadboard en anglais). Celle-ci grèvera votre budget de quelques euros mais sera très pratique pour réaliser rapidement de petits montages. Ceci dit, elle n'est pas indispensable! Selon vos moyens ou votre débrouillardise, d'autres options sont possibles: souder les composants entre eux, utiliser une planche et des clous/punaises comme support, se servir de dominos d'électricien pour faire les montages, etc.

Installer l'IDE Arduino

Pour commencer, nous allons installer les outils de développement. Téléchargez donc l'IDE pour votre plate-forme à partir de la page de téléchargement d'arduino.cc. Lors de l'écriture de cet article, j'ai téléchargé l'archive arduino-1.0-windows.zip.

J'ai déjà décrit ailleurs comment installer Arduino sous Windows Vista ou sous Windows XP. Je vous renvoie sur ces articles pour la démarche d'installation pas à pas. La seule différence est que vous aurez besoin des drivers pour l'USBasp. Lorsque j'ai testé, j'ai téléchargé le driver usbasp-windriver.2011-05-28.zip. Comme celui-ci nous servira dans un instant, vous pouvez d'ores et déjà télécharger et extraire cette archive (dans mon cas, j'ai copié son contenu sur le bureau).

Sous Seven le processus devrait être sensiblement identique, mais je n'ai pas testé personnellement.

Installer le driver USBasp

Jusqu'à présent, nous avons fait une installation d'Arduino classique. Maintenant, la partie spécifique pour l'USnooBie. Tout d'abord, branchez votre USnooBie dans un port USB libre de votre machine. Ensuite, vous allez faire une manipulation avec les boutons. Habituez-vous à cette manip' car il faudra la réitérer à chaque fois que vous voudrez télécharger un nouveau firmware sur la carte:

  1. appuyez sur le bouton reset,
  2. appuyez sur le bouton bootloader (l'autre bouton)
  3. relâchez le bouton reset,
  4. relâchez le bouton bootloader.
USnooBie-reset.png

Activer le bootloader de l'USnooBie — Le bootloader de l'USnooBie permet de télécharger un nouveau firmware sur le micro-contrôleur embarqué. Pour l'activer, il faut réinitialiser l'USnooBie en pressant le bouton bootloader lorsque l'on relache le bouton reset.


À cet instant, Windows détecte un nouveau matériel appelé USBasp. Comme c'est sans doute la première fois que vous connectez ce genre de périphérique à votre ordinateur, Windows va vous demander le pilote correspondant. Indiquez lui que vous voulez le recherchez vous-même et désignez, lorsque Windows vous le demande, le dossier contenant le driver USBasp que vous avez téléchargé et décompressé à l'étape précédente.

Modifier le fichier board.txt

Dernière manipulation pour adapter l'IDE Arduino à l'USnooBie, recherchez le fichier hardware\arduino\board.txt qui se trouve dans le dossier Arduino-XX que vous avez extrait tout à l'heure.

Arduino-board.txt.png

board.txt — Le fichier board.txt contient les définitions des cartes auxquelles peut se connecter l'IDE Arduino.

Le fichier se trouve dans arduino-XX > hardware > arduino.


Une fois le fichier trouvé, ouvrez-le avec le bloc-note et ajoutez les lignes suivantes à la fin du fichier:

#
# Support de l'USnooBie de Frank Zhao
#
usnoobie.name=USnooBie (USBaspLoader ATmega328P at 12MHz)
usnoobie.upload.protocol=usbasp
usnoobie.upload.maximum_size=28672
usnoobie.upload.speed=115200
usnoobie.upload.disable_flushing=true
usnoobie.bootloader.low_fuses=0xFF
usnoobie.bootloader.high_fuses=0xD8
usnoobie.bootloader.extended_fuses=0xFF
usnoobie.bootloader.path=usnoobie
usnoobie.bootloader.file=usnoobie_atmega328p_12mhz.hex
usnoobie.bootloader.unlock_bits=0x3F
usnoobie.bootloader.lock_bits=0x0F
usnoobie.build.mcu=atmega328p
usnoobie.build.f_cpu=12000000L
usnoobie.build.core=arduino
usnoobie.build.variant=standard

Remarque:

Le contenu original du fichier board.txt peut apparaitre comme tassé sur une ligne. Ne vous en préoccupez pas, et collez simplement les lignes précédentes à la fin du fichier.

Et maintenant?

Voilà: l'environnement de développement pour l'USnooBie est installé sur votre machine. Vous pouvez lancer l'IDE en double-cliquant sur arduino.exe dans le dossier de votre installation d'Arduino.

N'oubliez pas de sélectionner USnooBie dans le menu Tools > Board de l'IDE! Une fois cela fait, nous allons réaliser notre premier montage et télécharger le code correspondant sur la cible.

Un chenillard

Le montage

Bon, j'en ai un peu marre, mais les élèves aiment bien les trucs qui clignotent – bref le montage de démonstration sera un chenillard. Selon le nombre de LED et de résistances à votre dispositions, réalisez tout ou partie du montage de démonstration ci-dessous.

En plus du montage illustré, vous devrez connecter les points marqués GND (la masse), D3, D4, D5 et D6 respectivement aux broches correspondantes de l'USnooBie.

4-leds.png

Montage 4 LEDs en parallèle — Ce montage est un montage de démonstration typique où chaque LED peut-être contrôlée individuellement par une broche de sortie d'un micro-contrôleur. En supposant VOH=5V, et avec les résistances proposées et des LEDs standard, le courant consommé par chaque broche est d'environ 15mA. Soit un total de 60mA si toutes les LEDs sont allumée. C'est acceptable pour un AVR ATmega comme celui qui équipe l'USnooBie ou les cartes Arduino et leurs clones.

Je ne sais pas si ça aide, mais sur l'image ci-dessous j'ai figuré sur la platine Labdec en couleurs pastel les points où l'on trouvera 5V (rouge), 0V (la masse – bleu) ou entre les deux.



Remarque:

Si vous n'avez pas de platine Labdec, vous pouvez toujours faire le montage en l'air – ou sur un support isolant quelconque (carton, bois, etc.). Vous devrez simplement ajouter vous-même les connexions implicites effectuées par la platine. Notamment ici, relier une patte de la LED à la résistance et l'autre patte de celle-ci au point de masse.

Le Logiciel

Une LED

Une fois le montage connecté à l'USnooBie et l'UBnooBie reliée au PC, vous pouvez lancer l'IDE Arduino. Dans celui-ci tapez le code suivant:

void setup() {
  pinMode(3, OUTPUT); // LED 1 sur D3
}
 
void loop() {
  digitalWrite(3, HIGH); // LED 1 "ON"
 
  delay(1000);
 
  digitalWrite(3, LOW); // LED 1 "OFF"
 
  delay(1000);
}

Il y a de nombreux tutoriels sur Arduino sur Internet. Je ne vais donc pas entièrement détailler le code. Sachez simplement que la fonction setup initialise la carte, et la fonction loop est effectuée sans arrêt tant que la carte est alimentée:

Une fois le programme saisi, cliquez sur le bouton download de l'IDE pour télécharger le programme sur la carte. Ici, il faut être particulièrement attentif:

La LED est un composant polarisé

Si votre LED ne clignote pas, vérifiez que vous l'avez branchée dans le bon sens.

Deux LEDs

Quand vous aurez réussi à faire clignoter la première LED, modifiez le code source comme indiqué ci-dessous pour faire clignoter maintenant 2 LEDs alternativement. Bien entendu, après avoir modifié le programme, vous devrez cliquer sur télécharger dans l'IDE pour transférer le code sur l'USnooBie (sans oublier de faire préalablement la manip' avec les boutons reset/bootloader!).

void setup() {
  pinMode(3, OUTPUT); // LED 1 sur D3
  pinMode(4, OUTPUT); // LED 2 sur D4
}
 
void loop() {
  digitalWrite(3, HIGH); // LED 1 "ON"
  digitalWrite(4, LOW);  // LED 2 "OFF"
 
  delay(1000);
 
  digitalWrite(3, LOW);  // LED 1 "OFF"
  digitalWrite(4, HIGH); // LED 2 "ON"
 
  delay(1000);
}

Trois LEDs

Vous avez compris le principe; pour 3 LEDs qui s'allument les unes après les autres:

void setup() {
  pinMode(3, OUTPUT); // LED 1 sur D3
  pinMode(4, OUTPUT); // LED 2 sur D4
  pinMode(5, OUTPUT); // LED 3 sur D5
}
 
void loop() {
  digitalWrite(3, HIGH); // LED 1 "ON"
  digitalWrite(4, LOW);  // LED 2 "OFF"
  digitalWrite(5, LOW);  // LED 3 "OFF"
 
  delay(1000);
 
  digitalWrite(3, LOW);  // LED 1 "OFF"
  digitalWrite(4, HIGH); // LED 2 "ON"
  digitalWrite(5, LOW);  // LED 3 "OFF"
 
  delay(1000);
 
  digitalWrite(3, LOW);  // LED 1 "OFF"
  digitalWrite(4, LOW);  // LED 2 "OFF"
  digitalWrite(5, HIGH); // LED 3 "ON"
 
  delay(1000);
}

Quatre LEDs

Pas la peine d'insister: ça devrai être clair. À titre d'exercice à vous de modifier le code pour faire un chenillard sur 4 LEDs. En comparant les exemples précédents, vous devriez pouvoir déterminer le code nécessaire…

Plus?

Vous pouvez multiplier les LEDs reliées à l'USnooBie en retenant tout de même ces deux contraintes:

Ressources