Percorso di costruzionePrincipianteUn pomeriggio

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.

Schema tecnico: Costruisci un'auto robot col telefono via Bluetooth o Wi-FiCLEARANCE FIELD

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.

Un diagramma di temporizzazione. Una serie di impulsi di comando arriva ogni 100 millisecondi mentre un pulsante è premuto, poi si ferma su una linea tratteggiata contrassegnata come segnale perso. Sotto, una barra mostra che l'assenza di timeout resta rossa e il movimento fuori controllo prosegue indefinitamente dopo la perdita del segnale. Una seconda barra con un timeout di sicurezza di 400 millisecondi passa allo stato fermo poco dopo l'ultimo comando.
Il flusso dei comandi si ferma quando il collegamento si perde, non quando l'utente rilascia — ed è per questo che il robot deve scadere il timeout autonomamente. Scarica SVG

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.

Uno schema elettrico. Un Arduino Uno o Nano collega direttamente la propria linea TXD al pin D10 di un modulo HC-05, indicato come sicuro perché un'uscita a 3.3 volt viene letta come HIGH su un ingresso a 5 volt. Il percorso di ritorno dal pin D11 al pin RXD del modulo passa attraverso un divisore di tensione con resistenze da 2 kilohm e 3.3 kilohm, con un avvertimento che 5 volt applicati direttamente a RXD danneggiano parzialmente il modulo, che si associa ancora ma corrompe ciò che invii.
Tre dei quattro fili sono banali. Il quarto richiede un divisore, perché 5 V applicati all'RXD del modulo lo danneggiano lentamente anziché in modo evidente. Scarica SVG

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

100%
Costruzione

Rendilo sicuro in caso di guasto

Costruzione

Obiettivo

Guidalo dal telefono

Obiettivo

Componenti

Tutorial in questo percorso

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.