Costruisci un'auto robot col telefono via Bluetooth o Wi-Fi
Un'auto robot che guidi dal telefono via Bluetooth o Wi-Fi, che si ferma da solo appena il collegamento si perde invece di allontanarsi senza controllo.
Cosa stai costruendo
Un’auto robot che guidi dal telefono — via Bluetooth con un HC-05, oppure via Wi-Fi con un ESP32 che serve la propria pagina di controllo.
È il robot più accessibile di questo sito: nessuna teoria del controllo, nessun algoritmo da mettere a punto correttamente e modalità di guasto visibili anziché matematiche. È anche quello che insegna una lezione necessaria a ogni altro robot — cosa fare quando smetti di avere il controllo.
Le due radio
| HC-05 (Bluetooth) | ESP32 (Wi-Fi) | |
|---|---|---|
| Hardware aggiuntivo | Un modulo, più un divisore su RX | Nessuno — la radio è sul controllore |
| Sul telefono | Un’app seriale Bluetooth | Qualsiasi browser |
| Portata | Circa 10 m | 30 m+ all’aperto |
| Il telefono mantiene Internet | Sì | No, in modalità punto di accesso |
| Ideale per | Una prima costruzione wireless | Qualsiasi cosa tu voglia affidare a qualcun altro |
Nessuna delle due è sbagliata. L’HC-05 è la via più breve per ottenere un robot che si muove; l’ESP32 offre un’esperienza migliore una volta funzionante, perché «collegati a questa rete Wi-Fi e apri un browser» non richiede spiegazioni.
Elenco dei componenti
Due soluzioni, e ti serve soltanto una. Costruisci la versione Bluetooth se possiedi già un Arduino; costruisci la versione Wi-Fi se oggi stai acquistando i componenti.
| Componente | Soluzione Bluetooth | Soluzione Wi-Fi | Costo approssimativo |
|---|---|---|---|
| Controllore | Arduino Uno | ESP32 | $5–8 |
| Radio | Modulo HC-05 | Integrata | $4 / $0 |
| Adattamento dei livelli | 1 kΩ + 2 kΩ sull’RX del modulo | Necessario su qualsiasi ingresso sensore a 5 V | $0.10 |
| Driver dei motori | 1 | 1 | $2–4 |
| Motoriduttore TT | 2 | 2 | $4 |
| Telaio 2WD | 1 | 1 | $6–10 |
| Pacco batteria | 1 | 1 | $6 |
| App sul telefono necessaria | Sì — un terminale seriale Bluetooth | No — qualsiasi browser | — |
Totale: circa $25–35 in entrambi i casi.
La differenza decisiva non è il costo, è l’interfaccia di controllo. Un HC-05 fornisce un flusso di byte, quindi il telefono richiede un’app in grado di inviarli. Un ESP32 serve la propria pagina web, quindi al telefono basta un browser — il che significa che chiunque può guidare il robot aprendo un URL, senza installare nulla. Per un robot che vuoi affidare a qualcun altro, è una differenza enorme senza alcun costo aggiuntivo.
La soluzione Bluetooth si guadagna il posto quando possiedi già un Arduino oppure quando desideri il collegamento più semplice possibile, senza coinvolgere alcun concetto di rete. Un byte in ingresso, un byte in uscita.
Ordine di costruzione
1 — Fai in modo che si muova su un banco. Motori, driver, batteria, ruote sollevate da terra, nessuna radio. Segui controllo dei motori DC con PWM e verifica avanti, indietro e ciascuna svolta con comandi scritti direttamente nel codice. Eseguire contemporaneamente il debug di una radio e di un driver dei motori è il modo migliore per far sparire un pomeriggio.
2 — Aggiungi la radio e l’eco. Collega l’HC-05 o avvia il punto di accesso dell’ESP32 e fai circolare testo in entrambe le direzioni prima di collegarlo a qualsiasi cosa che giri.
3 — Uniscile con un protocollo. Una lettera più un valore, terminati da un carattere di nuova riga. Leggi fino al terminatore anziché agire su ogni byte, perché «sono arrivati alcuni byte» non equivale a «è arrivato il messaggio».
4 — Rendilo sicuro in caso di guasto. È il passo che le persone saltano, ed è quello che conta.
Il timeout di sicurezza
Un robot wireless continua a eseguire l’ultimo comando che gli hai impartito. Se era «avanti a tutta velocità» e tu hai appena superato la portata, il robot non si ferma — prosegue.
La soluzione ha due metà ed entrambe sono necessarie:
- Il controllore ripete. Il telefono invia il comando premuto ogni 100 ms, non una sola volta alla pressione.
- Il robot lo si aspetta. Se non è arrivato nulla per circa 400 ms, fermati.
if (millis() - lastCommandAt > 400) stop();
Ora il rilascio di un pulsante, un’app chiusa, la batteria scarica del telefono e l’uscita dalla portata producono tutti lo stesso esito. Non dipendi mai da un messaggio di arresto che potrebbe non essere mai inviato.
Per questo usa millis() anziché delay(). Un delay(200) in qualsiasi punto del ciclo è 200 ms durante i quali il robot non legge né controlla nulla.
Note hardware
Fornisci alla radio un’alimentazione pulita. Entrambi i moduli assorbono corrente a picchi improvvisi durante la trasmissione. Condividere con i motori una linea di alimentazione instabile causa riavvii che sembrano esattamente arresti anomali del software — il robot smette di rispondere mentre si muove e si riattiva un secondo dopo. Alimenta i motori dal pacco batteria tramite il driver e mantieni separata l’alimentazione della logica.
Fai attenzione ai pin a 3.3 V. L’RX dell’HC-05 e ogni GPIO dell’ESP32 sono componenti a 3.3 V. Un Arduino a 5 V che trasmette verso di essi richiede un divisore. Il danno è graduale e parziale, ed è questo che lo rende difficile da diagnosticare.
Un L298N va bene qui. La sua caduta di tensione conta su un robot che insegue una linea ad alta velocità; su un’auto guidata manualmente basta compensarla con l’acceleratore, quindi il driver più economico e diffuso è la scelta sensata.
Come appare un risultato buono
| Misura | Bluetooth (HC-05) | Wi-Fi (ESP32) |
|---|---|---|
| Latenza dei comandi | 20–60 ms | 30–100 ms su una rete locale |
| Portata in linea di vista libera | ~10 m | ~50 m, o ovunque sulla rete |
| Portata attraverso una parete interna | 3–5 m | 15–25 m |
| Tempo fino al primo controllo dopo l’accensione | ~2 s dopo l’associazione | ~5 s per connettersi al Wi-Fi |
| Riconnessione dopo un’interruzione | Manuale, di solito | Automatica |
| Timeout di sicurezza che risulta adeguato | 300–500 ms | 300–500 ms |
Il timeout di sicurezza è il numero da regolare con attenzione ed è necessario per entrambe le radio. Se è troppo lungo, il robot continua a muoversi per un istante percepibile dopo la perdita del collegamento — che a 0.3 m/s e con un timeout di 1 s equivale a 30 cm di percorso non presidiato. Se è troppo corto, la normale variazione dei pacchetti ferma continuamente il robot, dando l’impressione che sia malfunzionante.
300–500 ms è l’intervallo utilizzabile per entrambe. Sotto circa 250 ms la normale variazione del Wi-Fi inizia a farlo scattare; sopra circa 700 ms un collegamento perso equivale chiaramente a una fuga incontrollata.
Come prosegue da qui
Lo strato dei comandi che hai costruito è indipendente da qualsiasi strato di comportamento ed è esattamente ciò che lo rende una buona base. Aggiungi un sensore ultrasonoro e il robot potrà rifiutare di avanzare verso un muro anche mentre tieni premuto avanti — l’inizio del robot che evita gli ostacoli.
Quella combinazione, un robot che puoi guidare e che può sovrascrivere i tuoi comandi, è anche il modo più semplice per sviluppare l’autonomia: puoi posizionare il robot esattamente dove si verifica un bug senza dover camminare fino a lì e sollevarlo.
Roadmap del progetto
Il percorso di costruzione
Segui l'albero tecnologico dai componenti fino a un robot funzionante. Ogni nodo si sblocca quando i suoi prerequisiti sono completati, e i tuoi progressi vengono salvati su questo dispositivo.
0 / 14 completati
Componenti
- ControllerArduino UnoLa scheda a 8 bit tollerante con cui la maggior parte delle persone scopre la robotica.
- ComunicazioneModulo Bluetooth HC-05Comunicazione seriale wireless via Bluetooth: guida un robot dal telefono con due pin.
- ControllerESP32Un microcontrollore a doppio nucleo con Wi-Fi e Bluetooth: il passo in avanti senza fili rispetto a Uno.
- DriverDriver del motore L298NIl doppio ponte H che trasforma deboli pin logici in potenza per i motori.
- AttuatoreMotore DC con ingranaggi (motore TT)Il motore giallo con ingranaggi che trasforma un telaio nudo in un'auto robot in movimento.
- TelaioTelaio robotico 2WDLa piattaforma su cui si montano due motori, un caster libero e tutta la tua elettronica.
- AlimentazionePacco batteria e alimentazione del robotLa differenza tra un robot che funziona e uno che continua a riavviarsi.
Tutorial in questo percorso
- Principiante · 1 oraControlla un robot via Bluetooth con un modulo HC-05Associa un HC-05 al telefono e guida un robot tramite la seriale Bluetooth, senza il classico errore dei 5 V.
- Intermedio · 1.5 oreControlla un robot dal browser con un server web ESP32Serve direttamente una pagina di controllo da un ESP32, così qualsiasi browser può controllare il robot — senza app.
- Principiante · 18 min di letturaControlla motori in corrente continua (DC) con PWM e un ponte HControlla in sicurezza un motore DC con spazzole usando PWM, un ponte H e limiti di corrente realistici.
- Principiante · 17 min di letturaMacchine a stati finiti per il comportamento del robotSostituisci i condizionali annidati del robot con stati, eventi, transizioni, timeout e ripristino espliciti.
Domande frequenti
Devo usare Bluetooth o Wi-Fi per un'auto robot?
Il Bluetooth con un HC-05 è più semplice da mettere in funzione e si associa una sola volta, ma richiede un'app di terminale seriale e la portata è di circa dieci metri. Un ESP32 via Wi-Fi non richiede alcuna app — serve la propria pagina di controllo a qualsiasi browser — e copre una distanza maggiore, ma il telefono perde la connessione a Internet mentre è connesso alla rete del robot. Per una prima costruzione, il Bluetooth è la via più breve; per qualsiasi cosa tu voglia dimostrare, la pagina di controllo dell'ESP32 senza app vale l'ora in più.
Perché il mio robot Bluetooth continua a muoversi dopo che ho rilasciato il pulsante?
Perché non ha mai ricevuto il rilascio. Un robot cablato si ferma quando rilasci; uno wireless continua a eseguire l'ultimo comando ricevuto. La soluzione è bilaterale: fai sì che il telefono ripeta il comando corrente ogni 100 ms mentre tieni premuto un pulsante e fai sì che il robot si fermi automaticamente se non riceve nulla per qualche centinaio di millisecondi. Così il rilascio di un pulsante e la perdita del segnale producono lo stesso esito sicuro e non dipendi mai da un messaggio di arresto che potrebbe non arrivare mai.
Posso danneggiare l'HC-05 collegandolo direttamente a un Arduino?
Sì, su un pin. La logica del modulo è a 3.3 V e il suo pin RX non tollera 5 V, quindi un Arduino che trasmette direttamente su quella linea sollecita proprio quel pin d'ingresso. Il fatto più frustrante è che il danno è solitamente parziale — il modulo si associa e trasmette ancora, ma corrompe in silenzio o ignora ciò che gli invii. Due resistenze come divisore di tensione su quella singola linea lo evitano.
Devo installare un'app per controllare il robot dal telefono?
Solo per il Bluetooth. Un HC-05 richiede sul telefono qualche terminale seriale Bluetooth per aprire la porta. Un ESP32 non richiede nulla: crea la propria rete Wi-Fi e serve una pagina HTML, quindi ti connetti e apri un browser. È l'argomento pratico più forte a favore dell'ESP32 su un robot che vuoi che altre persone possano guidare.
Un robot controllato dal telefono può anche muoversi da solo?
Sì, ed è il passo successivo naturale. Lo strato dei comandi che costruisci qui è separato dallo strato di comportamento, quindi aggiungere sensori permette al robot di sovrascrivere i tuoi comandi — rifiutando di avanzare verso un muro anche mentre tieni premuto avanti. Costruisci prima lo strato manuale: è molto più facile eseguire il debug di un sensore quando puoi posizionare il robot a mano dall'altra parte della stanza.