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 144
Barriera automatica con servo e
​sensore a ultrasuoni

🚀 Introduzione
​

Vuoi realizzare una barriera automatica simile a quelle utilizzate nei parcheggi? 🚗🚧

In questo progetto utilizzerai Arduino UNO, un servomotore e un sensore a ultrasuoni HC-SR04 per creare una barriera che si apre automaticamente quando rileva un veicolo.

Dopo alcuni secondi, se l’area davanti alla barriera è libera, il servo riporterà lentamente l’asta nella posizione di chiusura.

Due LED mostreranno lo stato del sistema:
  • verde → passaggio aperto;
  • rosso → barriera chiusa.

Un pulsante permetterà inoltre di comandare manualmente l’apertura.
​
👉 Il movimento graduale del servo renderà l’apertura e la chiusura più realistiche rispetto a uno spostamento immediato.

🎯 Cosa realizzerai
​

Con Arduino creerai un sistema che:
  • 🚗 rileva un veicolo tramite HC-SR04;
  • 🚧 apre automaticamente una barriera;
  • ⚙️ controlla un servomotore;
  • ⏳ mantiene il passaggio aperto per alcuni secondi;
  • 🔒 richiude la barriera automaticamente;
  • 🛑 evita la chiusura quando è presente un ostacolo;
  • 🔘 permette l’apertura manuale;
  • 🟢 segnala il passaggio libero;
  • 🔴 segnala la barriera chiusa;
  • ✅ utilizza codice compatibile con Arduino UNO.

🧰 Materiale necessario
​
  • 1x Arduino UNO;
  • 1x servomotore SG90 o compatibile;
  • 1x sensore a ultrasuoni HC-SR04;
  • 1x pulsante;
  • 1x LED verde;
  • 1x LED rosso;
  • 2x resistenze da 220 Ω;
  • 1x alimentazione esterna da 5V per il servo, consigliata;
  • cavetti jumper;
  • breadboard;
  • asta leggera per simulare la barriera;
  • cavo USB.
​
Il pulsante utilizza la resistenza interna INPUT_PULLUP di Arduino.

🛒 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 utilizza la libreria:
  • Servo.
La libreria Servo è normalmente già inclusa nell’Arduino IDE.
​
Per verificarne la presenza:
  1. apri Arduino IDE;
  2. seleziona Sketch → Include Library;
  3. controlla che nell’elenco sia presente Servo.
​
Il sensore HC-SR04 viene gestito direttamente e non richiede librerie esterne.

🔌 Schema di collegamento
​

Servomotore SG90
Il servomotore possiede normalmente tre fili:
  • rosso → alimentazione 5V;
  • marrone o nero → GND;
  • arancione o giallo → pin digitale 9.
Il filo del segnale viene collegato al pin 9 di Arduino.

Sensore HC-SR04
  • VCC → 5V;
  • GND → GND;
  • TRIG → pin digitale 7;
  • ECHO → pin digitale 8.

Pulsante manuale
  • un terminale → pin digitale 2;
  • terminale opposto → GND.
Con INPUT_PULLUP, il pulsante premuto viene letto come LOW.

LED verde
  • anodo → pin digitale 4 tramite resistenza da 220 Ω;
  • catodo → GND.

LED rosso
  • anodo → pin digitale 5 tramite resistenza da 220 Ω;
  • catodo → GND.
⚠️ Alimentazione del servomotore
​

Un servomotore può assorbire più corrente di quella che il regolatore di Arduino riesce a fornire in modo stabile.

Per evitare:
  • riavvii di Arduino;
  • vibrazioni del servo;
  • movimenti irregolari;
  • surriscaldamento;
è consigliabile alimentare il servomotore con una sorgente esterna da 5V.
​
Collega insieme:
  • GND dell’alimentatore del servo;
  • GND del servomotore;
  • GND di Arduino.
​
👉 La massa comune è indispensabile per permettere ad Arduino di controllare correttamente il segnale del servo.
Foto

💻 Codice Arduino
​

Il programma utilizza quattro stati principali:
  • barriera chiusa;
  • apertura;
  • barriera aperta;
  • chiusura.

Quando il sensore rileva un oggetto entro la distanza impostata, Arduino avvia l’apertura.

Il servo non passa immediatamente da una posizione all’altra, ma modifica gradualmente il proprio angolo.

Quando la barriera è completamente aperta, Arduino attende alcuni secondi.

Se il sensore continua a rilevare un ostacolo, il tempo di attesa riparte.
​
La chiusura inizia soltanto quando il passaggio è libero.

    

⚙️ Come funziona

Il sensore HC-SR04 invia un impulso a ultrasuoni e misura il tempo necessario al segnale per tornare indietro.

La distanza viene calcolata attraverso:
distanza = durata / 58;

Quando la distanza è inferiore alla soglia configurata, la barriera viene aperta.

Nel progetto la soglia iniziale è:
const int DISTANZA_APERTURA = 25;

Puoi aumentarla o diminuirla in base alla posizione del sensore.

🚧 Posizioni del servomotore
​

Il codice utilizza due angoli:
const byte ANGOLO_CHIUSO = 10;
const byte ANGOLO_APERTO = 90;

L’angolo di 10° rappresenta la barriera abbassata.
L’angolo di 90° rappresenta la barriera sollevata.

Questi valori possono essere modificati in base al montaggio meccanico.
​
👉 Prima di collegare l’asta al servo, prova il movimento senza carico per verificare che il meccanismo non venga forzato.

🚀 Apertura graduale
​

Durante l’apertura, Arduino aumenta progressivamente l’angolo del servo.

Per esempio:
  • 10°;
  • 11°;
  • 12°;
  • fino a 90°.
Il tempo tra due piccoli movimenti è gestito tramite millis().

In questo modo il programma continua a leggere il pulsante e il sensore durante il movimento.

🔒 Chiusura graduale

Durante la chiusura il procedimento viene eseguito al contrario.

L’angolo diminuisce progressivamente fino alla posizione chiusa.

Prima di ogni movimento Arduino controlla la presenza di un ostacolo.
​
Se un oggetto viene rilevato durante la discesa:
  1. la chiusura viene interrotta;
  2. la barriera torna ad aprirsi;
  3. il tempo di attesa riparte.

⏳ Tempo di apertura

La barriera rimane aperta per cinque secondi:
const unsigned long TEMPO_APERTA = 5000;

Se il sensore rileva ancora un veicolo, il conteggio viene azzerato.

La barriera si chiude quindi soltanto dopo che l’area è rimasta libera per tutto il tempo previsto.

🔘 Apertura manuale

Il pulsante permette di comandare manualmente la barriera.

Quando la barriera è chiusa, una pressione avvia l’apertura.

Quando è aperta, una pressione può avviare la chiusura, purché non sia presente un ostacolo.
​
Durante la chiusura, premendo il pulsante la barriera torna ad aprirsi.

💡 Significato dei LED

LED rosso
Si accende quando la barriera è completamente chiusa.

LED verde
Si accende quando la barriera è completamente aperta.

Durante il movimento entrambi i LED rimangono spenti.
Puoi aggiungere successivamente un LED giallo lampeggiante per indicare apertura e chiusura.

⚠️ Limiti del progetto
​

Il sensore HC-SR04 può simulare il rilevamento di un veicolo, ma non è una fotocellula di sicurezza certificata.
​
Il progetto è pensato per:
  • modellini;
  • dimostrazioni;
  • piccoli prototipi;
  • esperimenti a bassa tensione.
​
👉 Non utilizzare questo circuito per controllare una vera barriera stradale o un accesso pubblico senza sensori e sistemi certificati.

🧠 Perché è un progetto importante
​

Con questo progetto impari a:
  • controllare un servomotore;
  • realizzare movimenti graduali;
  • utilizzare un sensore HC-SR04;
  • rilevare un ostacolo;
  • creare una macchina a stati;
  • gestire apertura e chiusura automatiche;
  • utilizzare un pulsante manuale;
  • controllare LED di stato;
  • usare millis() senza bloccare Arduino;
  • sviluppare codice compatibile con Arduino UNO.

🔄 Varianti possibili
​

Vuoi migliorare il progetto?
  • 🟡 aggiungi un LED lampeggiante durante il movimento;
  • 🔔 collega un buzzer;
  • 📟 aggiungi un display LCD;
  • 🔐 utilizza un lettore RFID;
  • 🚗 aggiungi un secondo sensore per l’uscita;
  • 🔢 conta i veicoli entrati;
  • 💾 salva il numero di accessi nella EEPROM;
  • ⏰ registra data e ora con RTC DS3231;
  • 📡 aggiungi un telecomando a infrarossi;
  • 📱 controlla la barriera tramite Bluetooth;
  • 🎛️ regola la distanza con un potenziometro;
  • 🔘 aggiungi un pulsante di emergenza.

Foto
Foto

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