🚀 Introduzione
Vuoi costruire un robot capace di seguire una linea nera in modo più stabile e preciso? 🤖➿
In questo progetto realizzerai un robot segue linea migliorato utilizzando Arduino UNO, due motori DC, un driver L298N e tre sensori infrarossi.
Rispetto a una versione base con due sensori, il sensore centrale permette ad Arduino di riconoscere meglio quando il robot si trova correttamente sopra la linea.
I tre sensori rileveranno:
Arduino correggerà continuamente la velocità dei due motori per mantenere il robot sul percorso.
👉 Il progetto introduce una forma semplice di controllo proporzionale, utile per ottenere movimenti più fluidi e ridurre le sterzate brusche.
Vuoi costruire un robot capace di seguire una linea nera in modo più stabile e preciso? 🤖➿
In questo progetto realizzerai un robot segue linea migliorato utilizzando Arduino UNO, due motori DC, un driver L298N e tre sensori infrarossi.
Rispetto a una versione base con due sensori, il sensore centrale permette ad Arduino di riconoscere meglio quando il robot si trova correttamente sopra la linea.
I tre sensori rileveranno:
- lato sinistro;
- centro;
- lato destro.
Arduino correggerà continuamente la velocità dei due motori per mantenere il robot sul percorso.
👉 Il progetto introduce una forma semplice di controllo proporzionale, utile per ottenere movimenti più fluidi e ridurre le sterzate brusche.
🎯 Cosa realizzerai
Con Arduino creerai un robot che:
Con Arduino creerai un robot che:
- 🤖 segue una linea nera;
- 👁️ utilizza tre sensori IR;
- ⬆️ procede diritto quando è centrato;
- ↩️ corregge verso sinistra;
- ↪️ corregge verso destra;
- 🔄 affronta curve più strette;
- 🔍 cerca la linea quando la perde;
- 🎚️ modifica la velocità dei motori;
- 🔘 permette di avviare e fermare il robot;
- ✅ utilizza codice compatibile con Arduino UNO.
🧰 Materiale necessario
- 1x Arduino UNO;
- 1x telaio robot a due ruote;
- 2x motori DC con riduttore;
- 2x ruote;
- 1x ruota libera;
- 1x modulo driver L298N;
- 3x sensori IR segui-linea digitali;
- 1x pulsante;
- 1x LED di stato;
- 1x resistenza da 220 Ω;
- 1x portabatterie adatto ai motori;
- cavetti jumper;
- distanziali e viti;
- nastro nero;
- superficie bianca;
- cavo USB.
🛒 Non hai ancora i componenti?
Molti dei progetti presenti su progettiarduino.com utilizzano componenti elettronici di base come LED, resistenze, sensori e breadboard.
Se stai iniziando con Arduino, il modo più semplice è utilizzare un kit completo per principianti, che include quasi tutti i componenti necessari per realizzare molti dei progetti presenti sul sito.
👉 Kit Arduino consigliato:
ℹ️ Link di affiliazione Amazon: in qualità di Affiliato Amazon ricevo un guadagno dagli acquisti idonei, senza alcun costo aggiuntivo per te.
https://amzn.to/4b3dxjW
📘 Vuoi imparare Arduino passo dopo passo?
Se vuoi approfondire e realizzare progetti più completi, puoi dare un'occhiata anche ai miei libri dedicati ad Arduino.
All'interno troverai spiegazioni semplici, schemi chiari e molti progetti pratici pensati per chi parte da zero.
👉 Scopri i miei libri su Arduino:
ℹ️ Link di affiliazione Amazon: in qualità di Affiliato Amazon ricevo un guadagno dagli acquisti idonei, senza alcun costo aggiuntivo per te.
https://amzn.to/4rfzjXE
Molti dei progetti presenti su progettiarduino.com utilizzano componenti elettronici di base come LED, resistenze, sensori e breadboard.
Se stai iniziando con Arduino, il modo più semplice è utilizzare un kit completo per principianti, che include quasi tutti i componenti necessari per realizzare molti dei progetti presenti sul sito.
👉 Kit Arduino consigliato:
ℹ️ Link di affiliazione Amazon: in qualità di Affiliato Amazon ricevo un guadagno dagli acquisti idonei, senza alcun costo aggiuntivo per te.
https://amzn.to/4b3dxjW
📘 Vuoi imparare Arduino passo dopo passo?
Se vuoi approfondire e realizzare progetti più completi, puoi dare un'occhiata anche ai miei libri dedicati ad Arduino.
All'interno troverai spiegazioni semplici, schemi chiari e molti progetti pratici pensati per chi parte da zero.
👉 Scopri i miei libri su Arduino:
ℹ️ Link di affiliazione Amazon: in qualità di Affiliato Amazon ricevo un guadagno dagli acquisti idonei, senza alcun costo aggiuntivo per te.
https://amzn.to/4rfzjXE
📚 Librerie necessarie
Per questo progetto non servono librerie esterne.
Arduino utilizza direttamente:
Il codice può quindi essere compilato con una normale installazione dell’Arduino IDE.
Per questo progetto non servono librerie esterne.
Arduino utilizza direttamente:
- digitalRead();
- digitalWrite();
- analogWrite();
- millis().
Il codice può quindi essere compilato con una normale installazione dell’Arduino IDE.
🔌 Schema di collegamento
Sensore IR sinistro
Sensore IR centrale
Sensore IR destro
Driver L298N – Motore sinistro
Driver L298N – Motore destro
Pulsante AVVIO/STOP
LED di stato
Sensore IR sinistro
- VCC → 5V;
- GND → GND;
- OUT → pin digitale 2.
Sensore IR centrale
- VCC → 5V;
- GND → GND;
- OUT → pin digitale 3.
Sensore IR destro
- VCC → 5V;
- GND → GND;
- OUT → pin digitale 4.
Driver L298N – Motore sinistro
- ENA → pin PWM 5;
- IN1 → pin digitale 7;
- IN2 → pin digitale 8;
- OUT1 e OUT2 → motore sinistro.
Driver L298N – Motore destro
- ENB → pin PWM 6;
- IN3 → pin digitale 9;
- IN4 → pin digitale 10;
- OUT3 e OUT4 → motore destro.
Pulsante AVVIO/STOP
- un terminale → pin digitale 11;
- terminale opposto → GND.
LED di stato
- anodo → pin digitale 12 tramite resistenza da 220 Ω;
- catodo → GND.
⚠️ Alimentazione del robot
I motori non devono essere alimentati direttamente dai pin di Arduino.
Utilizza un pacco batterie compatibile con:
Collega insieme:
👉 Durante le prime prove tieni il robot sollevato, così potrai verificare il verso dei motori senza farlo partire improvvisamente.
I motori non devono essere alimentati direttamente dai pin di Arduino.
Utilizza un pacco batterie compatibile con:
- tensione nominale dei motori;
- corrente richiesta;
- limiti del driver L298N.
Collega insieme:
- GND del pacco batterie;
- GND del driver L298N;
- GND di Arduino.
👉 Durante le prime prove tieni il robot sollevato, così potrai verificare il verso dei motori senza farlo partire improvvisamente.
💻 Codice Arduino
Il programma legge i tre sensori e assegna un comportamento a ogni combinazione.
Esempi:
Il programma legge i tre sensori e assegna un comportamento a ogni combinazione.
Esempi:
- solo sensore centrale sulla linea → avanti;
- sinistro e centrale sulla linea → correzione a sinistra;
- destro e centrale sulla linea → correzione a destra;
- solo sinistro sulla linea → curva stretta a sinistra;
- solo destro sulla linea → curva stretta a destra;
- nessun sensore sulla linea → ricerca della linea.
⚙️ Come funziona
I sensori IR illuminano il pavimento con luce infrarossa.
Una superficie chiara riflette più luce.
Una linea nera ne riflette meno.
L’uscita digitale del modulo cambia stato quando il sensore passa dalla superficie chiara alla linea scura.
Molti moduli restituiscono:
Il codice è configurato per questo comportamento.
👉 Se i tuoi sensori restituiscono valori opposti, puoi modificare una sola costante nel programma.
I sensori IR illuminano il pavimento con luce infrarossa.
Una superficie chiara riflette più luce.
Una linea nera ne riflette meno.
L’uscita digitale del modulo cambia stato quando il sensore passa dalla superficie chiara alla linea scura.
Molti moduli restituiscono:
- LOW sulla linea nera;
- HIGH sul fondo bianco.
Il codice è configurato per questo comportamento.
👉 Se i tuoi sensori restituiscono valori opposti, puoi modificare una sola costante nel programma.
👁️ Disposizione dei sensori
I tre sensori devono essere montati nella parte anteriore del robot.
La disposizione consigliata è:
Il sensore centrale deve trovarsi sopra la linea quando il robot è perfettamente allineato.
I sensori laterali devono essere abbastanza vicini da rilevare rapidamente una deviazione, ma non così vicini da leggere tutti contemporaneamente la stessa zona.
I tre sensori devono essere montati nella parte anteriore del robot.
La disposizione consigliata è:
- sensore sinistro;
- sensore centrale;
- sensore destro.
Il sensore centrale deve trovarsi sopra la linea quando il robot è perfettamente allineato.
I sensori laterali devono essere abbastanza vicini da rilevare rapidamente una deviazione, ma non così vicini da leggere tutti contemporaneamente la stessa zona.
🔍 Recupero della linea
Se nessun sensore rileva la linea, il robot deve capire in quale direzione cercarla.
Il programma memorizza l’ultima correzione effettuata.
Se l’ultima deviazione era verso sinistra, il robot continua a cercare verso sinistra.
Se era verso destra, cerca verso destra.
👉 Questa memoria semplice migliora molto il recupero dopo curve strette o piccoli errori.
Se nessun sensore rileva la linea, il robot deve capire in quale direzione cercarla.
Il programma memorizza l’ultima correzione effettuata.
Se l’ultima deviazione era verso sinistra, il robot continua a cercare verso sinistra.
Se era verso destra, cerca verso destra.
👉 Questa memoria semplice migliora molto il recupero dopo curve strette o piccoli errori.
🎚️ Correzione proporzionale semplificata
Il progetto assegna un valore di errore alla posizione della linea:
La correzione viene calcolata moltiplicando l’errore per una costante:
correzione = errore * KP;
La velocità dei motori diventa:
motoreSinistro = velocitaBase + correzione;
motoreDestro = velocitaBase - correzione;
Questa tecnica rende le correzioni più progressive rispetto a semplici comandi fissi.
Il progetto assegna un valore di errore alla posizione della linea:
- linea molto a sinistra → errore negativo grande;
- linea leggermente a sinistra → errore negativo piccolo;
- linea al centro → errore zero;
- linea leggermente a destra → errore positivo piccolo;
- linea molto a destra → errore positivo grande.
La correzione viene calcolata moltiplicando l’errore per una costante:
correzione = errore * KP;
La velocità dei motori diventa:
motoreSinistro = velocitaBase + correzione;
motoreDestro = velocitaBase - correzione;
Questa tecnica rende le correzioni più progressive rispetto a semplici comandi fissi.
⚠️ Taratura dei sensori
Molti moduli IR possiedono un piccolo potenziometro.
Per regolarli:
I tre moduli devono reagire in modo simile.
Molti moduli IR possiedono un piccolo potenziometro.
Per regolarli:
- posiziona il sensore sopra il fondo bianco;
- osserva il LED del modulo;
- spostalo sopra la linea nera;
- ruota il potenziometro finché lo stato cambia chiaramente;
- ripeti per tutti e tre i sensori.
I tre moduli devono reagire in modo simile.
🧪 Preparazione della pista
Per creare una pista semplice puoi utilizzare:
Evita:
Inizia con un ovale semplice e amplia gradualmente la difficoltà.
Per creare una pista semplice puoi utilizzare:
- cartone bianco;
- pannello chiaro;
- nastro isolante nero largo circa 18–25 mm.
Evita:
- superfici lucide;
- luce solare diretta;
- curve troppo strette;
- incroci nelle prime prove.
Inizia con un ovale semplice e amplia gradualmente la difficoltà.
⚠️ Il robot oscilla continuamente
Se il robot si sposta rapidamente a destra e sinistra:
⚠️ Il robot reagisce troppo lentamente
Se il robot esce dalla pista prima di correggere:
Se il robot si sposta rapidamente a destra e sinistra:
- riduci KP;
- riduci la velocità base;
- avvicina leggermente i sensori;
- controlla la taratura;
- aumenta il numero di letture del filtro.
⚠️ Il robot reagisce troppo lentamente
Se il robot esce dalla pista prima di correggere:
- aumenta leggermente KP;
- riduci la distanza tra sensori e pavimento;
- aumenta la velocità di correzione;
- riduci la velocità base;
- controlla che i sensori laterali siano ben posizionati.
🧠 Perché è un progetto importante
Con questo progetto impari a:
Con questo progetto impari a:
- utilizzare tre sensori IR;
- controllare due motori DC;
- pilotare un driver L298N;
- riconoscere la posizione di una linea;
- creare una correzione proporzionale;
- memorizzare l’ultima direzione;
- recuperare una linea persa;
- filtrare ingressi digitali;
- gestire un pulsante di arresto;
- sviluppare codice compatibile con Arduino UNO.
🔄 Varianti possibili
Vuoi migliorare il progetto?
Vuoi migliorare il progetto?
- 👁️ utilizza cinque sensori IR;
- 🧠 aggiungi un controllo PD;
- 🎛️ regola la velocità con un potenziometro;
- 📟 mostra errore e velocità su LCD;
- 🔔 aggiungi un buzzer quando perde la linea;
- 💾 salva i parametri nella EEPROM;
- 🔋 monitora la batteria;
- 🚦 riconosci zone di arresto;
- 🔀 gestisci incroci e bivi;
- ⏱️ crea un cronometro per il giro;
- 🛞 aggiungi encoder alle ruote;
- 🏁 realizza una pista da competizione.