Arduino, Gedit et Gnome-Builder

Arduino fournit une IDE nommé simplement « Arduino IDE », disponible dans les dépôts Debian :

apt install arduino

L’application permet de coder, compiler et téléverser le code sur les micro-contrôleurs facilement. Mais depuis un certain temps, Arduino IDE est délaissé au profit de Arduino Studio , son futur remplaçant qui n’est pas encore prêt.

En attendant, si l’on souhaite pallier les petits défauts d’Arduino IDE, il faut passer par un éditeur de texte extérieur. En effet, le logiciel ne propose pas de numérotation des lignes, alors que lorsqu’une erreur se glisse, le compilateur indique bien un numéro de ligne ( bug ). Le logiciel ne propose pas de mode nuit, pour limiter la fatigue des yeux. Et le fait devoir relancer l’application et donc l’éditeur à chaque branchement, débranchement de la carte est aussi un peu ennuyeux.

Gnome-Builder et Gedit comme éditeurs extérieurs :

Afin de laisser le choix, le logiciel Arduino permet de choisir un éditeur extérieur. Il faut pour cela aller dans Fichier > Préférences et cocher « Utiliser un éditeur externe ». Une fois cela fait la zone d’édition se grise, et l’application rechargera la dernière version du code, que vous aurez rédiger avec un autre éditeur, à chaque nouvelle compilation.

Arduino demande juste que le fichier .ino soit placé dans un dossier du même nom (~/projet01/projet01.ino).

Personnellement comme j’utilise Gnome, j’ai choisi Builder pour servir d’éditeur. Le logiciel est apparu avec Gnome 3.16, et j’utilise la 3.18. il est donc plutôt récent, mais il progresse rapidement. Il va au-delà des possibilités de Gedit, même si celui-ci peut très bien faire l’affaire.

Gnome-builder et Gedit versus .ino et .pde

Gnome-builder et Gedit reconnaissent les fichiers .ino et .pde comme du code C et applique la coloration syntaxique qui va avec. Mais le code Arduino, reprends aussi des éléments du langage C++ et ajoute des fonctions de base spécifique notamment pour la communication sur le port série (Serial.print).

Afin d’avoir quelque chose de plus parlant, j’ai créé un fichier .lang spécifique. Le fichier pointe sur le c.lang et cpp.lang et ajoute les mots clés issus du monde Arduino. Vous pouvez le trouver ici : /kaochen/GtkSourceView-Arduino

Les explications d’installation sont fournies dans le README.

Le fichier reprend les éléments de référence : /en/Reference/HomePage mais pas ceux des librairies externes. Je n’ai pas souhaité trop encombrer le fichier .lang. De plus ce fichier a une influence sur l’auto-complétion, je préfère voir à l’usage.

Conclusion :

J’ai placé le fichier sur Github afin de le partager un maximun, d’avoir des retours d’expérience et de le faire évoluer en conséquence, donc n’hésitez pas si vous avez des remarques. En espérant que cela puisse servir à quelqu’un d’autre.

Arduino : logiciel et contrôle de la carte :

Je me suis lancé à la découverte du monde Arduino. Afin de démarrer sur de bonne base, je me suis commandé un Arduino Starter Kit en Français. En plus de contenir, une carte Arduino Uno, un jeu de composant de base, il comprend aussi un bouquin d’exercice très bien écrit et très pédagogique. Cela permet de découvrir en douceur la fabrication d’un circuit et la programmation d’un micro-contrôleur.

Un paquet arduino existe dans Debian et il embarque tout le nécessaire pour programmer et contrôler les différentes cartes.

apt install arduino

CaptureArduino

La carte dispose d’un port USB pour pouvoir interagir avec le micro-contrôleur. Je n’ai pas réussi à faire fonctionner la carte sur un USB 3 mais en le branchant en USB 2, le noyau arrive à voir la carte :

dmesg | tail
[ 280.694367] usb 3-10: new full-speed USB device number 10 using xhci_hcd
[ 280.824363] usb 3-10: New USB device found, idVendor=2a03, idProduct=0043
[ 280.824366] usb 3-10: New USB device strings: Mfr=1, Product=2, SerialNumber=220
[ 280.824367] usb 3-10: Product: Arduino Uno
[ 280.824367] usb 3-10: Manufacturer: Arduino Srl
[ 280.824368] usb 3-10: SerialNumber: 85xx4383xxxxxxxxxx
[ 280.824544] usb 3-10: ep 0x82 - rounding interval to 1024 microframes, ep desc says 2040 microframes
[ 280.824926] cdc_acm 3-10:1.0: ttyACM0: USB ACM device

dmseg permet de voir la mémoire tampon des messages du noyau, tail n’affiche que la fin de la liste en supposant que la carte a été branché au dernier moment.

Ici la carte apparaîtra sous le nom ttyACM0 dans le dossier /dev et si j’en liste le contenu, je vois ma carte qui appartient au groupe dialout .

ls -l /dev/tty*
crw-rw---- 1 root       dialout 166,  0 nov.   6 17:38 /dev/ttyACM0

Je m’ajoute donc au groupe dialout afin de pouvoir utiliser la carte facilement depuis le logiciel arduino sans passer par root ou sudo.

usermod -a -G dialout Nom_Utilisateur

Certaine carte peuvent nécessiter plutôt l’ajout au groupe tty ou uucp .

Une fois l’ajout fait, je me reconnecte à ma session et cette fois-ci je vois bien ma carte depuis le logiciel Arduino directement: CarteSerie

Voilà, la communication peut se faire par port série, dans les deux sens, soit en télé-versant sur la carte le code compilé, soit en écoutant le port et en affichant le résultat :

Arduino Port Serie

Bref tout ça pour dire que ce n’est pas vraiment compliqué et que j’ai été agréablement surpris par la facilité pour construire et programmer son propre circuit.