{{tag>Xenial matériel_libre robotique}}
{{ https://raw.githubusercontent.com/arduino/arduino-ide/refs/heads/main/electron-app/resources/icons/512x512.png?90|Icône d'Arduino}}
====== Arduino ======
**[[wpfr>Arduino]]** est une plateforme de prototypage à bas coût sous licence [[wpfr>Creative Commons]], rachetée en octobre 2025 par [[wpfr>Qualcomm]].\\
Basée sur un [[wpfr>microcontrôleur]] [[wpfr>Atmel]], elle permet de réaliser rapidement des projets électroniques sur les plateformes Linux, macOS et Windows.
{{:arduino_uno_test.jpg}}
**Arduino** fournit un utilitaire graphique : un [[:IDE]] aussi appelé **[[pu>Arduino]]**, //fork// de [[wpfr>Wiring]], ainsi que des bibliothèques, permettant de programmer le microcontrôleur dans un langage proche du [[:Java]] (inspiré de [[:Processing]]).
===== Installation =====
Il existe plusieurs méthodes //au choix// pour installer l'[[:IDE]] **Arduino** :
* Il est disponible dans les [[#dépôts officiels APT]] d'Ubuntu.
* Il est distribué par son éditeur en [[#Flatpak]].
* Il existe un paquet [[#snap]] non-officiel.
* **Arduino** est aussi disponible en [[#AppImage]] sur son [[https://www.arduino.cc/en/software/|site officiel]].
* Le site fournit aussi une archive [[:zip]] pour une installation manuelle.
Vous trouverez aussi des informations en anglais concernant le téléchargement et l'installation d'**Arduino** sur son [[https://docs.arduino.cc/software/ide-v2/tutorials/getting-started/ide-v2-downloading-and-installing/|site officiel]].
==== Dépôts officiels APT ====
La version présente dans le dépôt n'est pas toujours la plus récente, il est probablement plus intéressant d'installer la dernière version en [[#Flatpak]].
Pour avoir accès à [[pu>arduino|ce paquet]], il faut que le [[:depots#sections_universe_et_multiverse_maintenues_par_les_motu|dépôt Universe]] soit activé dans les [[:tutoriel:comment_modifier_sources_maj|sources de logiciels]].
Pour installer cette application depuis les [[:depots#dépôts officiels]], il suffit d'[[:deb#installer_un_paquet_deb|installer le paquet]] ''[[apt>arduino]]''.
Une autre utilitaire permet de programmer Arduino en ligne de commande. Pour en profiter, [[:deb#installer_un_paquet_deb|installer le paquet]] ''[[apt>arduino-mk]]''.
==== Flatpak ====
**Arduino** est aussi distribué par son éditeur en [[:Flatpak]] sur le dépôt [[https://flathub.org/fr/apps/cc.arduino.IDE2|Flathub]].
On peut donc l'obtenir en [[:flatpak#installation|installant Flatpak]] avec le [[:flatpak#ajout_du_depot_flathub|dépôt Flathub]] si ce n'est pas déjà fait, puis en installant ''Arduino IDE v2'' depuis [[:gnome-software|GNOME Logiciels]], ou en [[:gerer_flatpak#installation_d_applications|installant le paquet]] ''[[https://flathub.org/fr/apps/cc.arduino.IDE2|cc.arduino.IDE2]]'' en ligne de commande :
flatpak install cc.arduino.IDE2
==== Snap ====
**Arduino** est aussi disponible en [[:snap]] depuis [[https://snapcraft.io/arduino|Snapcraft]].
Cette version n'est cependant pas officielle, et il s'agit encore seulement de la version 1.
Cette méthode est donc déconseillée.
On peut simplement installer l'application ''arduino'' depuis le [[:snap store|centre d'applications (Snap Store)]], ou installer le paquet ''[[https://snapcraft.io/arduino|arduino]]'' en ligne de commande :
snap install arduino
==== AppImage ====
Cette méthode ne permet pas de mise à jour automatique.
L'intégration au système (dont la création d'un [[:raccourci-lanceur|lanceur]]) doit aussi être faite manuellement.
Pour installer une **[[:AppImage]]** référez-vous avant tout au [[:appimage#installer_un_appimage|chapitre dédié]] au sujet.
En résumé choisissez la version //Linux AppImage (64-bit X86-64)// sur [[https://www.arduino.cc/en/software/|le site officiel]], qui télécharge le fichier ''arduino-ide_2.//X//.//X//_Linux_64bit.AppImage'' ou téléchargez-le directement depuis [[https://github.com/arduino/arduino-ide/releases/latest|GitHub]], puis [[:permissions#modifier_les_permissions|rendez-le exécutable]] (clic droit sur le fichier -> //Propriétés// -> //Permissions// -> //Autoriser l'exécution//). Finalement lancez-le en double-cliquant dessus.
Vous pouvez utiliser un service tel que **[[:appimage#go_appimageappimaged|appimaged]]** pour créer automatiquement un [[:raccourci-lanceur|lanceur]].
==== Installation manuelle ====
* Télécharger la version //Linux ZIP file (64-bit X86-64)// sur le [[https://www.arduino.cc/en/software/|site officiel]].
* [[:archivage|Extraire l'archive]].
* À cause d'un bug, ouvrir un terminal à l'endroit où vous avez décompressé l'application (clic droit -> //Ouvrir dans un terminal//) et passer les commandes suivantes :sudo chown root: arduino-ide_*bit/chrome-sandboxsudo chmod 4755 arduino-ide_*bit/chrome-sandbox
* Le [[:raccourci-lanceur|lanceur]] doit être [[:raccourci-lanceur#creation_d_un_lanceur|créé]]. Vous aurez besoin de connaître le [[:chemins|chemin d'accès absolu]] de l'exécutable que vous venez de télécharger (actuellement, c'est la version ''2.3.8'').\\ Pour faire cela manuellement, [[:tutoriel:comment_modifier_un_fichier|créez un fichier]] ''~/.local/share/applications/Arduino.desktop'' contenant :
[Desktop Entry]
Type=Application
Name=Arduino IDE
GenericName=Arduino IDE
Comment=Open-source electronics prototyping platform
Exec="$CHEMIN/arduino-ide"
Icon=arduino-arduinoide
Terminal=false
Categories=Development;IDE;Electronics;
MimeType=text/x-arduino;
Keywords=embedded electronics;electronics;avr;microcontroller;
StartupWMClass=processing-app-Base
en remplaçant ''$CHEMIN'' par le [[:chemins|chemin absolu]] du répertoire contenant les fichiers extraits.
===== Utilisation =====
==== Ports série ====
Les nouvelles versions de l'application vous demanderont lors de la première exécution de vous authentifier pour vous donner l'autorisation d'accéder aux ports série en vous ajoutant aux [[:utilisateurs_et_groupes|groupes]] ''tty'' et ''dialout'', soit en ligne de commande :
sudo usermod -a -G tty $USER
sudo usermod -a -G dialout $USER
Vous devez vous déconnecter et vous reconnecter pour que les changements soient effectifs.
Modifier les [[:permissions]] de ''/dev/ttyUSB0'' avec la commande (la carte doit être connectée !) :
sudo chmod a+rw /dev/ttyUSB0
Si le paquet a été installé en [[#snap]], il faut en plus autoriser l'accès aux fichiers personnels et aux périphériques USB à partir du bouton //Autorisations// pour obtenir les droits sur les ports séries.
==== Compilation et programmation sous console ====
Cette méthode ne permet peut-être pas d'utiliser les librairies fournies par Arduino.
Il s'agit dans cette partie de montrer comment compiler avec ''avr-gcc'' et comment charger votre programme dans votre carte Arduino.
=== Installation ===
[[apt>avr-gcc avr-libc avrdude binutils-avr]]
=== Compilation ===
''avr-gcc'' s'utilise presque comme [[:gcc]], en spécifiant le microcontrôleur de la carte.
Par exemple pour une carte Arduino UNO, avec un //avr atmega328p//, on a :
avr-gcc -mmcu=atmega328p -o main.elf main.c
La liste des microcontrôleurs supportés est spécifiée dans le [[:man|manuel]] d'avr-gcc :
man avr-gcc
Puis on extrait les données utilisables par le microcontrôleur :
objcopy -O ihex -R .eeprom main.elf main.hex
=== Programmeur ===
La programmation de la carte se fait avec ''avrdude''. Il faut lui spécifier le programmeur, le microcontrôleur et le port sur lequel la carte est branchée.
Dans notre exemple le programmeur est un //stk500v2//, mais un type de programmeur plus spécifique a été créé : //arduino//.\\
Le microcontrôleur sera cette fois-ci : //m328p//.
Là encore, la liste des microcontrôleurs et programmeur supportés se trouve dans le manuel: man avrdude
Vous aurez par exemple :
sudo avrdude -c arduino -p m328p -P /dev/cuaU0 -U flash:w:main.hex
Le port peut varier. On peut le retrouver en comparant les fichiers dans /dev/ avant et après le branchement de la carte. Le fichier qui apparaîtra sera sûrement le port à choisir
===== Problèmes connus =====
==== Pas de port série ====
Si le port de sortie //ttyUSBx// ou //ttyACMx// n'apparaît pas dans la liste des ports série de l'[[:IDE]] Arduino, une autre page à consulter - en anglais - pour installer le module ''cdc_acm'' et lier le matériel au module (fonctionne avec Arduino UNO R3 firmware Rev.001 et Ubuntu studio 14.04 64 bits)[[http://playground.arduino.cc/Linux/All|Installation of arduino on all Linux version]]). En simplifiant :
* Récupérer les identifiants du vendeur et du produit en saisissant dans un [[:terminal]]: lsusb -v qui répondra par exemple Bus 003 Device 002: ID XXXX:YYYY
* Créer le lien avec le port : avec [[:sudo|les droits superutilisateur]], on [[:tutoriel:comment_modifier_un_fichier|crée]] le fichier ''/etc/udev/rules.d/99-arduino.rules''
* On y place : SUBSYSTEMS=="usb", ATTRS{idProduct}=="YYYY", ATTRS{idVendor}=="XXXX", SYMLINK+="ttyACM%n" en remplaçant XXXX ET YYYY par vos valeurs précédemment récupérées
* On fait charger le module ''cdc_acm'' au démarrage. Avec les [[:sudo|droits du superutilisateur]] , [[:tutoriel:comment_modifier_un_fichier|modifier le fichier]] **/etc/modules** pour ajouter la ligne cdc_acm
* On rend le port accessible à l'utilisateur : ce port est dans le groupe dialout.
* On rattache l'utilisateur au groupe dialout : tableau de bord/Système/Utilisateurs et groupes - Gérer les groupes - sélectionner dialout et cliquer sur Propriétés - cocher l'utilisateur
* On reboot, on branche l'Arduino et on vérifie avec ''dmesg'' dans une console que l'on a quelque chose comme : cdc_acm 3-1:1.0: ttyACM0: USB ACM device
* On lance l'application **Arduino** et dans le menu //Outils / Ports série//, on sélectionne ///dev/ttyACM0//.
Pour les cartes Arduino autres que UNO, on a /dev/ttyUSBX au lieu de /dev/ttyACM0 et le groupe est uucp au lieu de dialout (renseignements dars la page citée plus haut).
===== Voir aussi =====
* [[https://www.arduino.cc/|Site officiel]]
* [[https://github.com/arduino|GitHub]]
* [[https://zestedesavoir.com/tutoriels/686/arduino-premiers-pas-en-informatique-embarquee/|Arduino : premiers pas en informatique embarquée]]
* Il existe une application pour dessiner les plans des cartes électroniques (entre autre pour l'Arduino) : [[:Fritzing]].
* Il est possible de contrôler l'Arduino par le biais de [[:scratch#etendre_les_capacites_du_logiciel|Scratch]].
----
//[[:Contributeurs]] : [[:utilisateurs:mimilus]], [[:utilisateurs:sivolc73]], gduteil, pygmee, samcelia, [[:utilisateurs:krodelabestiole]].//