Arduino vient d’annoncer la sortie de la version 1.0.0 de l’Arduino CLI, la première version stable pour laquelle les utilisateurs et les développeurs peuvent être sûrs que l’API du logiciel ne changera pas au fil du temps, ou du moins avec des changements minimes qui n’auront pas d’impact sur le flux de travail des applications basées sur elle.
Nous avons examiné pour la première fois l’Arduino CLI alors qu’il était encore au stade alpha en 2018. La version 1.0.0 de l’Arduino CLI a en fait été publiée discrètement il y a environ deux mois, mais Arduino ne l’a annoncée que maintenant et l’utilitaire est maintenant à la version 1.0.4 avec plusieurs corrections de bugs.
Version 1.0 de l’Arduino CLI

L’objectif de l’API est de programmer facilement les cartes à partir de la ligne de commande sans avoir à utiliser l’IDE Arduino, et la CLI peut être intégrée dans votre propre script pour automatiser divers processus.
Arduino explique qu’il existe trois façons d’intégrer et d’utiliser les capacités de l’utilitaire :
- Interface de ligne de commande pour gérer les cartes et les bibliothèques, compiler des croquis et télécharger du code sur les cartes Arduino.
- L’interface gRPC permet aux développeurs d’interagir avec la CLI en utilisant leur langage de programmation préféré, permettant la création d’applications et de services personnalisés qui exploitent toutes les fonctionnalités de l’écosystème Arduino. Elle peut notamment être utilisée pour créer des IDE ou des plugins personnalisés.
- Module Go pour utiliser les packages Arduino CLI dans des applications personnalisées écrites dans le langage de programmation Go.
Vous trouverez un journal des modifications détaillé pour Arduino CLI 1.0.0 à 1.0.4 sur GitHub.
Test de l’Arduino CLI avec Raspberry Pi Pico 2

J’ai installé Arduino CLI 1.0.4 sur ma machine, un ordinateur portable Ubuntu 22.04, pour faire un essai rapide. Beaucoup de choses ont changé depuis la sortie de la version alpha il y a six ans, à commencer par la procédure d’installation :
cd ~/edev/arduino curl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh | merde
|
cd ~/edev/arduino curl-fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh | sh |
Il installera arduino-cli dans le répertoire bin du répertoire actuel, dans mon cas ~/edev/arduino/bin. La plupart des gens devraient envisager de l’installer dans un répertoire qui se trouve dans leur PATH.
Il dispose de plusieurs commandes supplémentaires telles que burn-bootloader, daemon pour exécuter l’Arduino CLI en tant que démon gRPC, upgrade pour mettre à niveau les cœurs et bibliothèques installés, et d’autres :
jaufranc@Raspberryme-LAPTOP-5:~/edev/Arduino/bin$ ./arduino-cli version arduino-cli Version : 1.0.4 Validation : a0d912da Date : 2024-08-12T13:42:36Z jaufranc@Raspberryme-LAPTOP-5:~/edev/Arduino/bin$ ./arduino-cli Interface de ligne de commande Arduino (arduino-cli). Utilisation : arduino-cli [command]
Exemples : ./arduino-cli [flags…]
Commandes disponibles : board Commandes de la carte Arduino. burn-bootloader Télécharge le chargeur de démarrage. cache Commandes de cache Arduino. compile Compile les croquis Arduino. completion Génère des scripts de complétion config Commandes de configuration Arduino. core Opérations de base Arduino. daemon Exécute l’Arduino CLI en tant que démon gRPC. debug Débogue les croquis Arduino. help Aide sur n’importe quelle commande lib Commandes Arduino sur les bibliothèques. monitor Ouvre un port de communication avec une carte. outdated Répertorie les cœurs et les bibliothèques qui peuvent être mis à niveau sketch Commandes d’esquisse de l’Arduino CLI. update Met à jour l’index des cœurs et des bibliothèques upgrade Met à niveau les cœurs et les bibliothèques installés. upload Télécharge les croquis Arduino. version Affiche le numéro de version de l’Arduino CLI. Drapeaux : –additional-urls strings Liste séparée par des virgules d’URL supplémentaires pour le gestionnaire de cartes. –config-dir string Définit le répertoire de données par défaut (l’Arduino CLI recherchera le fichier de configuration dans ce répertoire). –config-file string Le fichier de configuration personnalisé (s’il n’est pas spécifié, la valeur par défaut sera utilisée). -h, –help aide pour arduino-cli –json Affiche la sortie au format JSON. –log Affiche les journaux sur la sortie standard. –log-file chaîne Chemin vers le fichier où les journaux seront écrits. –log-format chaîne Le format de sortie des journaux peut être : texte, json (par défaut « texte ») –log-level chaîne Les messages de ce niveau et supérieurs seront enregistrés. Les niveaux valides sont : trace, debug, info, warn, error, fatal, panic (par défaut « info ») –no-color Désactive la sortie colorée. Utilisez « arduino-cli [command] –help » pour plus d’informations sur une commande.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
jaufranc@Raspberryme-LAPTOP-5:~/edev/Arduino/bin$ ./arduino-cli version arduino-cli Version : 1.0.4 Validation : a0d912da Date : 2024-08-12T13:42:36Z jaufranc@Raspberryme-LAPTOP-5:~/edev/Arduino/bin$ ./arduino-cli Interface de ligne de commande Arduino (arduino-cli). Usage: Arduino CLI [command] Exemples : ./arduino-cli Commandes disponibles : Commandes de la carte Arduino. burn-bootloader Télécharger le chargeur de démarrage. cache Commandes de cache Arduino. compile Compile les croquis Arduino. achèvement Génère des scripts d’achèvement Commandes de configuration Arduino. opérations de base du cœur d’Arduino. daemon Exécutez l’Arduino CLI en tant que démon gRPC. débogage Déboguer les croquis Arduino. aide Aide sur n’importe quelle commande Commandes Arduino lib sur les bibliothèques. surveiller Ouvrir un port de communication avec une carte. obsolète Liste les cœurs et les bibliothèques qui peuvent être mis à niveau esquisse des commandes d’esquisse de l’Arduino CLI. update Met à jour l’index des cœurs et des bibliothèques Mise à niveau Met à niveau les cœurs et les bibliothèques installés. télécharger Téléchargez des croquis Arduino. version Affiche le numéro de version de l’Arduino CLI. Drapeaux: –additional-urls strings Liste séparée par des virgules d’URL supplémentaires pour le gestionnaire de forums. –config-dir string Définit le répertoire de données par défaut (Arduino CLI recherchera le fichier de configuration dans ce répertoire). –config-file chaîne Le fichier de configuration personnalisé (s’il n’est pas spécifié, la valeur par défaut sera utilisée). -h, –help aide pour arduino-cli –json Imprime la sortie au format JSON. –log Imprime les journaux sur la sortie standard. –log-file chaîne Chemin vers le fichier où les journaux seront écrits. –log-format string Le format de sortie des journaux peut être : texte, json (par défaut « texte ») –log-level string Les messages de ce niveau et des niveaux supérieurs seront enregistrés. Les niveaux valides sont : trace, debug, info, warn, error, fatal, panic (par défaut : « info ») –no-color Désactiver la sortie colorée. Utilisez « arduino-cli » [command] –help » pour plus d’informations sur une commande. |
Vous pourrez effectuer la plupart des tâches effectuées dans l’IDE Arduino à partir de la ligne de commande. Suivons le guide de démarrage de la documentation en créant d’abord un fichier de configuration par défaut pour arduino-cli :
jaufranc@Raspberryme-LAPTOP-5:~/edev/Arduino$ arduino-cli config init Fichier de configuration écrit dans : /home/jaufranc/.arduino15/arduino-cli.yaml
|
jaufranc@Raspberryme-LAPTOP-5:~/edev/Arduino$ arduino-cli config init Fichier de configuration écrit dans : /home/jaufranc/.arduino15/arduino-cli.yaml |
Nous pouvons vérifier le contenu du fichier YAML :
jaufranc@Raspberryme-LAPTOP-5:~/edev/Arduino$ cat ~/.arduino15/arduino-cli.yaml board_manager: additional_urls: []
|
jaufranc@Raspberryme-LAPTOP-5:~/edev/Arduino$ cat ~/.arduino15/arduino-cli.yaml gestionnaire_du_conseil: URLs_supplémentaires : [] |
J’ai une carte Raspberry Pi Pico 2 sur mon bureau, alors essayons puisqu’elle est prise en charge par le Raspberry Pi Pico Arduino Core 4.0.x. J’ai ajouté manuellement l’URL de la carte au fichier YAML :
URL supplémentaires : – https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
|
URLs_supplémentaires : – https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json |
Mais après avoir lu davantage la documentation, j’ai remarqué qu’il est possible d’ajouter une URL de carte (par exemple pour esp8266) comme suit :
Mise à jour du noyau Arduino-CLI — URL supplémentaires https://arduino.esp8266.com/stable/package_esp8266com_index.json
|
Mise à jour du noyau Arduino-CLI — URL supplémentaires https://arduino.esp8266.com/stable/package_esp8266com_index.json |
Nous pouvons mettre à jour le cache local des plateformes et bibliothèques sélectionnées :
jaufranc@Raspberryme-LAPTOP-5:~/edev/Arduino$ arduino-cli core update-index Téléchargement de l’index : package_index.tar.bz2 téléchargé Téléchargement de l’index : package_rp2040_index.json téléchargé
|
jaufranc@Raspberryme-LAPTOP-5:~/edev/Arduino$ arduino-cli core update-index Téléchargement de l’index : package_index.tar.bz2 téléchargé Téléchargement de l’index : package_rp2040_index.json téléchargé |
Créons un répertoire de croquis…
$ arduino-cli croquis nouveau cnxsoft-sketch cd cnxsoft-sketch/
|
$ arduino-cli esquisse nouveau cnxsoft-sketch cd cnxsoft-sketch/ |
… et écrivez un exemple de clignotement dans le fichier cnxsoft-sketch.ino que vous venez de créer :
// la fonction de configuration s’exécute une fois lorsque vous appuyez sur reset ou mettez la carte sous tension void setup() { // initialiser la broche numérique LED_BUILTIN comme sortie. pinMode(LED_BUILTIN, OUTPUT); } // la fonction de boucle s’exécute encore et encore pour toujours void loop() { digitalWrite(LED_BUILTIN, HIGH); // allumer la LED (HIGH est le niveau de tension) delay(1000); // attendre une seconde digitalWrite(LED_BUILTIN, LOW); // éteindre la LED en réduisant la tension à BASSE delay(1000); // attendre une seconde }
|
// la fonction de configuration s’exécute une fois lorsque vous appuyez sur reset ou mettez la carte sous tension configuration vide() { // initialiser la broche numérique LED_BUILTIN comme sortie. pinMode(LED_INTEGREE, SORTIE); } // la fonction de boucle s’exécute encore et encore pour toujours boucle vide() { digitalWrite(LED_BUILTIN, HIGH); // allume la LED (HIGH est le niveau de tension) delay(1000); // attendre une seconde digitalWrite(LED_BUILTIN, LOW); // éteindre la LED en réduisant la tension à un niveau BAS delay(1000); // attendre une seconde } |
Connectons le Raspberry Pi Pico 2 à l’ordinateur portable en mode bootloader. La carte doit être répertoriée :
Liste des cartes $ arduino-cli Port Protocole Type Nom de la carte FQBN Core UF2_Board uf2conv Périphériques UF2 Inconnu
|
Liste des cartes $ arduino-cli Type de protocole de port Nom de la carte FQBN Core UF2_Board uf2conv Périphériques UF2 Inconnu |
J’espérais quelque chose de plus sympa, mais c’est peut-être parce que c’est une carte RP2350 générique :
./arduino-cli recherche de carte rp2350 Nom de la carte FQBN ID de la plateforme Générique RP2350 rp2040:rp2040:generic_rp2350 rp2040:rp2040 Solder Party RP2350 Stamp rp2040:rp2040:solderparty_rp2350_stamp rp2040:rp2040 Solder Party RP2350 Stamp XL rp2040:rp2040:solderparty_rp2350_stamp_xl rp2040:rp2040 SparkFun ProMicro RP2350 rp2040:rp2040:sparkfun_promicrorp2350 rp2040:rp2040
|
./arduino-cli recherche de carte rp2350 Nom de la carte ID de la plateforme FQBN Générique RP2350 rp2040:rp2040:generic_rp2350 rp2040:rp2040 Tampon Solder Party RP2350 rp2040:rp2040:solderparty_rp2350_stamp rp2040:rp2040 Tampon XL Solder Party RP2350 rp2040:rp2040:solderparty_rp2350_stamp_xl rp2040:rp2040 SparkFun ProMicro RP2350 rp2040:rp2040:sparkfun_promicrorp2350 rp2040:rp2040 |
Le FQBN (Fully Qualified Board Name) est la partie importante car nous en aurons besoin pour compiler notre échantillon :
jaufranc@Raspberryme-LAPTOP-5:~/edev/Arduino$ arduino-cli compile –fqbn rp2040:rp2040:generic_rp2350 cnxsoft-sketch Sketch utilise 49840 octets (0%) d’espace de stockage du programme. Le maximum est de 16769024 octets. Les variables globales utilisent 9764 octets (1%) de mémoire dynamique, laissant 514524 octets pour les variables locales. Le maximum est de 524288 octets. Plateforme utilisée Version Chemin rp2040:rp2040 4.0.1 /home/jaufranc/.arduino15/packages/rp2040/hardware/rp2040/4.0.1
|
jaufranc@Raspberryme-LAPTOP-5:~/edev/Arduino$ arduino-cli compile –fqbn rp2040:rp240:generic_rp2350 cnxsoft-sketch Sketch utilise 49840 octets (0 %) d’espace de stockage du programme. Le maximum est de 16769024 octets. Les variables globales utilisent 9764 octets (1 %) de mémoire dynamique, ce qui laisse 514524 octets pour les variables locales. Le maximum est de 524288 octets. Plateforme utilisée Version Chemin rp2040:rp2040 4.0.1 /home/jaufranc/.arduino15/packages/rp2040/hardware/rp2040/4.0.1 |
Pour l’instant, tout semble aller bien. La dernière étape consiste à télécharger le firmware sur la carte Raspberry Pi Pico 2 :
jaufranc@Raspberryme-LAPTOP-5:~/edev/Arduino$ arduino-cli upload -p /media/jaufranc/RP2350/ –fqbn rp2040:rp2040:generic_rp2350 cnxsoft-sketch Conversion en uf2, taille de sortie : 112128, adresse de départ : 0x2000 Recherche de périphériques RP2040 Flashage de /media/jaufranc/RP2350 (RP2350) Écriture de 112128 octets dans /media/jaufranc/RP2350/NEW.UF2 Nouveau port de téléchargement : /media/jaufranc/RP2350/ (série)
|
jaufranc@Raspberryme-LAPTOP-5:~/edev/Arduino$ arduino-cli upload -p /media/jaufranc/RP2350/ –fqbn rp2040:rp2040:generic_rp2350 cnxsoft-sketch Conversion en uf2, taille de sortie : 112128, adresse de départ : 0x2000 Recherche d’appareils RP2040 Flashage /media/jaufranc/RP2350 (RP2350) A écrit 112128 octets dans /media/jaufranc/RP2350/NEW.UF2 Nouveau port de téléchargement : /media/jaufranc/RP2350/ (série) |
Voilà, et la LED intégrée de ma carte clignote désormais. C’était relativement facile à mettre en route, et cela peut augmenter la productivité des personnes préférant travailler à partir de la ligne de commande plutôt que d’utiliser l’IDE Arduino.
Retrouvez l’histoire de Raspberry Pi dans cette vidéo :

-
DUBEUYEW Raspberry Pi et Pico avec Carte Microcontrôleur Pré-soudée et Carte de Dérivation GPIO 1 en 2 et Câble Micro USB (Kit Pi Pico)
-
Raspberry Pi Zero 2 W
