| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente |
| arduino [Le 01/06/2018, 21:11] – L'Africain | arduino [Le 20/03/2026, 14:56] (Version actuelle) – réécriture installation (+ flatpak) | réorganisation (!) | détails intro | +liens wpfr, site officiel, internes, etc. | suppr liens morts | mise en forme | orthographe | vocabulaire | suppr obsolète | etc. etc. etc. krodelabestiole |
|---|
| {{tag>Xenial matériel_libre robotique}} | {{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 ====== | ====== Arduino ====== |
| |
| Arduino est une plateforme de prototypage à bas coût sous licence Creative Commons. Basée sur les microcontrôleurs ATMEL, elle permet de réaliser rapidement des projets électroniques sur les trois plateformes Linux, Mac et Windows. | **[[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_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]]). |
| Arduino fournit un utilitaire graphique, ainsi qu'une bibliothèque de librairies permettant de programmer les cartes et des périphériques simples. | |
| |
| ===== Installation ===== | ===== Installation ===== |
| |
| ==== À partir des dépôts ==== | 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. |
| |
| Le paquet Arduino est présent dans les dépôts Universe d'Ubuntu.\\ | <note tip> |
| Pour l'installer, il suffit d'[[:tutoriel:comment_installer_un_paquet|installer le paquet]] **[[apt>arduino|arduino]]**.\\ | 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]]. |
| La version présente dans le dépôt n'est pas toujours la plus récente, il peut être intéressant d'installer la dernière version depuis l'archive du site officiel en suivant la méthode décrite ci-dessous. | </note> |
| |
| Un utilitaire est présent dans les dépôts. Il permet de programmer Arduino en ligne de commande, Pour l'installer, il suffit d'[[:tutoriel:comment_installer_un_paquet|installer le paquet]] **[[apt>arduino-mk|arduino-mk]]**. | ==== Dépôts officiels APT ==== |
| ==== Depuis l'archive du site officiel ==== | |
| |
| Pour installer Arduino à partir de l'archive officielle : | <note important> |
| | 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]]. |
| | </note> |
| |
| * télécharger l'archive .tgz (choisir "32 bit" ou "64 bits" selon votre [[architecture_materielle|architecture]]) sur [[https://www.arduino.cc/en/Main/Software|le site officiel]] | <note> |
| * [[archivage|extraire l'archive]] | 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]]. |
| * lancer le script "install.sh" de l'archive, vous n'avez qu'à glisser-déposer le fichier dans un terminal et appuyer sur "Entrée" (ctrl-alt-t pour ouvrir un terminal) | </note> |
| * Un raccourcis "Arduino IDE" sera créé sur votre bureau, vous devez le rendre exécutable en faisant clic droit → Propriété → Permission → cochez "autorisez l'exécution du fichier comme un programme" | |
| * lancez le logiciel du raccourcis | |
| |
| **(en)** [[https://www.arduino.cc/en/Guide/Linux|Installation d'Arduino IDE sous linux sur le site officiel]] | Pour installer cette application depuis les [[:depots#dépôts officiels]], il suffit d'[[:deb#installer_un_paquet_deb|installer le paquet]] ''[[apt>arduino]]''. |
| **(en)** [[http://www.arduino.cc/playground/Linux/Ubuntu|Pour les plus anciennes versions d'Ubuntu]]. | |
| |
| ==== Utilisation des ports série du menu==== | 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]]''. |
| Les nouvelles versions du logiciel vous demanderons 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 groupe "tty" et "dialout". Notez que vous devez vous déconnecter et vous reconnecter pour que les changements soient effectifs. | |
| |
| Si pour une raison ou pour une autre l'utilitaire échoue à l'ajout du groupe, vous pouvez le faire manuellement: | ==== Flatpak ==== |
| <code> sudo usermod -a -G tty Nom_Utilisateur </code> | |
| <code> sudo usermod -a -G dialout Nom_Utilisateur </code> | |
| | |
| modifier les droits de /ttyACM0 avec la commande (la carte doit être connectée!) : | |
| <code> sudo chmod a+rw /dev/ttyACM0</code> | |
| |
| il faut ensuite se déconnecter et se reconnecter pour que les modifications soient effectives. | **Arduino** est aussi distribué par son éditeur en [[:Flatpak]] sur le dépôt [[https://flathub.org/fr/apps/cc.arduino.IDE2|Flathub]]. |
| |
| ==== Problèmes connus ==== | 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 : |
| <note important>Il semble que ce problème soit résolu avec les nouvelles versions d'Arduino IDE (à confirmer) le problème n'a pas été rencontré avec une carte arduino (R3) sous Ubuntu 12.10 ni sous Ubuntu 14.04 ou sous 16.04</note> | <code>flatpak install cc.arduino.IDE2</code> |
| |
| Problème de micro-logiciel utilisé pour la communication par le port USB : Sur les Duemilanove, le CI utilisé pour la communication Série USB entre Arduino et le port USB était un CI FTDI qui fonctionne très bien.\\ Avec la version Arduino UNO, ce CI a été remplacé par un nouveau CI dédié utilisant un micro-logiciel dédié. Ce changement entraîne des problèmes de communication entre le PC et la carte Arduino Uno sous Ubuntu. Ceci est vrai pour les versions avant mai 2011 apparemment.\\ | ==== Snap ==== |
| Sur ces versions de carte Arduino UNO antérieures à mai 2011, il est nécessaire de mettre à jour le micrologiciel de communication USB de la carte UNO, ce qui se fait par le port USB. Voir [[http://arduino.cc/en/Hacking/DFUProgramming8U2|cette page du projet]] décrivant la manipulation ainsi que [[http://www.mon-club-elec.fr/pmwiki_reference_arduino/pmwiki.php?n=Main.MaterielUnoMAJFirmwareUSB|ce site en français]] qui explique très bien les opérations à faire. | |
| |
| Si le port de sortie //ttyUSBx// ou //ttyACMx// n'apparaît pas dans la liste des ports série du logiciel 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 : | **Arduino** est aussi disponible en [[:snap]] depuis [[https://snapcraft.io/arduino|Snapcraft]]. |
| * Récupérer les identifiants du vendeur et du produit en saisissant dans un [[:terminal]]: <code>lsusb -v</code> qui répondra par exemple <code>Bus 003 Device 002: ID XXXX:YYYY</code> | |
| * 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** | <note important> |
| * On y place : <file>SUBSYSTEMS=="usb", ATTRS{idProduct}=="YYYY", ATTRS{idVendor}=="XXXX", SYMLINK+="ttyACM%n" </file> en remplaçant XXXX ET YYYY par vos valeurs précédemment récupérées | Cette version n'est cependant pas officielle, et il s'agit encore seulement de la version 1. |
| * 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 <file>cdc_acm</file> | |
| * On rend le port accessible à l'utilisateur : ce port est dans le groupe dialout. | Cette méthode est donc déconseillée. |
| * 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 : <code>cdc_acm 3-1:1.0: ttyACM0: USB ACM device</code> | |
| * On lance le logiciel Arduino et dans Menu Outils/Ports série, on sélectionne /dev/ttyACM0 | |
| <note tip> | |
| 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). | |
| </note> | </note> |
| |
| | 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 : |
| | <code>snap install arduino</code> |
| |
| =====Utilisation===== | ==== AppImage ==== |
| | |
| | <note important> |
| | 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. |
| | </note> |
| | |
| | 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 :<code>sudo chown root: arduino-ide_*bit/chrome-sandbox</code><code>sudo chmod 4755 arduino-ide_*bit/chrome-sandbox</code> |
| | * 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 :<file - Arduino.desktop> |
| | [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 |
| | </file>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 : |
| | <code>sudo usermod -a -G tty $USER</code> |
| | <code>sudo usermod -a -G dialout $USER</code> |
| | <note>Vous devez vous déconnecter et vous reconnecter pour que les changements soient effectifs.</note> |
| | |
| | Modifier les [[:permissions]] de ''/dev/ttyUSB0'' avec la commande (la carte doit être connectée !) : |
| | <code>sudo chmod a+rw /dev/ttyUSB0</code> |
| | |
| | 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 ==== | ==== Compilation et programmation sous console ==== |
| <note> Cette méthode ne permet peut-être pas d'utiliser les librairies fournies par Arduino </note> | |
| Il s'agit dans cette partie de montrer comment compiler avec avr-gcc et comment charger votre programme dans votre carte Arduino. | <note>Cette méthode ne permet peut-être pas d'utiliser les librairies fournies par Arduino.</note> |
| | Il s'agit dans cette partie de montrer comment compiler avec ''avr-gcc'' et comment charger votre programme dans votre carte Arduino. |
| |
| === Installation === | === Installation === |
| [[apt://avr-gcc | avr-libc | avrdude | binutils-avr]] | |
| | [[apt>avr-gcc avr-libc avrdude binutils-avr]] |
| |
| === Compilation === | === Compilation === |
| **avr-gcc** s'utilise presque comme gcc, en spécifiant le microcontrolleur de la carte.\\ | |
| Par exemple pour une carte Arduino UNO, avec un avr atmega328p, on a : | |
| <code> avr-gcc -mmcu=atmega328p -o main.elf main.c </code> | |
| <note tip> La liste des micro-controlleurs supportés est spécifiée dans le [[:man|manuel]] d'avr-gcc : | |
| <code> man avr-gcc </code> </note> | |
| |
| Puis on extrait les données utilisables par le micro-controlleur : | ''avr-gcc'' s'utilise presque comme [[:gcc]], en spécifiant le microcontrôleur de la carte. |
| <code> objcopy -O ihex -R .eeprom main.elf main.hex </code> | |
| |
| | Par exemple pour une carte Arduino UNO, avec un //avr atmega328p//, on a : |
| | <code>avr-gcc -mmcu=atmega328p -o main.elf main.c</code> |
| | <note tip> |
| | La liste des microcontrôleurs supportés est spécifiée dans le [[:man|manuel]] d'avr-gcc : |
| | <code>man avr-gcc</code> |
| | </note> |
| | |
| | Puis on extrait les données utilisables par le microcontrôleur : |
| | <code> objcopy -O ihex -R .eeprom main.elf main.hex </code> |
| |
| === Programmeur === | === Programmeur === |
| La programmation de la carte se fait avec avrdude. Il faut lui spécifier le programmeur, le micro-contrô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".\\ | 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. |
| Le micro-controleur sera cette fois-ci : m328p. | |
| <note tip> Là encore, la liste des micro-controlleurs et programmeur supportés se trouve dans le manuel: <code> man avrdude </code> </note> | 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//. |
| | <note tip> Là encore, la liste des microcontrôleurs et programmeur supportés se trouve dans le manuel: <code> man avrdude </code> </note> |
| Vous aurez par exemple : | Vous aurez par exemple : |
| <code> sudo avrdude -c arduino -p m328p -P /dev/cuaU0 -U flash:w:main.hex </code> | <code> sudo avrdude -c arduino -p m328p -P /dev/cuaU0 -U flash:w:main.hex </code> |
| <note important> 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 </note> | <note important> 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 </note> |
| |
| | ===== Problèmes connus ===== |
| |
| | ==== Pas de port série ==== |
| |
| ==== Simulation de l'Arduino ==== | 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]]: <code>lsusb -v</code> qui répondra par exemple <code>Bus 003 Device 002: ID XXXX:YYYY</code> |
| Il existe un petit logiciel qui permet de simuler son utilisation simulide sur le [[http://simulide.blogspot.com/|site officiel]]. | * 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 : <file>SUBSYSTEMS=="usb", ATTRS{idProduct}=="YYYY", ATTRS{idVendor}=="XXXX", SYMLINK+="ttyACM%n" </file> en remplaçant XXXX ET YYYY par vos valeurs précédemment récupérées |
| Il existe un petit logiciel qui permet de simuler son utilisation, mais il ne semble pas fonctionner sous [[:Wine]], une machine [[:virtualisation|virtuelle]] Windows est ici nécessaire : il s'appelle [[http://www.virtualbreadboard.com|VBB]]. | * 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 <file>cdc_acm</file> |
| | * On rend le port accessible à l'utilisateur : ce port est dans le groupe dialout. |
| Il existe un logiciel pour dessiner les plans des cartes électroniques pour l'Arduino : [[:fritzing]]. | * 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 : <code>cdc_acm 3-1:1.0: ttyACM0: USB ACM device</code> |
| | * On lance l'application **Arduino** et dans le menu //Outils / Ports série//, on sélectionne ///dev/ttyACM0//. |
| | <note tip> |
| | 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). |
| | </note> |
| |
| Il est possible de contrôler l'Arduino par le biais de [[:scratch#etendre_les_capacites_du_logiciel|Scratch]]. | ===== Voir aussi ===== |
| |
| =====Voir aussi===== | * [[https://www.arduino.cc/|Site officiel]] |
| * [[http://www.mon-club-elec.fr/pmwiki_reference_arduino/pmwiki.php?n=Main.HomePage|Une version française du site Arduino]] | * [[https://github.com/arduino|GitHub]] |
| * Le tutoriel Arduino pour les débutants sur [[https://openclassrooms.com/courses/programmez-vos-premiers-montages-avec-arduino|OpenClassrooms]] (ex Site du Zero). | * [[https://zestedesavoir.com/tutoriels/686/arduino-premiers-pas-en-informatique-embarquee/|Arduino : premiers pas en informatique embarquée]] |
| * [[http://fr.flossmanuals.net/arduino/|Manuel français sur arduino]] et l'électronique libre, réalisé par Flossmanuals Francophone | * Il existe une application pour dessiner les plans des cartes électroniques (entre autre pour l'Arduino) : [[:Fritzing]]. |
| * [[http://blog.ardublock.com/]] Ardublock programmation graphique de l'arduino. | * Il est possible de contrôler l'Arduino par le biais de [[:scratch#etendre_les_capacites_du_logiciel|Scratch]]. |
| |
| ---- | ---- |
| //Contributeurs : [[:utilisateurs:mimilus|mimilus]],[[:utilisateurs:sivolc73]], gduteil, pygmee, samcelia.// | //[[:Contributeurs]] : [[:utilisateurs:mimilus]], [[:utilisateurs:sivolc73]], gduteil, pygmee, samcelia, [[:utilisateurs:krodelabestiole]].// |