Comment utiliser Geany en remplacement de l'EDI Arduino

Sur le wiki officiel Arduino se trouve une liste d’outils alternatifs à l'IDE parmi lesquels figure Ino, un petit outil en ligne de commande. Son intégration dans Geany se fait très simplement. Voici la marche à suivre (pour Linux)

1 Installation de l'IDE

Nous n'allons pas utiliser l'interface IDE officielle mais il faut quand même l'installer, parce que Ino en a besoin pour ajouter une couche logicielle aux sources que nous écrirons.

Que rajoute-t-il exactement ? Pour le savoir il faut utiliser l'IDE officiel pour compiler un programme simple (un des exemples fournis ), en ayant pris le soin au préalable de le rendre "bavard". Pour cela il faut ajouter à la fin du fichier

.arduino/preferences.txt

les deux lignes suivantes :

build.verbose=true
upload.verbose=true


Relancer l'IDE et compiler un programme (un "sketch" comme ils disent...)
On voit alors que l'IDE utilise avr-gcc et ajoute une bonne dizaine de sources pour gérer les ressources des ATmega.

Pour plus de détails sur ce que je viens de dire je vous renvoie sur cette page :

2 Installer avrdude

Puisque avr-gcc sera indispensable, il faut installer (si ce n'est déjà fait sur votre système) avrdude :

sudo apt-get install avrdude

3 Installation de INO

Pour installer Ino vous pouvez utiliser une des méthodes proposées sur cette page : J'ai opté pour cette méthode :

sudo apt-get install python-setuptools picocom arduino
sudo easy_install ino


02 sept 2020 : Je suis récemment passé de Linux Mint19.3 à Linux Mint 20.0 et je viens de m'apercevoir que le paquet easy_install ne fait plus partie de python-setuptools. Et par conséquent je ne pouvais plus installer ino par la méthode "easy_installs". Et je n'ai plus trouvé le moyen d'installer easy_installs (à cause semble-t-il des version de python 2.7 -> 3.0).

Mais j'ai résolu le problème de la manière suivante :
J'ai créé un répertoire et cloné ino dedans depuis GitHub par la commande suivante, à exécuter dans un terminal ouvert DANS le répertoire que l'on vient de créer :

git clone git://github.com/amperka/ino.git

Il faut toutefois que la commande 'git' soit installée sur la machine. Si ce n'est pas le cas il suffit de l'installer par la commande suivante :

sudo apt-get install git-all

Après le clonage, on se trouve avec le contenu ci-contre (image à droite ->) dans le répertoire :

ino n'est pas pour autant installé. Pour le faire, il faut se placer dans ce répertoire et taper la commande suivante :

sudo make install

On peut maintenant vérifier la présence de ino sur la machine en tapant dans un terminal :

ino --help

On doit obtenir une jolie prose en anglais.

4 Configuration de Geany

Installez (si ce n'est pas déjà fait) Geany (il est disponible dans les dépôts sous Ubuntu ou Mint...)

Lancez Geany, OUVREZ UN PROJET et un fichier .ino, puis allez dans le menu "Construire/Définir les commandes de construction" Ajoutez une "commande" (sur le premier bouton 'Etiquette') et appelez-la "Compiler ARDUINO" (ou quelque chose comme ça...) et dans la colonne "Commande" tapez ceci:

ino clean && ino build -m mega2560

et dans le champ "Dossier de travail" tapez :

%d/..



On peut également Uploader le .hex obtenu depuis Geany. Il faut pour cela ajouter une seconde commande (sur le second bouton 'Etiquette') et la nommer "Upload ARDUINO" (par exemple).
Dans la colonne "Commande", pour une carte Arduino UNO tapez ceci :

ino upload -m uno -p /dev/ttyUSB0

et pour un Arduino Mega2560, tapez cela :

ino upload -m mega2560 -p /dev/ttyUSB0

Remarque1 : pour un clone SainSmart il faut remplacer ttyUSB0 par ttyACM0; Pour d'autre types de clones, à vous de voir...

Remarque2 : ttyUSB0 et ttyACM0 peuvent respectivement être ttyUSB1 et ttyACM1 (etc...) suivant le port USB actuellement utilisé (et la présence d'autres périfs USB...)

Et si l'on déconnecte et reconnecte la carte plusieurs fois de suite au cours de la même session, suivant votre configuration Linux, le numéro de port sera incrémenté à chaque fois ! Pour le remettre à zéro, le plus simple sera alors de redémarrer le PC !!

5 La commande 'ino serial'

Pour connaître le port actuellement utilisé, lorsque la carte Arduino est connectée au PC, on peut taper dans un terminal Linux :

ino serial

On peut aussi examiner le dossier système '/dev' pour y voir la liste des ports USB (entre autres...) utilisés.

6 copie d'écran :

7 Arborescence du projet

Voici la disposition correcte pour que la compilation se passe bien.
Le programme principal doit se trouver dans le répertoire scr mais le fichier de projet geany (le .geany) doit se trouver dans le répertoire principal (celui qui contient les répertoires lib et src).

Quant aux bibliothèques, il faut en fait les installer dans le système arduino, c'est à dire dans :

/usr/share/arduino/libraries

Remarque : Il faut aussi dans le cas de la bibliothèque UTFT la toiletter : il faut supprimer tous les fichiers qui ne concernent pas l'ATmega2560 (ils sont nombreux donnés en exemple) sinon le système Arduino ajoutera et compilera TOUTES les sources qu'il trouvera dans les sous-répertoires de /usr/share/arduino/libraries (merci arduino !!!), même et surtout celles qui ne sont pas invoquées par des #include , ce qui aboutira immanquablement à une palanquée d'erreurs de compilation ! Ce comportement aberrant est toutefois documenté dans la doc Arduino, donc on est au moins prévenu.

Il faut aussi bien renseigner le chemin du dossier du projet : Dans le menu Projet / Propriétés, onglet 'Projet' bien remplir la ligne 'Dossier de base'

Dans notre exemple, il s'agit du chemin du dossier 'Arduino', contenant le fichier de description du projet xxx.geany ainsi que les sous répertoires 'lib' et 'src'.

8 Tout s'est bien passé mais...

...la compilation et l'assemblage se sont bien déroulés, mais je ne vois pas le .hex produit sur le disque dur, même en cherchant bien dans tous les répertoires...

Normal il est caché !!! Il se trouve dans le répertoire caché .build créé automatiquement.

Pourquoi est il en mode caché (son nom commençant par un point) ? Mystère, j'ai juste perdu une demi-journée à le chercher. Ce sont sans doute des farceurs qui ont programmé ce truc là !

9 -

Liens...



19910