L’Arduino Uno Q

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é.

Pensez-vous que Qualcomm vampirise Arduino ?

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…

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).

L'Arduino Uno Q


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 STM32U585
MicrocontrôleurSTMicroelectronics STM32U585
Fréquence160 MHz
SRAM786 Ko
FLASH2 Mo
Entrées/sorties numériques47 (22 Uno + 25 JMISC)
Entrées analogiques6
Résolution des entrées analogiques8, 10, 12 ou 14 bits
Sorties analogiques virtuelles (PWM)6
Sortie analogique (DAC)2
Tension (par défaut) des entrées/sorties3,3V
LED RGB (gérées par le microcontrôleur)2
Matrice de LED8×13 (LED bleues)
Connecteur QWIIC1

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
MicroprocesseurQualcomm Dragonwing QRB2210
Quad-core Arm Cortex-A53
Fréquence2.0 GHz
RAM2 ou 4 Go (suivant le modèle)
Module de stockage eMMC16 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 BluetoothOui

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…).

Connecteur USB-C

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.

Entrées/sorties de l'Arduino Uno

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.

L'Arduino Uno Q (vu de dessous)

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.

Matrice de LED bleues

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).

Module WiFi et Bluetooth

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.

Connecteur QWIIC

LED RGB

Les LED 1 et 2 sont contrôlées par le microprocesseur et les LED 3 et 4 par le microcontrôleur.

LED RGB

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.

L'Arduino Yún

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…).

Utilisation de l'Arduino Uno Q en tant qu'ordinateur

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 »).

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
Configuration de l'Arduino Uno Q


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.

Écran d’accueil de l'Arduino App Lab


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.

Navigation sur internet

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
Lecture d'une vidéo (https://publicdomainmovie.net)

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.

Mettre LibreOffice en français

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).

Connexion de l'Arduino Uno Q à l'ordinateur (USB ou 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.

É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 programme Blink LED


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.

Copie du programme Blink LED


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.

Renommer, dupliquer ou supprimer le programme

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

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.

Clignotement de la LED RGB n°3

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é.

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

Téléchargement de l'Arduino Flasher CLI

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.

Le connecteur USB_BOOT relié à la masse (GND)

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.

Voulez-vous 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'image a été flashée

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 OutilsCarte : – Gestionnaire de cartes…). Tapez « arduino Q » dans la barre de recherche, sélectionnez Arduino UNO Q Boards et cliquez sur Installer.

Installation de la carte Arduino UNO Q

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);
}
Clignotement de la LED RGB n°4

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

Laisser un commentaire