Premier montage

2014-09-27

Introduction

Cette section se veut une introduction à la programmation sur carte Arduino, des cartes électroniques faciles à programmer, utilisant des microcontrôleurs conçus par Atmel.

L'ATMega32U4, utilisé par l'Arduino Leonardo (source)
L'ATMega32U4, utilisé par l'Arduino Leonardo (source)

Je développe sur une Arduino Leonardo sous GNU/Linux Debian. Des différences peuvent apparaître sur une autre carte ou un autre système d'exploitation. N'hésitez pas à me contacter le cas échéant.

Arduino Leonardo (source)
Arduino Leonardo (source)

J'ai commandé ma carte sur GoTronic, que j'ai choisi pour la variété des composants disponibles (seul bémol : pas de WiiChuck, mais ce n'est pas très compliqué à fabriquer). Je n'ai pas eu à m'en plaindre.

Préparer la carte

Brancher la carte

Votre carte devrait avoir été livrée avec un cordon USB adapté (dans mon cas TypeA - Micro-B). Lorsque vous voulez faire fonctionner la carte ou y transférer des données, reliez-la à votre ordinateur à l'aide de ce cordon. J'ai pris l'habitude de la débrancher lorsque je ne m'en sers pas et je pense que ce n'est pas une mauvaise habitude.

Droits d'accès (Linux)

Sous Linux, le fichier /dev/ttyACM0 (ou ACM1, …) devrait apparaître lorsque la carte est branchée (ou au moins durant la séquence d'initialisation). C'est ce fichier qui vous permet d'intéragit avec la carte. Seul un utilisateur privilégié peut y accéder en lecture ou écriture. Pour vous permettre d'y accéder avec votre utilisateur habituel deux approches sont possibles (chacune se fait avec le compte root) :

Changer les droits d'accès via udev

Exécutez la commande :

# echo 'ATTRS{product}=="Arduino Leonardo", MODE="0666"' >> /etc/udev/rules.d/50-embedded_devices.rules

Cela ajoute la ligne ATTRS{product}=="Arduino Leonardo", MODE="0666" au fichier /etc/udev/rules.d/50-embedded_devices.rules

Ensuite, redémarrez udev avec la commande service udev restart.

La prochaine fois que la carte est branchée, vous devriez pouvoir y accéder.

Note : si cela ne fonctionne pas, vous pouvez essayer de remplacer la ligne par ATTRS{idVendor}=="2341", MODE="0666" ou bien Arduino Leonardo par l'identifiant qu'il faut (la commande dmesg | grep "Product:" devrait l'afficher).

Ajouter votre utilisateur au groupe adéquat

D'abord vérifiez le groupe qui a le droit d'utiliser le fichier ls -l /dev/ttyACM* (lorsque le fichier existe, c'est-à-dire à l'initialisation de la carte). Le résultat devrait ressembler à :

crw-rw---T 1 root dialout 166, 0 jul.  14 12:12 /dev/ttyACM0

Cela signifie que le groupe dialout peut accéder à la carte. Si le groupe est root, basculez sur l'autre solution. Dans un autre cas, remplacez dialout par le nom adéquat dans la suite.

Il faut maintenant ajouter votre utilisateur au groupe dialout. Pour cela :

# addgroup user dialout

user doit être remplacé par votre nom d'utilisateur.

L'IDE

Afin de développer pour Arduino, vous pouvez utiliser l'IDE officiel, ou bien utiliser un Makefile adapté. Le plus simple étant probablement d'utiliser l'IDE officiel.

L'IDE officiel (source)
L'IDE officiel (source)

Installation

L'IDE officiel est disponible pour les plateformes GNU/Linux (32 ou 64 bits), Windows et Mac.

  • Debian / apt-get : installez le paquet arduino

  • Autre : télécharger l'archive adaptée à votre système sur le site d'Arduino

Utilisation

  • Ouvrir un exemple : cliquez sur « Fichiers » > « Exemples » > « 01.Basics » > « Blink »;

  • Compiler : cliquez sur « Croquis » > « Vérifier / Compiler » ou bien composez Ctrl+R;

  • Envoyer sur la carte : cliquez sur « Fichier » > « Téléverser » ou bien composez Ctrl+U.

Note : le transfert se fait normalement pendant la séquence d'initialisation de la carte, juste après un démarrage ; certaines cartes peuvent être redémarrées automatiquement par le logiciel mais vous pouvez aussi le faire à la main (rebrancher la carte ou appuyer sur le bouton).

Un premier essai

Montage

Schéma du circuit (source)
Schéma du circuit (source)

Pour vérifier que tout fonctionne bien, nous allons exécuter le programme le plus simple qui soit sur la carte : faire clignoter une DEL. Pour cela, chargez l'exemple 01.Basics/Blink, compilez-le et envoyez-le sur la carte. La plupart des cartes comportent une DEL incorporée reliée à la pin 13 de la carte et ce code devrait la faire clignoter lentement.

La DEL intégrée, marquée d'un « L » (source)
La DEL intégrée, marquée d'un « L » (source)

Si votre carte ne comporte pas de DEL intégrée, vous devrez brancher une DEL sur la carte : la cathode (patte courte) dans GND et l'anode (patte longue) dans la pin 13. Attention, connecter un DEL directement sans utiliser de résistance est généralement une mauvaise idée : dans ce cas de figure, la DEL n'est plus protégée est peut griller. Ce montage est néanmoins pratique pour faire un test rapide.

Programme

En réduisant le code au minimum, voici le contenu du programme :

void setup()
{
    pinMode(13, OUTPUT);     
}
void loop()
{
    digitalWrite(13, HIGH);
    delay(1000);
    digitalWrite(13, LOW);
    delay(1000);
}

Les deux fonctions setup() et loop() doivent impérativement être définies. La première est exécutée au démarrage de la carte ; dans ce cas, elle indique que la pin 13 sera utilisée comme sortie (en effet, on va envoyer de l'électricité à la DEL). La seconde est exécutée en boucle, tant que la carte est allumée ; ici, elle indique à la carte d'envoyer du courant sur la pin 13, attend une seconde, puis indique à la carte de ne plus y envoyer de courant et attend à nouveau une seconde. Ainsi, le programme fait alterner la DEL entre les états allumée et éteint à chaque seconde.

Conclusion

Si vous êtes parvenus à réaliser les étapes précédentes, vous êtes fin prêts à exploiter votre Arduino pour de vrais projet électroniques ! Pensez à vous munir de DEL, résistances, transistors et autres composants amusants pour la suite !