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!
A fine pagina trovi il link per scaricare il pacchetto con codici e schemi di collegamento. Come sempre ti ricordo che acquistando prodotti Amazon passando attraverso i link del mio sito, io percepisco una piccola commissione (parliamo di centesimi) in buoni regalo. Questi buoni sommati alle eventuali donazioni PayPal, servono a mantenere attivo il sito web e ad acquistare nuovi componenti.
Prodotti Amazon
ELEGOO 5pcs HC-SR04 Modulo Sensore Misuratore Distanze Ad Ultrasuoni per MEGA R3 Robot XBee ZigBee Ultrasonic Module Sensor
Aihasd 3PCS 4 Pin ultrasonica del modulo HC-SR04 sensore di misurazione della Distanza
7,99 €ARCELI 5PCS Sensore di trasduttore di misurazione della Distanza del modulo ad ultrasuoni per Arduino
6,99 €AZDelivery Sensore Telematico a Ultrasuoni Modulo compatibile con HC-SR04 Misuratore Distanza a Basso Consumo Energetico compatibile con Arduino e Raspberry Pi incluso un E-Book!
7,49 €8 moduli ad ultrasuoni compatibili con HC-SR04, sensore di distanza modulo ultrasonico, supporta 3.3-5 V per Arduino UNO, robot, XBee, ZigBee, ecc.
13,21 €Arduino UNO R4 WiFi [ABX00087] - Scheda di Sviluppo con microcontrollore Arm Cortex-M4 e WiFi Integrato, Ideale per progetti IoT, automazione e Applicazioni connesse IDE.
ELEGOO UNO R3 Advanced Starter Kit per progetti per Principianti con Kit di apprendimento Italiano Compatibile con i progetti IDE di Arduino
AZDelivery Scheda Microcontrollore con Cavo USB e con eBook
13,99 €Arduino Uno Rev3 SMD [A000073] - Scheda di Sviluppo con microcontrollore ATmega328P, Versione SMD, Ideale per progetti elettronici, robotica, automazione e Applicazioni Fai da Te IDE.
27,80 €Arduino UNO R4 Minima [ABX00080] - Scheda di Sviluppo con microcontrollore Arm Cortex-M4, Ideale per progetti IoT, automazione e Applicazioni con IDE
BOJACK Breadboard Kit Breadboard senza Saldatura 2 Pcs 830 Punti & 2 Pcs 400 Punti & 126 Pcs Flessibili Breadboard Ponticelli Breadboard Jumper Wire Set (3 Valori 130 Pezzi)
13,99 €GTIWUNG Basetta Piastra Sperimentale Breadboard Kit, 2 Pezzi 400 & 830 Punti Mini Breadboard + 6 Pezzi Cavetti Jumper Filo Multicolore Wire (Maschio a Femmina, Maschio a Maschio, Femmina a Femmina)
12,99 €VISSQH 830 punti Breadboard,senza saldatura Breadboard Breadboard Kit con cavo jumper wire,adattatore di alimentazione,cavo DC,per test elettronici fai da te Mini Breadboard
7,99 €AZDelivery MB-102 Mini Breadboard da 400 Pin con 4 Barre di Alimentazione compatibile con Arduino incluso un E-Book!
6,99 €AYWHP 6 mini breadboard kit 170 punti (6 colori) + 1 scheda 400 punti + 1 breadboard 830 punti senza saldatura + 65 ponticelli flessibili, elettronica compatibile con Arduino, progetti fai da te
9,99 €Il mio video
Approfondimenti
Se vuoi puoi clonare il progetto da GitHub cliccando qui.
Commentati Recentemente