Seulement quelques semaines après l’achat d’Arduino par Qualcomm (voir mon précédent article sur le sujet), les conditions d’utilisations évoluent.
On pouvait peut être s’y attendre, mais maintenant Qualcomm prévoit d’exploiter à son profit les données des utilisateurs et le travail de la communauté.

Devons-nous nous sentir trahis par ce changement de stratégie de la part d’Arduino ?
Peut-on encore considérer l’Arduino comme Open Source ?
Est-ce la mort de notre chère petite carte ou simplement une péripétie dans l’histoire déjà mouvementée de l’Arduino ?
À vous de vous renseigner et de vous faire une opinion sur la question…
Quoi qu’il en soit, ce nouvel Arduino Uno Q est vraiment très intéressant. J’ai donc décidé de l’acheter pour le tester et en parler dans mon prochain livre (juste avant qu’il soit imprimé). Mais comme je vous avais aussi promis un test de l’Arduino Uno Q, je vous offre en avant première ce chapitre de mon livre (qui devrait paraitre au printemps 2026).
Caractéristiques techniques
Tout en conservant les dimensions réduites de ce format (68,85 x 53,34 mm), l’Arduino Uno Q possède à la fois un microcontrôleur (comme tous les autres modèles d’Arduino) et un microprocesseur (comme les ordinateurs monocarte de type Raspberry Pi).

Microcontrôleur
Le microcontrôleur (situé sous la carte) permet de gérer en temps réel les entrées/sorties, 2 des 4 LED RGB, la matrice de LED et le connecteur Qwiic (pour brancher les Modulino).

| Microcontrôleur | STMicroelectronics STM32U585 |
| Fréquence | 160 MHz |
| SRAM | 786 Ko |
| FLASH | 2 Mo |
| Entrées/sorties numériques | 47 (22 Uno + 25 JMISC) |
| Entrées analogiques | 6 |
| Résolution des entrées analogiques | 8, 10, 12 ou 14 bits |
| Sorties analogiques virtuelles (PWM) | 6 |
| Sortie analogique (DAC) | 2 |
| Tension (par défaut) des entrées/sorties | 3,3V |
| LED RGB (gérées par le microcontrôleur) | 2 |
| Matrice de LED | 8×13 (LED bleues) |
| Connecteur QWIIC | 1 |
Microprocesseur
L’Arduino Uno Q possède aussi un microprocesseur et un système d’exploitation Linux Debian (avec l’environnement de bureau Xfce). Vous pouvez donc modifier sa configuration, installer de nouveaux programmes, naviguer sur internet et bien sûr communiquer directement avec le microcontrôleur.

| Microprocesseur | Qualcomm Dragonwing QRB2210 Quad-core Arm Cortex-A53 |
| Fréquence | 2.0 GHz |
| RAM | 2 ou 4 Go (suivant le modèle) |
| Module de stockage eMMC | 16 ou 32 Go (suivant le modèle) |
| Système d’exploitation préinstallé | Linux Debian |
| LED RGB (gérées par le microprocesseur) | 2 |
| WiFi et Bluetooth | Oui |
Connecteur USB-C
Comme d’habitude la prise USB permet d’alimenter et de programmer la carte, mais en ajoutant un adaptateur Multiport vous pouvez transformer l’Arduino Uno Q en ordinateur en reliant les périphériques de votre choix (écran HDMI ou VGA, clavier, souris, stockage USB, connexion Ethernet, micro, haut parleurs, webcam…).

Entrées/sorties
Comme d’habitude avec les cartes au format Uno, vous bénéficiez d’une vingtaine d’entrées/sorties. Utilisez une breadboard pour créer vos circuits ou branchez une carte shield compatible avec un tension de 3,3V.
Attention, il est possible que certaines cartes d’extensions conçues initialement pour les entrées/sorties 5V ne soient pas compatibles.

Connecteurs JMISC et JMEDIA
Deux rangées de connecteurs font leur apparition sous la carte. Il permettront d’utiliser de futures cartes d’extensions. Elles devraient permettre de brancher directement les différents périphériques (sans passer par la prise USB) et aussi d’accéder à 25 entrées/sorties supplémentaire.

Matrice de LED
La matrice de 8 x 13 LED est légèrement plus large que celle de l’Arduino Uno R4 WiFi (qui est de 8 x 12), de plus les LED sont de couleur bleue. Bien qu’un peu rudimentaire, ce type d’affichage peut s’avérer très utile pour donner des informations sur l’état de la carte.

Module WiFi et Bluetooth
Il est géré par le microprocesseur. Il permet à l’ordinateur de se connecter à internet (en WiFi) et d’utiliser les périphériques compatibles (Bluetooth). Le microcontrôleur peut l’utiliser (en passant par le microprocesseur).

Connecteur QWIIC
Ce connecteur qui équipe déjà l’Arduino Uno R4 WiFi et l’Arduino Nano R4 permet de relier les Modulinos ainsi que d’autres modules compatibles (SparkFun). Ils utilisent un 2ème bus I2C (Wire1 au lieu de Wire) pour communiquer.

LED RGB
Les LED 1 et 2 sont contrôlées par le microprocesseur et les LED 3 et 4 par le microcontrôleur.
Normalement, la LED 2 indique l’état du système, mais elle peut quand même être contrôlée par l’utilisateur.

Un successeur pour l’Arduino Yún ?
Mais l’idée d’ajouter un microprocesseur et un système d’exploitation Linux à une carte Arduino au format Uno n’est pas tellement nouvelle puisque l’Arduino Yún faisait déjà ça en 2013.

Son microprocesseur Atheros AR9331 (400 MHz et 64 Mo de Ram) avec un système d’exploitation Linux (OpenWRT) utilisait aussi une bibliothèque nommée « Bridge » pour communiquer avec son microcontrôleur ATmega32U4 (le même que l’Arduino Leonardo) et il bénéficiait également d’une connexion WiFi.
De plus, il possédait des éléments qui auraient pu être utiles sur l’Arduino Uno Q : un lecteur de carte microSD, une prise USB A (pour brancher par exemple une clé USB) et un port Ethernet.
L’Arduino Yún permettait d’expérimenter la création d’un petit serveur web ou d’échanger des données avec différentes plateformes (Twitter, Facebook etc…).
Même s’il ne manquait pas d’atouts, il n’a pas séduit suffisamment d’utilisateurs. Le Raspberry Pi était plus performant, plus polyvalent, coûtait moins cher et possédait déjà une grosse communauté. De plus, sa gestion de la communication entre microprocesseur et microcontrôleur complique la programmation par rapport à l’Arduino Uno.
Ordinateur autonome
Son microprocesseur et son système d’exploitation Linux Debian permettent d’utiliser l’Arduino Uno Q en tant qu’ordinateur autonome (la version avec 4 Go de RAM et 32 Go de stockage est recommandée pour cet usage).
Puisque tout passe par la prise USB-C, vous devez ajouter un adaptateur multiport qui vous permettra d’obtenir les sorties dont vous avez besoin pour brancher vos périphériques (HDMI, VGA, USB, lecteur de cartes SD ou micro SD, entrée ou sortie audio jack, Ethernet etc…).
Bien sûr, le type nombre de ports peut varier suivant les modèles mais en général l’une des prises USB est réservée à l’alimentation. Repérez-là et branchez-y une alimentation (de type Raspberry Pi) de 5V et d’au moins 3A.

Configuration du système d’exploitation
Lors du premier démarrage l’Arduino nous demande de choisir le mot de passe (nom d’utilisateur par défaut : « arduino »).
Attention, il y a un petit piège : pour l’instant, le clavier est en QWERTY et il n’est pas possible à ce stade de le changer, donc pensez à inverser les « A » et les « Q », les « W » et les « Z » etc…
Nous arrivons ensuite sur le bureau, l’Arduino App Lab se lance automatiquement. la configurations s’effectue en 3 étapes :
- Sélectionnez le clavier français et choisissez le nom de la carte
- Configurez le réseau Wifi (si vous n’êtes pas connecté par câble Ethernet)
- Indiquez le nom d’utilisateur et le mot de passe de l’Arduino

Ensuite, l’écran d’accueil de l’Arduino App Lab apparaît, la configuration est terminée. Vous pouvez utiliser directement l’application pour programmer l’Arduino.

Pour désactiver l’ouverture automatique de l’Arduino App Lab à chaque démarrage, allez dans le menu Applications – Settings – Session and Startup, choisissez l’onglet Application Autostart, décochez l’application Arduino App Lab et fermez la fenêtre en cliquant sur Close.
Découverte d’Arduino Uno Q Debian
Vous disposez d’un véritable ordinateur sous Linux avec quelques applications préinstallées. Pour naviguer sur internet allez dans Applications – Internet Chromium Web Browser.

Mais bien sûr, rien ne vous empêche d’installer de nouvelles applications. Pour cela allez dans Applications – Terminal Emulateur. Assurez-vous tout d’abord que le système est à jour en tapant :
sudo apt update
Puis
sudo apt upgrade
Entrez votre mot de passe et bien sûr, acceptez les mises à jour proposées (en tapant la lettre y).
Pour installer VLC, ajoutez des enceintes (Jack ou USB suivant votre adaptateur multiport) et tapez dans le terminal :
sudo apt install vlc

Pour installer LibreOffice :
sudo apt install libreoffice
Et pour l’avoir en français :
sudo apt install libreoffice-l10n-fr
Ouvrez ensuite LibreOffice, allez dans Tools – Options – Languages and locales – General et sélectionnez la langue française.

Le système Debian est vraiment très populaire. Si vous souhaitez installer autres applications, une simple recherche sur internet devrait vous fournir les informations nécessaires.
L’Arduino App Lab
C’est une autre nouveauté qui accompagne l’Arduino Uno Q. Voilà la description qu’en fait le site officiel d’Arduino : « Un environnement de travail qui permet de combiner des sketchs Arduino, des scripts Python et des applications Linux conteneurisées dans le même flux de travail« .
Vous pouvez bien sûr utiliser directement l’application App Lab sur l’Arduino Uno Q (en mode ordinateur autonome). Mais également l’installer sur un autre ordinateur en connectant la carte par USB (comme n’importe quel Arduino) ou WiFi après l’avoir configuré en mode ordinateur autonome (pour l’instant ça ne fonctionne pas par Ethernet).
Téléchargez et installez l’Arduino App Lab que vous trouverez à l’adresse suivante : https://docs.arduino.cc/software/app-lab/
Lancez l’application et attendez environ une trentaine de secondes que l’Arduino soit détecté en USB (et un petit peu plus en WiFi).

En WiFi, le mot de passe de l’Arduino sera nécessaire (mais pas en USB). Vous arrivez ensuite sur l’écran d’accueil de l’Arduino App Lab.

De nombreux exemples sont proposés. Ils montrent comment créer des applications composées :
- D’un fichier Python exécuté par le Microprocesseur.
- D’un sketch Arduino exécuté sur le microcontrôleur.
- Ou les 2 à la fois qui communiquent ensemble (par le Routeur Bridge).
Pour comprendre comment cela fonctionne, choisissez un programme simple comme Blink LED. Le fichier README .regroupe les informations utiles.
L’état de la LED (allumée ou éteinte) est géré par un script Python qui envoie ensuite l’information au microcontrôleur de l’Arduino par le Routeur Bridge (le pont qui permet la communication entre le microprocesseur et le microcontrôleur).

Le code Python utilisé est accessible depuis la barre latérale. Sélectionnez Files-python-main.py. En voilà la version commentée en français :
# Blink_LED
# Importation des modules "arduino.app_utils" et "time"
from arduino.app_utils import *
import time
# Creation de la variable "led_state"
led_state = False
# Boucle infinie
def loop():
# Recuperation de la variable
global led_state
# Pause d'une seconde
time.sleep(1)
# Inversion de la valeur de la variable
led_state = not led_state
# Envoi de l'information par le Routeur Bridge
Bridge.call("set_led_state", led_state)
# Lance l'application
App.run(user_loop=loop)
Pour visualiser le sketch Arduino, allez dans Files-sketch-sketch.ino :
// Blink_LED
// Appel de la bibliotheque "Arduino_RouterBridge.h"
#include "Arduino_RouterBridge.h"
void setup() {
// La LED interne est une sortie
pinMode(LED_BUILTIN, OUTPUT);
// Demarrage du Routeur Bridge
Bridge.begin();
// Appelle la fonction "set_led_state"
Bridge.provide("set_led_state", set_led_state);
}
// La boucle infinie est vide
void loop() {
}
// Fonction "set_led_state"
void set_led_state(bool state) {
// Modification de l'etat de la LED
digitalWrite(LED_BUILTIN, state ? LOW : HIGH);
}
Cliquez sur le bouton Run (en haut) pour exécuter le programme, la LED n°3 clignote en rouge. Vous pourrez ensuite cliquer sur le bouton Stop (qui sans surprise arrête le programme).
Il est impossible de modifier les programmes fournis en exemples, alors cliquez sur le bouton Copy and edit app, choisissez un nom (ou laissez celui par défaut) et cliquez sur Create new.

Le nouveau programme est accessible en cliquant sur le bouton My Apps. Il est possible de le renommer, dupliquer ou supprimer en cliquant sur le petit triangle à coté du nom du fichier.

Amusez-vous à modifier le programme pour en comprendre le fonctionnement.
Les LED RGB n°3 et n°4 peuvent être contrôlées par le microcontrôleur en utilisant les constantes suivantes :
- LED 3 rouge : LED3_R (ou LED_BUILTIN)
- LED 3 verte : LED3_G
- LED 3 bleue : LED3_B
- LED 4 rouge : LED4_R
- LED 4 verte : LED4_G
- LED 4 bleue : LED4_B
Notez que l’utilisation des LED RGB est contre-intuitive. Elle s’allument à l’état bas, c’est à dire à un niveau logique de 0 (ou LOW) et s’éteignent à 1 (ou HIGH).
Voilà par exemple comment modifier le sketch pour que la LED n°3 clignote en bleu.
// Blink_LED_Bleue
#include "Arduino_RouterBridge.h"
void setup() {
// La LED3 bleue est une sortie
pinMode(LED3_B, OUTPUT);
// Demarrage du Routeur Bridge
Bridge.begin();
// Appelle la fonction "set_led_state"
Bridge.provide("set_led_state", set_led_state);
}
// La boucle infinie est vide
void loop() {
}
// Fonction "set_led_state"
void set_led_state(bool state) {
// Modification de l'etat de la LED
digitalWrite(LED3_B, state);
}
En modifiant aussi le programme Python, il est possible d’aller plus loin, vous pouvez changer la vitesse de clignotement, mais aussi déterminer la couleur des LED RGB n°3 et n°4.
Voilà un exemple de programme qui allume alternativement la LED n°3 en rouge, vert, bleu, blanc et l’éteint avant de recommencer le cycle.

La partie Python :
# Blink_LED_Multi
# Importation des modules "arduino.app_utils" et "time"
from arduino.app_utils import *
import time
# Creation de la variable "couleur_led"
couleur_led = 0
# Boucle infinie
def loop():
# Recuperation de la variable
global couleur_led
# Modification de la couleur
couleur_led = couleur_led + 1
if couleur_led == 5:
couleur_led = 0
# Envoi de l'information par le Routeur Bridge
Bridge.call("couleur_led", couleur_led)
# Pause
time.sleep(0.8)
App.run(user_loop=loop)
La partie langage Arduino :
// Blink_LED_Multi
// Appel de la bibliotheque "Arduino_RouterBridge.h"
#include "Arduino_RouterBridge.h"
void setup() {
// Les 3 LED sont des sorties
pinMode(LED3_R, OUTPUT);
pinMode(LED3_G, OUTPUT);
pinMode(LED3_B, OUTPUT);
// Les 3 LED sont eteintes
digitalWrite(LED3_R, HIGH);
digitalWrite(LED3_G, HIGH);
digitalWrite(LED3_B, HIGH);
// Demarrage du Routeur Bridge
Bridge.begin();
// Appelle la fonction "couleur_led"
Bridge.provide("couleur_led", couleur_led);
}
// La boucle infinie est vide
void loop() {
}
// Fonction "couleur_led"
void couleur_led(int couleur) {
// Extinction des 3 LED
digitalWrite(LED3_R, HIGH);
digitalWrite(LED3_G, HIGH);
digitalWrite(LED3_B, HIGH);
// Si couleur = 1, alors LED rouge
if (couleur == 1){
digitalWrite(LED3_R, LOW);
}
// Si couleur = 2, alors LED verte
else if (couleur == 2){
digitalWrite(LED3_G, LOW);
}
// Si couleur = 3, alors LED bleue
else if (couleur == 3){
digitalWrite(LED3_B, LOW);
}
// Si couleur = 4, alors LED blanche
else if (couleur == 4){
digitalWrite(LED3_R, LOW);
digitalWrite(LED3_G, LOW);
digitalWrite(LED3_B, LOW);
}
// Sinon les LED restent eteintes
}
Il est possible d’aller beaucoup plus loin en utilisant les briques. Il s’agit de blocs de code dotés de fonctionnalités pré-intégrées, telles que des modèles d’IA, un serveur web ou des requêtes HTTP spécifiques.
L’équipe Arduino a créé de nombreux exemples d’utilisation (classification audio, détection d’objets vidéo, contrôle des entrées/sorties…) et bien sûr une documentation (en anglais) pour comprendre comment tout cela fonctionne. Alors n’hésitez pas à y jeter un œil.
Flasher une nouvelle Image
Après avoir testé de nombreuses modifications, vous pourriez avoir envie de réinstaller le système Linux origine (pour repartir sur nouvelles bases) ou peut être de tester des images alternatives crées par la communauté.
Bien sûr, les données contenues dans la carte seront supprimées alors n’oubliez pas de les sauvegarder avant de flasher l’image.
Allez à l’adresse suivante pour télécharger la dernière version de l’Arduino Flasher CLI : https://www.arduino.cc/en/software/#flasher-tool

Décompressez le contenu du fichier zip dans un répertoire (de préférence à la racine de votre disque dur). Ouvrez le répertoire, sélectionnez-le (clic gauche à coté des icônes), maintenez ensuite la touche CRTL appuyée, faites un clic droit sur le fichier arduino-flasher-cli.exe et choisissez Ouvrir dans leTerminal.
Tapez la commande suivante pour télécharger l’image du système Linux Debian pour Arduino Uno Q (bien sûr appuyez ensuite sur la touche Entrée):
./arduino-flasher-cli download latest
Reliez le connecteur USB_BOOT à la masse (GND) avec un câble ou un cavalier et branchez l’Arduino à l’ordinateur.

Pour flasher l’image, tapez (adaptez la commande au nom du fichier téléchargé) :
./arduino-flasher-cli flash arduino-unoq-debian-image-20251127-441.tar.zst
Le fichier est alors décompressé, un message vous informe que toutes les données contenues dans l’Arduino seront effacées et vous demande si vous voulez quand même continuer.

Acceptez en tapant :
y
Quelques minutes plus tard un message vous informe que tout s’est bien passé. Vous pouvez débrancher l’Arduino et retirer le câble qui relie le connecteur USB_BOOT à la masse (GND).

L’Arduino Uno Q est maintenant comme neuf.
L’IDE Arduino
L’Arduino Uno Q également peut être programmé comme une carte Arduino classique.
Ouvrez l’IDE Arduino (acceptez toutes les mises à jour qu’il vous propose) et reliez le câble USB de l’Arduino à l’ordinateur. Allez dans Outils – Carte et sélectionnez Arduino Uno Q (s’il n’est pas déjà sélectionnée automatiquement).
Si l’Arduino Uno Q n’est pas reconnu par l’IDE (attendez quand même une vingtaine de secondes), vous devez l’installer en cliquant sur l’icône représentant une carte Arduino dans la barre latérale (ou en allant dans Outils – Carte : – Gestionnaire de cartes…). Tapez « arduino Q » dans la barre de recherche, sélectionnez Arduino UNO Q Boards et cliquez sur Installer.

Une fois l’Arduino détecté, vous pouvez téléverser votre sketch. Voilà par exemple un code qui allume en rouge, vert, bleu et blanc la LED RGB n°4 avant de l’éteindre.
// Q_Blink_LED_4
void setup() {
// Les 3 LED sont des sorties
pinMode(LED4_R, OUTPUT);
pinMode(LED4_G, OUTPUT);
pinMode(LED4_B, OUTPUT);
// Les 3 LED sont eteintes
extinction();
}
void loop() {
rouge();
delay(1000);
vert();
delay(1000);
bleu();
delay(1000);
blanc();
delay(1000);
extinction();
delay(1000);
}
// Fonctions
void extinction() {
digitalWrite(LED4_R, HIGH);
digitalWrite(LED4_G, HIGH);
digitalWrite(LED4_B, HIGH);
}
void rouge() {
extinction();
digitalWrite(LED4_R, LOW);
}
void vert() {
extinction();
digitalWrite(LED4_G, LOW);
}
void bleu() {
extinction();
digitalWrite(LED4_B, LOW);
}
void blanc() {
digitalWrite(LED4_R, LOW);
digitalWrite(LED4_G, LOW);
digitalWrite(LED4_B, LOW);
}

Vous trouverez d’autres exemples de programmation à l’adresse suivante : https://docs.arduino.cc/tutorials/uno-q/user-manual/
J’espère que cet extrait de mon livre vous a donné envie de tester cet incroyable Arduino…
Et bien sûr, si cet article vous a plu, ne ratez pas la 4ème édition de mon prochain livre sur l’Arduino (qui paraitra au printemps 2026). Il reprend les bases du langage Arduino en s’appuyant sur l’Arduino Uno R4 WiFi et il parle également de MicroPython, d’électronique, teste différents modules et robots pédagogiques etc…
Mais je vous en reparlerai plus en détail au moment de sa sortie 😉
Une réflexion sur “L’Arduino Uno Q”