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.
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_throttledla 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 nowprima 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