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

Schema dei collegamenti

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



Il mio video


Se vuoi puoi clonare il progetto da GitHub cliccando qui.

Approfondimenti

Ricerche che hanno riportato a questa pagina:
%d blogger hanno fatto clic su Mi Piace per questo: