Componente · Controller

Raspberry Pi

Il Raspberry Pi è un computer Linux completo, grande come una carta: il cervello dei robot che richiedono visione, ROS o elaborazioni che Arduino non gestisce.

Che cos’è

Il Raspberry Pi è un computer completo delle dimensioni di una carta di credito. Mentre un Arduino Uno è un microcontrollore che esegue per sempre un solo programma, un Pi esegue Linux e può quindi pilotare una telecamera, comunicare con la rete, eseguire ROS 2 e far girare contemporaneamente il codice del robot. È il cervello a cui ricorrere quando un robot deve pensare, non soltanto reagire.

Questa potenza è anche il suo compromesso: il multitasking di Linux rende il Pi meno adatto alla temporizzazione precisa al microsecondo che un microcontrollore ottiene senza alcuno sforzo. I due sono partner, non rivali.

Schema etichettato di un computer a scheda singola Raspberry Pi: una PCB verde con un header GPIO a 40 pin costituito da contatti dorati lungo il bordo superiore, un SoC Broadcom e un chip RAM al centro, un blocco impilato USB ed Ethernet sul bordo destro, HDMI e alimentazione USB-C sul bordo inferiore e uno slot per scheda microSD a sinistra.
Un Raspberry Pi racchiude un computer su una sola scheda: il SoC e la RAM eseguono Linux, l'header GPIO a 40 pin comunica con l'hardware del robot e la microSD contiene il sistema operativo. Scarica SVG

Come funziona

Il Pi avvia un sistema operativo, di solito Raspberry Pi OS, da una scheda microSD, poi si comporta come qualsiasi macchina Linux. Per la robotica, la parte importante è l’header GPIO a 40 pin: ingressi e uscite digitali, più i bus I²C, SPI e UART, che permettono al Pi di leggere sensori e comandare hardware. A tutto ciò si aggiungono le parti di computer — USB, Ethernet, Wi-Fi e interfaccia per telecamera — che un microcontrollore semplicemente non possiede.

Un’architettura comune è il robot a due cervelli: il Pi gestisce percezione e pianificazione (visione, SLAM, nodi ROS) e inoltra i comandi dei motori a un Arduino che esegue il controllo in tempo reale.

Quando usarlo

Scegli un Pi quando il robot necessita delle capacità di un computer:

  • Visione artificiale — una telecamera più OpenCV per rilevare marcatori, oggetti o linee.
  • ROS 2 — esecuzione di nodi, topic e stack di navigazione.
  • Mappatura / SLAM — costruzione di una mappa e localizzazione al suo interno.
  • Rete — cruscotto web, controllo remoto o telemetria.

Per attività puramente di controllo in tempo reale, resta con un Arduino o uno ESP32: sono più economici, più semplici e migliori per la temporizzazione precisa.

Cablaggio e aspetti critici

  • Logica a 3.3 V e non tollerante ai 5 V. Fornire 5 V a un pin GPIO può danneggiare il Pi. Trasforma il livello dei segnali provenienti da componenti a 5 V, per esempio la linea TX di un HC-05.
  • Non può comunque alimentare motori. Il GPIO pilota segnali; la corrente dei motori passa da un driver come L298N.
  • L’alimentazione è esigente. Fornisci 5 V stabili con corrente sufficiente: i cali di tensione corrompono la scheda SD e causano riavvii casuali.
  • Spegnilo in modo pulito. Sottrarre alimentazione a un sistema Linux in esecuzione può corrompere la scheda: progetta uno spegnimento sicuro oppure usa un file system in sola lettura.

L’header a 40 pin e quali pin si possono usare

L’header ha 40 pin, ma solo 26 sono utilizzabili come GPIO. Gli altri sono alimentazione e terra.

Funzione Pin (numerazione BCM) Note
I²C-1 GPIO 2 (SDA), GPIO 3 (SCL) Resistenze di pull-up fisse da 1.8 kΩ verso 3.3 V sulla scheda
SPI0 GPIO 10 (MOSI), 9 (MISO), 11 (SCLK), 8/7 (CE0/CE1)
UART GPIO 14 (TX), 15 (RX) Usato per impostazione predefinita dalla console Linux — deve essere liberato
PWM hardware GPIO 12, 13, 18, 19 Solo questi quattro; tutto il resto è PWM software
Alimentazione 3.3 V, 5 V I 5 V arrivano direttamente dall’ingresso, senza regolazione
Uso generale Tutti gli altri

Due di queste righe costano regolarmente una serata a molte persone.

L’UART è la console. Appena acceso, GPIO 14/15 trasportano una richiesta di login Linux. Se vi colleghi un modulo GPS o Arduino, riceverai rumore di login anziché dati. Liberali con sudo raspi-config → Interface Options → Serial Port → login shell: no, hardware serial: yes. Su Pi 3 e successivi c’è un’ulteriore complicazione: l’UART migliore è usato per impostazione predefinita da Bluetooth, mentre quello sull’header è una “mini UART” inferiore, la cui frequenza di baud deriva dal clock della CPU. Aggiungi dtoverlay=disable-bt a /boot/config.txt per scambiarli.

Il PWM software oscilla. Solo quattro pin hanno PWM hardware. Tutto il resto è generato dal kernel e lo scheduler Linux può interromperlo, il che su un servomotore si manifesta come scatti visibili. È l’illustrazione più chiara di ciò che il Pi fa male.

Il problema della temporizzazione, in modo diretto

Questa è la cosa più importante da capire su un Pi in un robot e non è un difetto: è il modo in cui funziona un sistema operativo.

Un microcontrollore che esegue loop() esegue il tuo codice e nient’altro, quindi un intervallo di 1 ms è 1 ms. Linux suddivide il tempo: il kernel può sottrarre tempo al processo per gestire un pacchetto di rete, svuotare una scrittura su disco o eseguire una qualsiasi tra cento attività in background.

Attività Microcontrollore Raspberry Pi (Linux standard)
Anello di controllo a 1 kHz Triviale, esatto Possibile, con occasionali ritardi su scala dei millisecondi
PWM per servomotori Perfettamente stabile Visibilmente instabile sui pin con PWM software
Lettura di un encoder a 20 kHz Ordinaria con gli interrupt Inaffidabile — alcuni fronti vengono persi
Temporizzazione dell’eco ultrasonoro Precisa al microsecondo Errori casuali di diversi centimetri
Visione, pianificazione, rete Impossibile Esattamente ciò per cui è progettato

La conseguenza è l’architettura a due cervelli, che non è un compromesso ma il normale progetto per un robot serio:

Raspberry Pi                        Microcontroller
- camera, vision                    - encoder counting
- SLAM, path planning       <-->    - PID motor control
- ROS 2 nodes                       - servo timing
- networking, dashboard             - emergency stop
        high-level goals                  hard real time

Comunicano tramite seriale USB, UART o I²C e ciascuno fa ciò per cui è più adatto. Un Pi che tenta di contare i fronti di un encoder li perderà; un Arduino che tenta di eseguire OpenCV non può.

Alimentazione e problema della scheda SD

L’alimentazione è il punto in cui falliscono i robot basati su Pi e la modalità di guasto è insolitamente costosa: un calo di tensione durante una scrittura corrompe la scheda SD e si perde l’intera immagine di sistema.

Modello Alimentatore consigliato Sotto carico
Pi Zero 2 W 5 V, 2.5 A ~350 mA tipici
Pi 3B+ 5 V, 2.5 A ~500 mA, picchi vicini a 1.2 A
Pi 4B 5 V, 3 A (USB-C) ~600 mA, picchi vicini a 1.5 A
Pi 5 5 V, 5 A (USB-C PD) Ancora superiori

Da ciò seguono queste regole:

  • Non alimentare mai motori e Pi dalla stessa linea. La corrente di spunto del motore è esattamente il transitorio che corrompe una scheda.
  • Usare un regolatore a commutazione, non lineare, quando si riduce la tensione di una batteria. Un regolatore lineare che porta 11.1 V a 5 V a 1 A dissipa 6 W.
  • Fare attenzione al fulmine. Il Pi mostra e registra un’icona di avviso per sottotensione; anche vcgencmd get_throttled la segnala. Un valore diverso da zero significa che l’alimentatore è inadeguato e prima o poi corromperà una scheda.
  • Spegnere in modo pulito. sudo shutdown -h now prima di togliere l’alimentazione. Un robot spento con un interruttore deve avere un pulsante di spegnimento collegato a un GPIO oppure un file system radice in sola lettura.

Per un robot impiegato sul campo, vale la pena valutare seriamente il file system in sola lettura: con overlayfs attivo, durante il funzionamento non viene mai scritto nulla sulla scheda e l’alimentazione può essere tolta in qualsiasi momento senza conseguenze. Si perde la possibilità di salvare dati localmente, che è solitamente un compromesso accettabile.

Quale modello scegliere per un robot

Modello RAM Perché sceglierlo
Pi Zero 2 W 512 MB Piccolo e leggero. Sufficiente per una telecamera e visione semplice
Pi 3B+ 1 GB Economico, adeguato a ROS 2 con nodi modesti
Pi 4B (4 GB) 4 GB Il punto pratico migliore per ROS 2 più visione
Pi 5 4–16 GB Notevolmente più veloce; richiede più alimentazione e raffreddamento attivo

Per ROS 2 con una telecamera, 4 GB è il punto in cui le cose smettono di essere frustranti. RViz, un nodo di visione e uno stack di navigazione insieme useranno più di 1 GB e un Pi che inizia a usare la scheda SD per lo swap diventa inutilizzabilmente lento, consumando anche la scheda.

Due accessori che in pratica non sono opzionali: un dissipatore o ventilatore (un Pi 4 sotto carico costante riduce la frequenza della CPU quando raggiunge gli 80 °C, e un Pi sotto limitazione termica perde fotogrammi) e una buona scheda microSD di classe A2 o, meglio, l’avvio da SSD USB. Il collo di bottiglia è la velocità della scheda molto più spesso della CPU.

Risoluzione dei problemi

Sintomo Causa probabile Soluzione
Riavvii casuali Alimentatore inadeguato Verifica vcgencmd get_throttled; usa un alimentatore da 3 A
La scheda SD si corrompe ripetutamente Alimentazione tolta durante la scrittura Spegnimento pulito oppure file system in sola lettura
Icona del fulmine Sottotensione Alimentatore e cavo migliori: contano anche i cavi
La porta seriale trasmette rumore di login La console è ancora sull’UART Disabilita la login shell in raspi-config
La frequenza di baud seriale è errata La mini UART è legata al clock della CPU Usa dtoverlay=disable-bt per ottenere l’UART migliore
Il servomotore scatta PWM software più scheduler Usa un PCA9685 oppure un microcontrollore
Il conteggio dell’encoder è errato Fronti persi sotto carico Contali su un microcontrollore
Diventa lento dopo qualche minuto Limitazione termica Dissipatore o ventilatore
Un pin GPIO ha smesso di funzionare 5 V applicati a un pin a 3.3 V Trasforma il livello; il pin è probabilmente danneggiato
Dispositivo I²C non rilevato Interfaccia non abilitata raspi-config, poi i2cdetect -y 1

Pi o microcontrollore?

Arduino / ESP32 Raspberry Pi
Esegue Solo il tuo codice Linux e il tuo codice tra molti processi
Temporizzazione Deterministica al microsecondo Miglior possibile, con instabilità su scala dei millisecondi
Tempo di avvio Istantaneo 20–30 secondi
Interruzione dell’alimentazione Inofensiva Può corrompere il file system
Visione, ROS 2, rete No Sì
Assorbimento Milliampere Da centinaia di milliampere ad ampere
Costo $3–8 $35–80

Il modo corretto di inquadrarlo è questo: non sono concorrenti. Un Pi non può contare in modo affidabile i fronti di un encoder e un microcontrollore non può eseguire OpenCV. Quasi ogni robot hobbistico capace finisce per usare entrambi e riconoscerlo fin dall’inizio evita di perdere tempo tentando di far svolgere a uno il lavoro dell’altro.

Se l’intero comportamento del robot rientra in un solo anello di controllo — un robot seguilinea, un robot che evita ostacoli, un risolutore di labirinto — non hai bisogno di un Pi; aggiungerlo rende il robot più lento ad avviarsi, più fragile e più difficile da eseguire il debug.

Esplora il grafo

Usato in queste costruzioni

Progetti, percorsi di apprendimento e simulatori che includono Raspberry Pi.

Confronto

Alternative

Domande

FAQ su Raspberry Pi

Che cos'è un Raspberry Pi?

Un Raspberry Pi è un piccolo computer a scheda singola a basso costo che esegue un sistema operativo Linux completo. A differenza di Arduino, che esegue un solo programma su un microcontrollore, un Pi è un vero computer e può eseguire contemporaneamente una telecamera, un browser, ROS e il codice del robot.

Raspberry Pi o Arduino — quale mi serve?

Usa Arduino per il controllo in tempo reale di motori e sensori; usa Raspberry Pi quando il robot richiede visione, mappatura, ROS o rete. Molti robot usano entrambi, con il Pi come cervello di alto livello e Arduino come mani in tempo reale. Il multitasking di Linux rende il Pi meno adatto, non più adatto, a temporizzazioni precise al microsecondo.

Un Raspberry Pi può controllare motori?

I pin GPIO possono inviare segnali PWM e di direzione, ma — come Arduino — non possono alimentare un motore da un pin. I motori devono ancora essere pilotati tramite un ponte H come L298N. Anche i pin del Pi sono a 3.3 V, quindi fai attenzione ai livelli logici quando colleghi componenti a 5 V.

Serve un Raspberry Pi per un robot?

No. La maggior parte dei robot per principianti (robot seguilinea, robot che evita ostacoli) funziona senza problemi con Arduino a una frazione di costo e complessità. Scegli un Pi solo quando l'attività richiede davvero un computer, quindi per visione artificiale, SLAM, esecuzione di ROS 2 o un'interfaccia web.

Quali modelli Raspberry Pi sono migliori per la robotica?

Raspberry Pi 4 e Pi 5 sono le scelte abituali, con CPU e RAM sufficienti per visione artificiale e ROS. Pi Zero 2 W è un'opzione minuta e a basso consumo per robot più leggeri, nei quali spazio e batteria contano più della velocità lorda. Evita i modelli più vecchi (Pi 1 e 2) per qualsiasi attività impegnativa.

Per approfondire

Fonti