Come utilizzare il sensore ad ultrasuoni HC-SR04 con Arduino

Chi non more se rivede, dicono a Roma…
Periodo di esperimenti elettronici per adesso. Voglio parlarti del sensore HC-SR04 e del suo utilizzo con Arduino.
In maniera molto semplice ti spiego come funziona… In pratica questo simpatico sensore emette un impulso ad ultrasuoni e calcola il tempo impiegato dall’impulso per raggiungere il primo ostacolo di fronte a lui e tornare in dietro. Tutto questo avviene in frazioni di secondi, anzi per essere più precisi, le operazioni avvengono nell’ordine dei microsecondi.
Info tecniche
E’ bene dare qualche informazione tecnica sul sensore, ma se vuoi passare subito all’azione, salta questa parte e vai direttamente alla sezione “Schema dei collegamenti”.
Direttamente dai datasheet reperibili in rete ecco qualche info:
Volt di operazione DC-5V
Corrente di operazione 15mA
Frequenza di operazione 40Khz
Massima distanza percepita 4m
Minima distanza percepita 2cm
Angolo di misurazione 15 gradi
Input Trigger un segnale TTL alto di 10us
Output Echo un segnale TTL alto della durata proporzionale alla distanza percepita
Dimensioni 45x20x15mm
Questo tipo di sensore, può quindi essere utilizzato per creare dei sistemi di rivelazione di presenza, misurazione di distanze, consentire ai robot di evitare ostacoli…
Bene! Tornando allo scopo di questa piccola guida, vediamo come interfacciare il nostro HC-SR04 con Arduino
Schema dei collegamenti
Ho collegato i PIN Vcc e GND rispettivamente ai PIN +5 e GND di Arduino così da poter alimentare il sensore.
I PIN Trigger ed Echo, collegati ai PIN digitali 8 e 9 di Arduino.
Passiamo al codice…
Il codice
Il codice è ampiamente commentato al suo interno, quindi non mi va di riscrivere le stesse cose due volte 😉
//Definizione dei pin static int trigger = 8; static int echo = 9; //variabili utilizzate per calcolare la distanza long durata; //tempo che impieghera' il suono a percorrere una certa distanza long distanza; //la distanza che ha percorso il suono void setup() { //abilito la comunicaizone seriale per rendermi conto di cio' che accade Serial.begin(9600); //settiamo il funzionamento dei pin pinMode(trigger, OUTPUT); pinMode(echo, INPUT); //metto a LOW l'ingresso del PIN echo e del PIN trigger digitalWrite(echo, LOW); digitalWrite(trigger, LOW); //inizializzo le variabili durata = 0; distanza = 0; } void loop() { //Invio un impulso HIGH sul pin del trigger digitalWrite(trigger, HIGH); //lo lascio al valore HIGH per 10 microsecondi delayMicroseconds(10); //lo riporto allo stato LOW digitalWrite(trigger, LOW); //ottengo il numero di microsecondi per i quali il PIN echo e' rimasto allo stato HIGH //per fare questo utilizzo la funzione pulseIn() durata = pulseIn(echo, HIGH); // La velocita' del suono e' di 340 metri al secondo, o 29 microsecondi al centimetro. // il nostro impulso viaggia in andata e ritorno, quindi per calcoalre la distanza // tra il sensore e il nostro ostacolo occorre fare: distanza = durata / 29 / 2; //invio i dati alla porta seriale cosi' da poterli vedere con il Monitor Seriale Serial.print("Durata : "); Serial.print(durata); Serial.print(" - Distanza : "); Serial.println(distanza); }
A fine pagina trovi il link per scaricare il sorgente o per clonare l’intero progetto da GitHub, ma prima di andare…
- Assicurati che tutti i collegamenti siano corretti;
- Ricordati di impostare la porta COM del tuo Arduino;
- Imposta la stessa velocità seriale definita in Serial.begin(9600), nel Monitor Seriale
- E ricorda che io non mi assumo nessuna responsabilità per eventuali danni o disastri che causi 😀
…carica il codice su Arduino e scopriamo se funziona!
Prodotti Amazon
Aukru 3X ultrasuoni HC-SR04 Sensore modulo di prossimità (Distanza) per Raspberry Pi Arduino
5,98 €ARCELI 5PCS HC-SR04 Sensore di trasduttore di misurazione della distanza del modulo ad ultrasuoni per Arduino
7,99 €Ultrasonic Sensor, HC-SR04 Set of 5 Ultrasonic Distance Sensor Kits for Arduino UNO MEGA2560 Raspberry Pi, Dupont Jumper Wire Mounting Bracket EU042
13,90 €Sunfoundder HC-SR04 - 5 sensori a ultrasuoni e sensore di distanza per Arduino UNO, Mega2560, Nano, Roboter, XBee, ZigBee, Rapsberry Pi 3 B+, 2 & RPi Model B+
9,99 €Elegoo 5pcs HC-SR04 Modulo Sensore Misuratore Distanze Ad Ultrasuoni per MEGA2560 Robot XBee ZigBee Ultrasonic Module Sensor
Arduino Uno REV3 [A000066]
Elegoo UNO R3 Board Scheda ATmega328P ATMEGA16U2 con Cavo USB Compatibile con i progetti IDE di Arduino Conforme alla direttiva RoHS
10,99 €Arduino UNO SMD REV3 [A000073]
22,99 €AZDelivery Scheda Microcontrollore con Cavo USB e con eBook
9,49 €ARCELI USB Host Shield per Arduino UNO MEGA 2560 Supporto Google Android ADK USB HUB
10,99 €Elegoo Kit Elettronico con Breadboard di 830 Punti, Cavetti, Modulo Alimentazione, Potenziometri per Raspberry Pi Uno R3 MEGA2560
15,86 €Elegoo 3pcs MB-102 Breadboard con 830 Punti Senza Bisogno di Saldature Kit per Uno R3 Mega 2560
9,99 €AZDelivery MB-102 Breadboard Basette con 830 Contatti per Arduino e con eBook
5,99 €AZDelivery Breadboard Kit - Jumper Wire Cavetti Kit + 3 x Breadboard MB102 830 per Arduino con eBook
11,99 €AZDelivery 3 x Kit Breadboard MB 102 – Breadboard 830 + Adattatore 3,3V 5V + Set 65 pz Cavetti Jumper per Arduino con eBook
13,99 €Il mio video
HC-SR04 Esempio Utilizzo con Arduino
Se vuoi puoi clonare il progetto da GitHub cliccando qui.
Approfondimenti
- Serial.begin()
- pinMode()
- digitalWrite()
- delayMicroseconds()
- pulseIn()
- Serial.print()
- Serial.println()