PROGETTI ARDUINO

  • HOME
  • 200 Progetti
  • Progetti e Tutorial
  • Reti
    • Impara le reti
    • internet fibra
    • wifi mesh
    • modem router
    • diagnostica reti
    • ethernet lan
    • sicurezza configurazione
  • Elettronica
  • Recensioni
  • Manuale
  • Contatti
  • HOME
  • 200 Progetti
  • Progetti e Tutorial
  • Reti
    • Impara le reti
    • internet fibra
    • wifi mesh
    • modem router
    • diagnostica reti
    • ethernet lan
    • sicurezza configurazione
  • Elettronica
  • Recensioni
  • Manuale
  • Contatti

Progetto 156
​Sistema di trasporto con sensori e Arduino

🚀 Introduzione
​

Dopo aver realizzato un carrello automatizzato controllato tramite tempi programmati, possiamo renderlo molto più preciso aggiungendo dei sensori capaci di riconoscere le diverse fermate del percorso.

In questo progetto costruirai un sistema di trasporto automatico con due stazioni, utilizzando Arduino UNO, due motori DC, un driver L298N e due sensori a infrarossi.

Il carrello partirà dalla stazione iniziale e procederà fino a quando il sensore anteriore rileverà il punto di arrivo.

Una volta raggiunta la seconda stazione:
  1. il carrello si fermerà;
  2. resterà in attesa per un tempo prestabilito;
  3. invertirà automaticamente la direzione;
  4. tornerà verso la stazione di partenza;
  5. si arresterà quando il secondo sensore rileverà il riferimento iniziale.

Rispetto al progetto precedente, la distanza non viene più determinata soltanto dal tempo di funzionamento dei motori.

I sensori permettono di riconoscere realmente le due estremità del percorso, rendendo il sistema più affidabile anche quando:
  • le batterie si scaricano;
  • il carrello trasporta un peso diverso;
  • le ruote slittano;
  • i motori non ruotano alla stessa velocità.
​
👉 Il progetto simula il funzionamento di un piccolo sistema di trasporto industriale automatico tra due postazioni.

🎯 Cosa realizzerai
​

Con Arduino costruirai un sistema capace di:
  • 🛒 trasportare automaticamente piccoli oggetti;
  • ⚙️ controllare due motori DC;
  • 📍 riconoscere due stazioni tramite sensori;
  • ▶️ avviare il ciclo con un pulsante;
  • ⏩ muoversi verso la stazione di arrivo;
  • ⏸️ fermarsi automaticamente;
  • ⏪ tornare alla stazione di partenza;
  • 💡 indicare la direzione tramite LED;
  • 🔔 segnalare l’arrivo con un buzzer;
  • 🛑 interrompere il movimento in caso di tempo massimo superato;
  • 🧠 gestire il ciclo tramite una macchina a stati;
  • ✅ utilizzare un 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;
  • 2x sensori a infrarossi digitali;
  • 2x riferimenti o ostacoli per indicare le stazioni;
  • 1x pulsante START;
  • 1x LED verde;
  • 1x LED giallo;
  • 1x LED rosso;
  • 3x resistenze da 220 Ω;
  • 1x buzzer attivo da 5V;
  • 1x portabatterie adatto ai motori;
  • 1x interruttore generale, consigliato;
  • breadboard;
  • cavetti jumper;
  • viti e distanziali;
  • cavo USB.

I sensori possono essere montati:
  • uno nella parte anteriore del carrello;
  • uno nella parte posteriore.
​
In alternativa, è possibile utilizzare due finecorsa meccanici montati alle estremità del telaio.

🛒 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
​

📚 Librerie necessarie
​

Il progetto non richiede librerie esterne.
Arduino controllerà direttamente:
  • il driver L298N;
  • i sensori digitali;
  • i LED;
  • il buzzer;
  • il pulsante START.

La sequenza verrà gestita utilizzando:
  • digitalRead();
  • digitalWrite();
  • analogWrite();
  • millis().
​
Il programma potrà quindi essere compilato direttamente con Arduino IDE.

🔌 Schema di collegamento
​

Driver L298N – Motore sinistro
  • ENA → pin PWM 5;
  • IN1 → pin digitale 8;
  • IN2 → pin digitale 9;
  • OUT1 e OUT2 → motore sinistro.
Rimuovi il ponticello ENA per permettere ad Arduino di regolare la velocità tramite PWM.

Driver L298N – Motore destro
  • ENB → pin PWM 6;
  • IN3 → pin digitale 10;
  • IN4 → pin digitale 11;
  • OUT3 e OUT4 → motore destro.
Rimuovi anche il ponticello ENB.

Sensore della stazione di arrivo
  • VCC → 5V;
  • GND → GND;
  • OUT → pin digitale 12.
Questo sensore deve essere montato nella parte anteriore del carrello.

Sensore della stazione di partenza
  • VCC → 5V;
  • GND → GND;
  • OUT → pin digitale 13.
Questo sensore deve essere montato nella parte posteriore del carrello.

Pulsante START
  • un terminale → pin digitale 2;
  • terminale opposto → GND.
Il pulsante utilizza INPUT_PULLUP.

LED verde – Movimento in avanti
  • anodo → pin digitale 3 tramite resistenza da 220 Ω;
  • catodo → GND.

LED giallo – Pausa alla stazione
  • anodo → pin digitale 4 tramite resistenza da 220 Ω;
  • catodo → GND.

LED rosso – Arresto o errore
  • anodo → pin analogico A0, utilizzato come uscita digitale, tramite resistenza da 220 Ω;
  • catodo → GND.

Buzzer attivo
  • terminale positivo → pin analogico A1, utilizzato come uscita digitale;
  • terminale negativo → GND.
Con un piccolo buzzer attivo a basso assorbimento è possibile effettuare il collegamento diretto.
Per buzzer più potenti utilizza un transistor di pilotaggio.
⚠️ Alimentazione
​

I motori DC devono essere alimentati tramite il driver L298N e non direttamente dai pin di Arduino.
Utilizza:
  • un pacco batterie adatto ai motori;
  • un’alimentazione stabile per Arduino;
  • una massa comune tra tutti i componenti.

Collega insieme:
  • GND di Arduino;
  • GND del driver L298N;
  • negativo del pacco batterie;
  • GND dei sensori;
  • GND dei LED;
  • GND del buzzer.
Non collegare il positivo del pacco batterie dei motori direttamente al pin 5V di Arduino.

Durante le prime prove è consigliabile alimentare:
  • Arduino tramite USB;
  • i motori tramite un pacco batterie separato.

I due circuiti devono condividere il collegamento GND.
​
Se i sensori producono letture instabili durante l’avvio dei motori, puoi aggiungere:
  • un condensatore da 100 nF sui terminali di ogni motore;
  • un condensatore elettrolitico vicino al driver;
  • cavetti più corti;
  • un’alimentazione separata e filtrata per i sensori.
Foto

💻 Codice Arduino
​

Il programma gestirà:
  • attesa del pulsante START;
  • movimento verso la stazione di arrivo;
  • rilevamento del sensore anteriore;
  • pausa automatica;
  • segnalazione acustica;
  • inversione dei motori;
  • ritorno verso la stazione iniziale;
  • rilevamento del sensore posteriore;
  • arresto finale;
  • tempo massimo di sicurezza;
  • LED di stato.

    

⚙️ Come funziona

All’accensione, Arduino mantiene il carrello fermo.
Il LED rosso indica che il sistema è in attesa.

Quando viene premuto il pulsante START, Arduino avvia il ciclo automatico.
Movimento verso la stazione di arrivoI due motori vengono comandati in avanti.

Durante questa fase:
  • il LED verde rimane acceso;
  • il LED giallo è spento;
  • il LED rosso è spento;
  • Arduino controlla continuamente il sensore anteriore.

Il carrello prosegue finché il sensore rileva il riferimento collocato presso la stazione di arrivo.

Il riferimento può essere:
  • una parete;
  • un pannello;
  • un piccolo ostacolo;
  • una superficie riflettente;
  • una bandierina fissata al percorso.

Arresto alla stazione

Quando il sensore anteriore viene attivato:
  • Arduino ferma immediatamente i motori;
  • il LED verde si spegne;
  • il LED giallo si accende;
  • il buzzer emette un breve segnale.
Il carrello rimane fermo per un intervallo programmato.

Questa pausa può simulare:
  • il carico di un oggetto;
  • lo scarico di materiale;
  • una lavorazione;
  • il controllo da parte di un operatore.

Ritorno alla stazione iniziale
​

Terminata la pausa, Arduino inverte il verso di rotazione dei motori.
Durante la retromarcia il carrello controlla continuamente il sensore posteriore.
Quando il sensore rileva il riferimento della stazione iniziale:
  • i motori vengono fermati;
  • il buzzer emette un secondo segnale;
  • il LED rosso si accende;
  • il sistema torna in attesa.
Una nuova pressione del pulsante avvia un altro ciclo completo.

🎚️ Regolazione della sensibilità
​

Molti sensori a infrarossi dispongono di un piccolo trimmer.
Ruotando il trimmer puoi modificare la distanza o la sensibilità di rilevamento.
​
Per effettuare la regolazione:
  1. alimenta il sensore;
  2. posiziona il riferimento alla distanza desiderata;
  3. ruota lentamente il trimmer;
  4. osserva il LED presente sul modulo;
  5. trova il punto in cui l’uscita cambia stato;
  6. ripeti la prova più volte.
​
Evita una sensibilità eccessiva, perché il sensore potrebbe rilevare oggetti esterni al percorso.

💡 Suggerimenti pratici
​
  • Prova ogni sensore separatamente prima di montarlo.
  • Regola la sensibilità con i motori spenti.
  • Monta i sensori in modo stabile.
  • Evita che le ruote o il telaio entrino nel campo di rilevamento.
  • Utilizza riferimenti larghi e ben visibili.
  • Posiziona il sensore anteriore al centro del carrello.
  • Posiziona il sensore posteriore alla stessa altezza.
  • Mantieni i cavi lontani dai motori.
  • Esegui le prime prove con velocità ridotta.
  • Verifica il funzionamento del tempo massimo.
  • Utilizza una superficie piana.
  • Installa un interruttore generale facilmente raggiungibile.
  • Fissa il carico al centro del telaio.
  • Regola separatamente la velocità dei due motori.
  • Lascia spazio sufficiente per la frenata.
  • Evita scale, bordi e oggetti fragili.

⚖️ Correzione della traiettoria

Se il carrello devia durante il movimento, imposta velocità diverse per i due motori.

Ad esempio:
const byte VELOCITA_SINISTRA = 175;
const byte VELOCITA_DESTRA = 165;


Riduci il valore del motore che gira più velocemente.
La regolazione deve essere eseguita sperimentalmente.

⚠️ Errori comuni

Il carrello non parte
Controlla:
  • pulsante START;
  • alimentazione;
  • massa comune;
  • collegamenti del driver;
  • stato delle batterie;
  • ponticelli ENA ed ENB;
  • pin definiti nel programma.

Il carrello non si ferma alla stazione
Le possibili cause sono:
  • sensore troppo lontano;
  • sensibilità regolata male;
  • riferimento troppo piccolo;
  • logica digitale invertita;
  • collegamento OUT errato;
  • sensore disturbato dalla luce;
  • velocità troppo elevata.

Il sensore rileva continuamente un ostacolo
Controlla che non stia rilevando:
  • il telaio;
  • una ruota;
  • un cavo;
  • il pavimento;
  • un supporto vicino.
Riduci la sensibilità o modifica l’inclinazione.

Il sistema entra subito in errore
Verifica:
  • tempo massimo impostato;
  • stato iniziale dei sensori;
  • logica HIGH o LOW;
  • collegamenti;
  • posizione del carrello.

Il carrello gira su sé stesso
Uno dei motori ruota nel verso sbagliato.
Inverti i fili del motore interessato oppure modifica la logica nel codice.

Arduino si riavvia
I motori stanno provocando un abbassamento della tensione o disturbi elettrici.
Utilizza alimentazioni separate, mantenendo la massa comune.

Il buzzer non suona
Controlla:
  • polarità;
  • tipo di buzzer;
  • pin utilizzato;
  • massa comune.
Un buzzer passivo deve essere controllato con tone(), mentre un buzzer attivo può essere acceso con un semplice livello HIGH.

Il carrello supera il riferimento
Riduci:
  • velocità;
  • peso;
  • distanza tra sensore e ostacolo.
Puoi inoltre anticipare il punto di rilevamento spostando il sensore più avanti.

🔄 Varianti possibili
​

Vuoi migliorare il progetto?
  • 🛑 sostituisci i sensori IR con finecorsa;
  • 📏 utilizza sensori a ultrasuoni;
  • 🛞 aggiungi encoder alle ruote;
  • ⬛ crea un percorso segui-linea;
  • 📦 aggiungi un sensore per verificare il carico;
  • ⚖️ integra una cella di carico;
  • 🔔 utilizza segnali acustici differenti;
  • 📟 mostra lo stato su un display LCD;
  • 🔋 controlla la tensione della batteria;
  • 🚨 aggiungi un pulsante di emergenza;
  • 🎛️ regola la velocità con un potenziometro;
  • 🏭 aggiungi più stazioni;
  • 🔢 visualizza il numero di cicli completati;
  • 💾 salva il conteggio nella EEPROM;
  • 📱 controlla il sistema tramite Bluetooth;
  • 🌐 invia lo stato tramite Wi-Fi;
  • 🧲 aggiungi un meccanismo di carico automatico;
  • 🔄 crea un ciclo continuo;
  • 🚚 trasforma il progetto in un piccolo AGV.

Foto
Foto

© ProgettiArduino.com 2026 - Fancello Salvatore
​ Layout, immagini e testi sono di esclusiva proprietà di www.progettiarduino.com 
Privacy Policy