Arduino UNO Q: guida introduttiva (caratteristiche, pinout, esempi)

Sono passati circa quattro mesi dall’acquisizione di Arduino da parte di Qualcomm e dall’arrivo sul mercato di Arduino UNO Q. In questo periodo diversi lettori mi hanno scritto chiedendomi una presentazione più approfondita della scheda e un primo tutorial d’uso.
Va detto che negli ultimi anni Arduino ha fatto un grande passo avanti sulla qualità della documentazione: sul sito ufficiale trovate già molte informazioni e riferimenti utili. Come faccio spesso, però, durante i miei test e soprattutto quando devo preparare materiali per la didattica, preferisco raccogliere, riorganizzare e riformulare i contenuti provenienti da Arduino.cc e dalla documentazione tecnica, così da trasformarli in un percorso più chiaro, progressivo e “a misura di studente”.

Il formato di Arduino UNO Q resta quello “storico” della famiglia UNO, quindi compatibile come ingombri e disposizione generale, ma l’hardware introduce funzionalità insolite per questa categoria di schede. L’elemento distintivo è la presenza di due mondi in uno: da un lato un microcontrollore, dall’altro un microcomputer capace di eseguire Linux. I due sottosistemi sono pensati per dialogare con facilità, aprendo scenari interessanti per progetti IoT e applicazioni più evolute.

Specifiche tecniche

Arduino UNO Q unisce un microcontrollore STM32U585 e un microcomputer Linux basato su Qualcomm Dragonwing QRB2210, mantenendo l’impronta e il layout tipico delle schede Arduino.

Qualcomm Dragonwing™ QRB2210:

  • CPU quad-core Arm® Cortex®-A53 fino a 2,0 GHz
  • GPU Adreno per accelerazione grafica 3D
  • Doppio ISP (13 MP + 13 MP oppure 25 MP) fino a 30 fps

MCU STM32U585 Arm® Cortex®-M33 a 32 bit:

  • Core Arm® Cortex®-M33 fino a 160 MHz
  • 2 MB di memoria Flash
  • 786 kB di SRAM
  • FPU (unità di calcolo in virgola mobile)

Programmare la scheda Arduino UNO Q

Dal punto di vista della programmazione, UNO Q può essere usata come un Arduino tradizionale per gestire i GPIO tramite Arduino IDE, oppure si può sfruttare Arduino App Lab per lavorare in modo integrato sia sul microcontrollore sia sul microcomputer.

La parte MCU si sviluppa in C/C++ (come su molte altre schede Arduino), mentre sulla parte Linux è possibile creare ed eseguire script e programmi in Python.

Anche se la programmazione “a doppio binario” è una delle novità più interessanti, nulla vieta di usare la scheda in modo più semplice: solo MCU (come un Arduino classico) oppure solo Linux (come una single-board computer in stile Raspberry Pi).

In pratica, i possibili approcci sono:

  • Arduino classico: utilizzo del solo MCU;
  • App Lab integrato: ambiente unico con sketch C/C++ (MCU) e programmi Python (Linux/MPU);
  • Linux standalone: uso della scheda come computer Linux, con accesso diretto (ad esempio via SSH) o con periferiche collegate.


Comunicazione tra l’MCU e il microcomputer

Un punto di forza è la comunicazione tra microcontrollore e microcomputer: lo scambio dati avviene tramite uno strumento/libreria chiamato Router Bridge.

Un flusso tipico può essere questo: l’MCU legge sensori e comanda attuatori, poi inoltra i dati al lato Linux dove possono essere elaborati con software più complessi. In questo modo puoi, ad esempio, eseguire modelli di IA, fare elaborazione di immagini o audio, o interfacciarti con servizi web avanzati, continuando però a gestire in modo affidabile l’hardware tramite lo STM32.

Arduino App Lab

Arduino App Lab è l’ambiente suggerito per sfruttare al meglio UNO Q, perché riunisce in un unico strumento lo sviluppo per entrambe le parti della scheda.

in App Lab potete:

  • scrivere lo sketch in C/C++ per l’MCU;
  • creare ed eseguire programmi Python sul lato Linux.

Una novità importante sono i Bricks: moduli installabili e riutilizzabili che aggiungono funzionalità pronte, come componenti legati all’IA e ad altre capacità “avanzate”, riducendo il lavoro di integrazione.

Quindi, in App Lab trovi tipicamente:

  • Sketch Arduino per l’MCU
  • Script Python per l’MPU
  • Bricks per completare l’applicazione

Modalità di programmazione

Usando Arduino App Lab, la scheda può essere gestita in tre modalità operative:

  • Collegata al PC (PC-connected): programmazione da computer via USB, usando Arduino IDE o App Lab.
  • Standalone: esecuzione direttamente sulla scheda, come un vero single-board computer, sfruttando l’App Lab già presente.
  • Wireless: connessione via Wi-Fi (o Bluetooth) per caricare il codice ed eseguire il debug da remoto da PC o dispositivo mobile.

Può essere utilizzata come computer standalone

Come avviene con un Raspberry Pi, UNO Q può funzionare come computer Linux autonomo: potete collegare monitor, tastiera e mouse, oppure gestire tutto dal tuo PC accedendo al Terminale via SSH.

In configurazione standalone potete continuare a usare Arduino App Lab (preinstallato) per sviluppare sia per la parte microcontrollore sia per la parte Linux.

Archiviazione e connettività integrate

Per l’uso embedded è utile la presenza di memoria eMMC integrata (tagli da 16 GB o 32 GB) e di RAM LPDDR4 (2 GB o 4 GB), che garantiscono rapidità di accesso e una base di storage affidabile.

Sul fronte IoT, la scheda integra anche Wi-Fi e Bluetooth, rendendo più semplice la connessione e la comunicazione con dispositivi e servizi.

Header di espansione e connettori

Oltre ai connettori tradizionali dei GPIO (pensati per mantenere compatibilità con gli shield), UNO Q offre anche connettori ad alta velocità sul retro, utili per collegare display, camere o dispositivi audio.
È presente anche un connettore Qwiic, pensato per collegare in modo immediato sensori e attuatori I2C in modalità plug-and-play.

In aggiunta, la scheda include una matrice LED integrata, comoda per visualizzare messaggi o stati del sistema senza hardware esterno.

Pinout di Arduino UNO Q

La disposizione dei pin resta quella familiare dell’UNO: 14 I/O digitali (con 6 PWM), 6 ingressi analogici, i pin di alimentazione (3,3 V, 5 V, GND) e l’header ICSP. In più, trovi interfacce dedicate ad alta velocità come MIPI CSI/DSI per fotocamere e display, e il connettore Qwiic I2C per concatenare più sensori con facilità.

Sono inoltre presenti 4 LED RGB integrati: 2 gestibili dal lato MPU e 2 dal lato MCU.

Per tutti i dettagli conviene fare riferimento al PDF completo del pinout.

Primo test della scheda

Dato che la scheda può essere usata in modi diversi, un primo test rapido può includere sia microcontrollore sia microcomputer. In questo esempio si usa Arduino App Lab installato sul computer, con la scheda collegata via USB-C.

Per procedure alternative (accesso SSH, modalità rete, utilizzo come computer autonomo, ecc.) è consigliato consultare il Manuale Utente ufficiale di Arduino UNO Q.

Installare ed eseguire Arduino App Lab sul computer

  1. Aprite l’URL indicato e scarica Arduino App Lab sul vostro PC;

  1. avviate il programma di installazione;
  2. eseguite Arduino App Lab;
  3. collega Arduino UNO Q al computer con un cavo USB-C.

Se avete incertezze sui passaggi, la documentazione ufficiale include una guida dedicata all’installazione.

  1. Appena connettete la scheda al computer il sistema operativo e ambiente di sviluppo riconoscano la scheda, selezionate l’opzione USB.

  1. Le fasi successive permetteranno la configurazione e l’aggiornamento completo della scheda.

Selezione della lingua di sistema e del nome della scheda, potete selezionare un nome proposto oppure inserirne uno vostro a piacimento

Selezionare la vostra rete WiFi

Inserire la password WiFi

Verrà avviato la ricerca di aggiornamenti di sistema

L’aggiornamento può richiedere alcuni minuti

Al termine dell’aggiornamento vi verrà richiesto di riavviare App Lab

Al successivo avvio potrete selezionare la modalità di connessione: USB o WiFi, nell’esempio che segue ho selezionato USB

Viene avviato il controllo di eventuali aggiornamenti

Al primo avvio viene richiesto l’inserimento di una password di sistema

Enterete in App Lab.

L’app Blink LED

Per verificare rapidamente che tutto funzioni e per familiarizzare con App Lab, potete avviare l’esempio integrato Blink LED.

Nella colonna di sinistra aprite Examples e scegliete Blink LED.

A quel punto vedrete i file del progetto. Controllate che siano presenti:

  • una cartella python con il codice destinato all’MPU;
  • una cartella sketch con lo sketch Arduino per l’MCU.

Blink LED – Panoramica dell’app

Nel progetto è incluso un file README.md che descrive comportamento e logica dell’esempio. L’app, oltre a mostrare il controllo di un LED integrato lato MCU, dimostra anche il passaggio dati tra MPU e MCU:

  • un programma Python esegue un ciclo periodico che cambia lo stato del LED;
  • Router Bridge fa da collegamento tra Python e sketch Arduino;
  • Python invia lo stato allo sketch;
  • lo sketch riceve lo stato e pilota il LED integrato di conseguenza.

Aprendo main.py trovate il codice Python, mentre in sketch.ino trovate lo sketch Arduino.

Non entro nel dettaglio del funzionamento perché la spiegazione è già presente nel file  README.md.

Eseguire l’app

Per avviare l’esempio è sufficiente premere Run.

E’ possibile avviare in automatico allo startup l’applicazione attivando il selettore.

L’IDE compila e distribuisce il codice sulla scheda: può volerci qualche minuto. Durante l’avvio e l’esecuzione, l’interfaccia passa alla scheda Console, dove trovate:

  • l’avanzamento della fase App Launch,
  • il Serial Monitor,
  • la Python Shell.

In questo caso non vengono prodotte stampe sul monitor seriale o sulla shell, quindi resteranno vuoti.

Quando il programma è attivo, noterete il LED rosso integrato che lampeggia con periodicità di circa un secondo.

Con questa introduzione volevo offrire un quadro rapido di cosa rende speciale Arduino UNO Q. Per approfondire specifiche e procedure, la via migliore resta la documentazione ufficiale.

La combinazione tra microcontrollore e microcomputer apre possibilità interessanti per l’IoT: puoi mantenere la semplicità della gestione di sensori/attuatori sul lato MCU e, allo stesso tempo, usare Linux per compiti più pesanti come IA, web server complessi, servizi self-hosted (ad esempio database locali) e altre applicazioni avanzate.

Detto questo, per chi inizia da zero con microcontrollori e IoT, spesso è più efficace partire con una piattaforma più essenziale: una scheda Arduino “classica”, un ESP32 o un Raspberry Pi Pico aiutano a costruire le basi prima di passare a un sistema più articolato come UNO Q. In alternativa, si può usare UNO Q limitandosi alle funzioni dell’MCU e programmando con Arduino IDE; però, per progetti semplici di automazione, può risultare una scelta un po’ eccessiva.

Buon Making a tutti 🙂

5 pensieri su “Arduino UNO Q: guida introduttiva (caratteristiche, pinout, esempi)

  1. Ferdinando Triulzi

    Ottimo. Come sempre spiegazioni semplici, quindi capibili facilmente anche da principianti, come il sottoscritto, ma anche molto efficaci per comprendere il funzionamento.

    Rispondi
  2. Giovanni

    introduzione ottima. Mi mancano ancora alcune coordinate sulla programmazione:
    1) Un vecchio sketch arduino può essere avviato senza l’intervento di python su MPU linux?
    2) se si perché in ambiente IDE 2.x non funziona il serial monitor di MCU arduino ? così mi pare?
    3) un esempio led proposto in App-lab mostra come python comunica con lo sketch ino inviando lo stato, ma non è evidente come possa avvenire lo scambio tra ino e python, questo consentirebbe di usare il monitor di python per verificare il funzionamento dello sketch.
    La documentazione attuale mi sembra un po carente.
    Grazie

    Rispondi
    1. admin Autore articolo

      Grazie del commento e scusami se non ho risposto subito, ma anche io sono alle prese con le sperimentazioni e lo studio di Arduino Q, quindi ho dovuto documentarmi sulla documentazione ufficiale e sul forum, quindi “prendi per ora la mia risposta con le pinze”.

      La tua osservazione è centrata, perché su UNO Q il modello di programmazione è diverso da quello di un Arduino “classico”. Come dicevo nel post la scheda mette insieme due mondi: un MPU Qualcomm con Debian Linux e un MCU STM32U585 che esegue gli sketch Arduino; i due lati comunicano tramite Bridge/RPC. Arduino stessa distingue infatti due modalità: Arduino IDE 2.x, che programma solo il MCU, e Arduino App Lab, che gestisce applicazioni ibride con Python lato Linux + sketch lato MCU.

      Rispondo per punti

      1) Un vecchio sketch Arduino può essere avviato senza l’intervento di Python sul lato MPU Linux?

      Sì, in linea di principio sì, se lo sketch è pensato per girare solo sul microcontrollore e non dipende da servizi Linux, Bricks o chiamate Bridge. Dalla documentazione ufficiale leggo che con Arduino IDE 2.x su UNO Q si programma solo il MCU, mentre App Lab serve per il flusso ibrido Python + sketch. Quindi uno sketch “tradizionale” può essere usato senza Python, ma non è garantito che sia sempre un porting immediato: vanno verificati librerie e il modo in cui si gestisce la seriale/debug.

      2) Perché in IDE 2.x sembra non funzionare il Serial Monitor del MCU?
      Qui il punto importante è che su UNO Q Serial non va interpretato come sulla classica UNO R3. Dalla documentazione e da ciò che leggo sul forum, su UNO Q, l’oggetto Serial è associato alla UART hardware, cioè ai pin D0/D1, non al canale di monitoraggio nativo che molti si aspettano via USB. Infatti su manuale viene riportata la mappatura UART proprio sui pin Arduino D0/D1, e nel forum ufficiale Arduino è stato chiarito che, se si usa Serial, l’output atteso si vede collegandosi a quella UART, non necessariamente aprendo la porta nativa della board nel Serial Monitor dell’IDE.

      C’è poi un secondo aspetto pratico: quando un’App è in esecuzione in App Lab, Arduino avverte che le interfacce USB possono essere occupate dal sistema, quindi strumenti esterni via USB possono non comportarsi come previsto finché non si arresta l’App o si scollega la board.

      3) Come avviene davvero lo scambio tra sketch .ino e Python?
      Lo scambio non avviene tramite il vecchio paradigma “sketch + Serial Monitor” come sulle board classiche, ma tramite Bridge, cioè un livello RPC (Remote Procedure Call) tra Linux e microcontrollore. La documentazione ufficiale lo descrive come un’API orientata ai servizi: un lato può esporre funzioni, l’altro può chiamarle, e sono supportate anche notifiche asincrone. In pratica:

      – il lato MCU può esporre metodi verso Linux;
      – il lato Linux/Python può chiamarli;
      – l’MCU può anche inviare notifiche/eventi verso Linux.

      Per il debug in App Lab, Arduino introduce anche il passaggio “From Serial to Monitor”: nel manuale UNO Q viene spiegato che, per via dell’architettura della board, il classico Serial non è il canale corretto da aspettarsi nella Console di App Lab, e suggerisce di usare Monitor tramite la libreria Arduino_RouterBridge. Inoltre gli esempi ufficiali della libreria mostrano proprio Bridge.begin(), Monitor.begin(), Bridge.provide(…) e Bridge.notify(…)

      Porta pazienza se non sono stato molto preciso, ma come ti dicevo anche io sto studiando, spero di poter fornire risposte più accurate nel breve con esempi pratici.

      Grazie ancora.
      Saluti.

      Rispondi

Rispondi a Ferdinando Triulzi Annulla risposta

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.