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
ARCELI 5PCS HC-SR04 Sensore di trasduttore di misurazione della distanza del modulo ad ultrasuoni per Arduino
9,99 €CML-Modulo a Ultrasuoni Hc-Sr04 Distanza Trasduttore Di Misurazione Del Sensore Per Arduino
ELEGOO 5pcs HC-SR04 Modulo Sensore Misuratore Distanze Ad Ultrasuoni per MEGA R3 Robot XBee ZigBee Ultrasonic Module Sensor
Hailege 5pcs HC-SR04 Ultrasonic Distance Sensor Ultrasonic Sensor for Arduino UNO MEGA Nano 51/STM32
11,19 €EPLZON HC-SR04 Modulo sensore di distanza ad ultrasuoni adatto per Arduino UNO MEGA Nano Robot XBee ZigBee (confezione da 5 pezzi)
12,99 €Arduino UNO Rev3 [A000066]
Arduino UNO R4 WiFi [ABX00087] - Renesas RA4M1 / ESP32-S3 - Wi-Fi, Bluetooth, USB-C, CAN, DAC, OP AMP, connettore Qwiic, matrice LED 12x8
AZDelivery Scheda Microcontrollore con Cavo USB e con eBook
ELEGOO UNO R3 Board Scheda con Cavo USB Compatibile con i progetti IDE di Arduino Conforme alla direttiva RoHS
22,99 €Arduino UNO SMD REV3 [A000073]
HUAREW Breadboard kit con moduli di alimentazione, ponticelli, clip per batteria, 830 & 400 punti di ancoraggio breadboard
10,99 €AZDelivery 5 x MB-102 Mini Breadboard da 400 Pin con 4 Barre di Alimentazione compatibile con Arduino incluso un E-Book!
9,99 €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 €Aihasd 3 Pezzi Breadboard con 400 Punti Basetta Piastra Sperimentale 4 Barre di Alimentazione Senza Saldatura per Arduino Raspberry Pi
6,99 €ELEGOO 3pcs Breadboard con 830 Punti Senza Bisogno di Saldature Kit per Uno R3 Mega
11,99 €Il mio video
Approfondimenti
Se vuoi puoi clonare il progetto da GitHub cliccando qui.
Commentati Recentemente