IUT GEII Toulon
Philippe Arlotto

Accueil > Arduino > Arduino NetBeans

Arduino NetBeans

mardi 12 mai 2015, par philippe Arlotto

L’IDE standard d’arduino est très bien adapté pour les débutant notamment parce qu’il permet une gestion très facile des librairies (depuis la version 1.6.4) et parce que les exemples sont directement accessibles. Mais il se révèle rapidement limité lorsqu’on souhaite développer des projets un peu plus ambitieux.
Parmi les IDE professionnels configurables pour arduino on trouve Eclipse, QtCrerator et NetBeans. Chacun à ses forces et ses faiblesses, le choix est une question de préférence personnelle et d’habitude d’entreprise.
Personnellement, j’utilise NetBeans. Voici comment le configurer pour linux [1] et pour la version 1.6.4 d’arduino.
Il existe un pluging très bien fait pour NetBeans : Arduino Plugin for NetBeans
Malheureusement il est prévu pour arduino 1.0.5 et n’est apparemment plus maintenu.
En m’aidant de ce pluging, j’ai réécrit le makefile pour l’adapter à la version 1.6.4.

  1. Installer arduino 1.6.4 dans le répertoire par défaut qui est votre home directory (ici /home/philippe) et vérifier qu’il fonctionne correctement en compilant et chargeant un exemple.
  2. Installer NetBeans : https://netbeans.org/downloads/ Prendre le bundle C/C++
  3. Il faut enregistrer une nouvelle "tool chain" (chaîne d’outils : compliateur/linker/assembleur/...) dans NetBeans : Menu Tools->Option Onglet C/C++
    Créez une tool chain Arduino164 (de type GNU) et renseignez les chemins des différents outils.
    (Normalement la seule différence avec l’image ci-dessous devrait être le nom de votre home directory)

  4. Ensuite, et c’est le plus fastidieux, il faut renseigner les répertoires "code assistance" pour permettre la reconnaissance des includes et la complétion de code. Il faut le faire pour le compilateur c et pour compilateur c++.
    On peut à minima démarrer comme ci dessous et rajouter des répertoires au
    fur et à mesure des besoins.
  5. Ouvrir avec Netbeans le arduino_sample_project
  6. Copier ce projet afin d’en conserver une copie et de le renommer.
  7. Dans le makefile du project (Important Files/makefile) , changer le USER_HOME.
    Choisir le type de carte en commentant/décommentant (#) la section souhaitée [2] .
    Changer le nom du port si nécessaire (variable COM_PORT ).
MAKEFILE_VERSION = 1.1
ARDUINO_VERSION = 164
USER_HOME = /home/philippe
ARDUINO_BASE_DIR = ${USER_HOME}/arduino-1.6.4
ARDUINO_CORE_DIR = ${ARDUINO_BASE_DIR}/hardware/arduino/avr/cores/arduino
ARDUINO_LIB_DIR = ${ARDUINO_BASE_DIR}/libraries
ARDUINO_AVR_LIB_DIR = ${ARDUINO_BASE_DIR}/hardware/arduino/avr/libraries
ARDUINO_IDE_LIB_DIR = ${USER_HOME}/Arduino/libraries
LIB_CORE_DIR = lib/core
LIB_LIBS_DIR = lib/libs
ARDUINO_LIB_CORE = ${LIB_CORE_DIR}/arduinocore.a
ARDUINO_LIB_LIBS = ${LIB_LIBS_DIR}/arduinolibs.a


# Arduino Uno:
ARDUINO_MODEL = atmega328p
ARDUINO_PROGRAMMER  = arduino
COM_PORT = /dev/ttyACM0
BAUD_RATE = 115200
ARDUINO_PINS_DIR = ${ARDUINO_BASE_DIR}/hardware/arduino/avr/variants/standard
  • Générer le project : Run->Clean and build project.
    La première fois tous les fichiers (votre source et core librairie) sont compilés. Par la suite seulement les fichiers modifiés depuis la dernière génération seront compilés.
  • Charger le programme Run->Run Project

Pour avoir un console série vous pouvez installer le plugin nbplugin-avr (ou RS232-neatbeans ). (Déziper l’archive)

Il s’agit malheureusement d’un plugin prévu pour windows qui utilise normalement des ports de la forme ttyUSB et qui ne permet pas d’ouvrir les ports de nommés ttyACM qui sont normalement utilisés par l’arduino uno.
On peut très simplement contourner le problème en créant un lien vers un port ttyUSB inutilisé juste pour faire un essai. Par exemple :
$ sudo ln -s /dev/ttyACM0 /dev/ttyUSB10
Ensuite il vaut mieux créer une régle udev générale pour tous vos arduino. Voir l’article http://arlotto.univ-tln.fr/arduino/...
Gestion des librairies
Une des forces de l’écosystème arduino est de proposer de nombreuses librairies en opensource [3].
Depuis la version 1.6.4, un gestionnaire de librairie très pratique est proposé mais il ne permet pas d’installer toutes les librairies disponibles [4].
Un librairie arduino est un dossier comprenant les sources (c,cpp,asm) de la librairie et éventuellement un répertoire d’exemples.

On va donc devoir travailler avec quatre types de libraires :

  1. Les "core libraries" : Ce sont des librairies de bases directement reliées à un périphérique matériel de l’ATmega : Elles se trouvent dans le répertoire
    arduino-1.6.4/hardware/arduino/avr/libraries/
    Qui contient les librairies pré-installées : Wire, SPI, SoftwareSerial et EEPROM.
  2. Les librairies pré-installées par l’environnement arduino :
    Elles se trouve dans le répertoire : arduino-1.6.4/libraries/
  3. Les librairies installées automatiquement par le gestionnaire de librairies
    Elles sont téléchargées dans un sous dossier libraries de votre répertoires de sktech. C’est par défaut /home/$USER/Arduino/libraries
    On va trouver un sous-répertoire par librairie installée.
  4. Les librairies que vous téléchargez sur le net. Généralement c’est fichier zip qu’il faut décompresser et placer au choix dans arduino-1.6.4/libraries/ ou dans
    /home/$USER/Arduino/libraries. [5]

Pour utiliser une librairies avec le makefile netbeans il faut :

  • l’installer par une des deux méthodes possibles.
  • Vérifier qu’elle fonctionne en compilant un exemple de l’IDE arduino
  • Dans le makefile ajouter le nom [6] du dossier contenant la libraire à la liste des librairies utilisées (séparé par un ;)
    La liste à utiliser dépend du répertoire où se trouve la librairie :
    INCLUDE_AVR_LIBS  : pour les core libraries dans arduino-1.6.4/hardware/arduino/avr/libraries
    INCLUDE_LIBS : pour les librairies pré-installées ou celles que vous avez installé dans arduino-1.6.4/libraries
    INCLUDE_IDE_LIBS : pour les librairies installés par le libraries-manager ou celles que vous avez installé dans /home/$USER/Arduino/libraries

Attention une librairie au moins doit être sélectionnée même si vous n’en utilisez aucune. Ce n’est pas gênant car même si l’archive sera générée pour rien, le code ne sera pas lié à votre exécutable si vous n’appelez pas de fonction de cette librairie.

Ensuite dans votre code il faut inclure le fichier en tête de la librairie par une directive du type #include <NomdeLaLibrairie.h> [7].
Pour disposer de la complétion de code et permettre à Netbeans de retrouver le .h il faut aussi rajouter le répertoire de la librairie dans l’onglet "code assistance" du compilateur c++.

Notes

[1ne me demandez pas comment faire pour d’autres OS

[2si vous changez de type de carte en cours de projet, il régénérer tous les objets : supprimez les répertoires lib/core et lib/cores ou utilisez la cible mister-proper

[3certains codes sont excellents, d’autres moins. Il faut savoir trier

[4et qu’il faut configurer pour le proxy de notre fac.....

[5Dans ce cas il faut relancer l’IDE arduino pour qu’elle soit prises en compte

[6le nom exact en tenant compte de la casse

[7c’est la procédure normale mais ce n’est pas nécessaire avec l’IDE arduino

SPIP | Se connecter | Plan du site | Suivre la vie du site RSS 2.0
Habillage visuel © Andreas Viklund sous Licence free for any purpose