Développement d'applications arduino avec QtCreator


Quel environnement de développement choisir pour développer sous arduino ?

La première solution consiste à utiliser l'IDE fourni avec la chaîne de développement standard. Ceci est bien adapté pour commencer ou pour écrire des applications peu complexes. Dés que la complexité augmente, l'absence d'une complétion de code efficace et la difficulté à gérer des projets multi-fichiers rendent la tache très difficile.

La solution basée sur Eclipse, et le plugin AVR est une alternative intéressante, si vous êtes habitués à cet environnement. La complétion de code est assez bonne, en revanche, les temps de réaction de l'environnement sont assez lents (certainement dû à la JVM) et surtout, la constitution de projets multi-fichiers basés sur un système de liens rend l'importation et l'exportation souvent difficiles.

NetBeans peut être une solution également, mais la création de nouveaux projets demande parfois de modifier les makefile, ce qui n'est pas toujours aisé. Voir le site de Philippe ARLOTTO.

Il est bien entendu, que votre choix sera fortement orienté par le fait que vous connaissez bien l'un ou l'autre de ces environnements, et que vous vous sentez à l'aise avec.

Pour ma part, je pratique QtCreator depuis des années pour le développement d'applications en C++, avec ou sans Qt, sur des plate-formes diverses et variées allant du Raspberry PI à Android. Il est bien évident que pour moi, pouvoir développer de l'Arduino dans le même environnement, représenterait la solution idéale.

Si vous partagez cet avis, ou que vous n'avez pas encore trouvé l'environnement qui vous convient, je vous propose de vous guider pour l'installation de la plate-forme de développement Arduino sous Qt.

Configuration utilisée

Pour réaliser ce tutoriel, j'ai utilisé :

J'ai fait le choix d'installer Qt et et la chaîne de développement Arduino directement dans mon home directory, à savoir /home/grimaldi :

/home/grimaldi

Pour la suite, je me suis inspiré du site de Philippe LUCIDARME que j'ai adapté à ma configuration.

Marche à suivre

1 – télécharger l'archive contenant les templates Qtcreator puis la décompresser dans le répertoire d'installation de Qt (chez moi : /home/grimaldi/Qt5.4.1).

2 - télécharger l'archive contenant les makefile arduino puis la décompresser dans le répertoire d'installation Arduino (chez moi : /home/grimaldi/arduino-1.6.7). Seuls les fichiers avec l'extension .mk sont nécessaires.

3 - Lancer QtCreator puis créez un nouveau projet Arduino Project

nouveau projet

  • donnez lui un nom et un chemin, (un nouveau dossier contenant la totalité du projet sera créé) puis suivant

  • choisissez les paramètres du projet (carte Arduino, processeur, .etc.) puis suivant

Paramètres

Si vous voulez modifier le chemin par défaut (/home/grimaldi) ou le répertoire Arduino (Arduino 1.6.13) vous pouvez éditer, avec l'éditeur de votre choix, le fichier de template :

gedit ~/Qt5.4.1/Tools/QtCreator/share/qtcreator/templates/wizards/arduino/wizard.xml
  • finaliser la création du projet: suivant puis Terminer

4 – il y a maintenant quelques modifications mineures à faire:

dans les paramètres du projet, icône sur la gauche, modifier les paramètres de compilation comme suit en rajoutant /src au répertoire de compilation, en décochant les options all et clean et en rajoutant l'argument upload.

Options Projet

sur la même fenêtre, modifier les paramètres d’exécution comme suit en rajoutant l'argument monitor :

Options Projet

Si vous le désirez, vous pouvez personnaliser le makefile, pour changer le processeur, le type de carte, le port série, les vitesses de chargement ou de communication, .etc.

Par exemple, pour un arduino nano, j'ai dû modifier le processeur (MCU) car il en existe de deux types, et la vitesse de téléchargement (AVRDUDE_ARD_BAUDRATE):

# Parameters for compiling

ARDUINO_DIR     = $(HOME)/arduino-1.6.13
USER_LIB_PATH   =  $(HOME)/arduino-1.6.13/libraries
ARDUINO_LIB_PATH    = $(HOME)/arduino-1.6.13/hardware/arduino/avr/libraries/
TARGET          = output
ARDUINO_LIBS    = SPI SD

# Avrdude code for programming

BOARD_TAG               = nano
MCU                     = atmega328p
ARDUINO_PORT            = /dev/ttyUSB0
AVRDUDE_ARD_PROGRAMMER  = arduino
AVRDUDE_ARD_BAUDRATE    = 57600
MONITOR_CMD             = gtkterm
MONITOR_BAUDRATE        = 115200

# Arduino makefile

include $(ARDUINO_DIR)/Arduino.mk

Voilà, si tout s'est bien passé, vous pouvez maintenant compiler votre projet, puis l'exécuter. Un terminal s'ouvre et les affichages apparaîssent.

Remarque :

Pour ajouter des bibliothèques, vous pouvez soit les spécifier à la ligne ARDUINO_LIBS du makefile ci-dessus, séparées par des espaces (ex: ARDUINO_LIBS= SPI Wire EEPROM) ou, ce que je préfère personellement, copier les fichiers sources (.h et .cpp) dans le répertoire src et les rajouter au projet : click droit puis ajouter des fichiers existants. Cette manière de faire permet de figer le code et ainsi de s'assurer que le projet ne dépende pas des éventuelles mises à jour des bibliothèques.

J'attends vos remarques…