Utente:Galessandroni/HC-SR04: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m Caption schema di montaggio
Prerequisiti, corretto codice e altro
Riga 1:
[[File:HC_SR04_Ultrasonic_sensor_1480322_3_4_HDR_Enhancer.jpg|miniatura|Il sensore a ultrasuoni HC-SR04]]
In questa risorsa viene illustrato come utilizzare il sensore a ultrasuoni HC-SR04 con Arduino per misurare distanze e - di conseguenza - individuarerilevare ostacoli.
 
QuestaQuest'ultima azione è moltoampiamente utilizzata nellanell'ambito della robotica, come è facile intuire, o - più semplicemente - nella sensoristica perquando è necessario individuare ostacoli, soprattutto per la prevenzione di infortuni. Se invece si vuole realizzare qualcosa di più articolato e canticchiare ''Il pipistrello come fa?'' (parafrasando una celebre canzone dello Zecchino d'oro), allora questo sarà il componente chiave.
 
Il sensore HC-SR04, nelle sue specifiche tecniche<ref>Elijah J. Morgan, [https://cdn.datasheetspdf.com/pdf-down/H/C/-/HC-SR04-ETC.pdf HCSR04 Ultrasonic Sensor], 16 Novembre 2014</ref>, dichiara di poter rilevare la presenza di un ostacolo sequando questo si trova tra 2 centimetri e 4 metri di distanza, con un margine di errore di 3 millimetri. Utilizza una frequenza di <math>40~\text{kHz}</math>, pertanto la sua lunghezza d'onda approssimativa è di poco inferiore al centimetro (l'ordine di grandezza degli oggetti che si intende individuare).
 
Infine, l'oggetto da individuare deve essere collocato in un angolo non superiore a <math>15~{}^\circ</math>, rispetto al suo asse.
 
= Prerequisiti =
[[File:Bat_bug_eco.svg|miniatura|Come un pipistrello procaccia il suo cibo]]
Di seguito verranno riproposti tutti i concetti di fisica che ''dovrebbero'' essere noti a uno studente (o ignoti, se questa esperienza venisse proposta nelle scuole primarie).
 
L'eco si verifica quando un suono incontra un oggetto di dimensioni simili alla sua lunghezza d'onda (simbolo <math>\lambda</math>). In questo caso, si ha:
 
<math>\lambda=\frac{c}{f}=\frac{343~\text{m/s}}{40~\text{kHz}}\simeq 8,58~\text{mm}</math>
 
Fortunatamente, tutto è molto più semplice. Questo approccio serviva soltanto per mostrare che non tutti gli oggetti saranno individuabili, che l'eco (quando si urla a una montagna) si verifica se sussistono determinate condizioni e... come fanno i pipistrelli a procacciarsi il cibo. La cosa più interessante è la distanza <math>d</math>, che si calcola come segue:
 
<math>d=c \cdot t</math>
 
dove <math>c</math> è la velocità del suono, che si considera costante, pari a <math>c=343~\text{m/s}</math>. Tuttavia Arduino non lavorerà utilizzando le unità di misura del [[Il sistema internazionale di unità di misura (superiori)|Sistema Internazionale]] ma, per il tempo, utilizzerà i microsecondi e (per nostro comodo) esprimeremo la distanza in centimetri.
 
Pertanto la velocità del suono diventa:
 
<math>c = 343~\text{m/s}=343~\text{m/s} \frac{10^2~\text{cm/m}}{10^6~\mu\text{s/s}}= 0,0343~\text{cm/}\mu\text{s}</math>
 
Quest'equivalenza è fondamentale per comprendere la linea 16 del codice
 
= Esperienza n. 1 =
Di seguito si supporrà la velocità del suono nell'aria costante, pertanto, avente velocità <math>c</math> pari a <math>c=343~\text{m/s}</math>. Questa è la velocità del suono a <math>20~{}^\circ\text{C}</math>.
 
Questo significa che, se si riesce a comprendere il codice, lo schema di montaggio è composto dal microcontrollore Arduino, dal sensore di prossimità HC-SR04 e - letteralmente - quattro fili. Naturalmente, nello schema di montaggio, l'alimentazione di Arduino è sottintesa, poiché l'output è mostrato nel calcolatore.
 
== Schema di montaggio ==
Line 20 ⟶ 39:
Il sensore deve essere alimentato e la sua alimentazione (<math>V_{cc}=5~\text{V}</math>, filo rosso, e <math>GND = 0~\text{V}</math>, filo nero) sono fornite da Arduino.
 
Il sensore ha altri due pedini, uno chiamato ''<code>trigger''</code>, al quale si invia un impulso per far partire l'impulso. Dopodiché vi è un secondo pedino, chiamato ''<code>echo''</code>, che restituisce il tempo impiegato dal segnale a raggiungere il bersaglio (e ritornare). Pertanto, nel calcolo della distanza, questo tempo andràdovrà essere diviso per 2.
 
== Codice ==
Di seguito il codice utilizzato per visualizzare nel monitor seriale la distanza degli oggetti localizzati dal sensore.
 
Da sottolineare che - per l'utilizzo di questo sensore - non è stato necessario includere nessuna libreria. È sufficiente stimare il tempo in cui <syntaxhighlightcode>echo</code> lang="si porta a livello alto. Per far questo viene utilizzata la funzione <code>pulseIn</code> che risponde esattamente a questo scopo.<ref>[https://www.arduino".cc/reference/it/language/functions/advanced-io/pulsein/ line="1"pulseIn], come da documentazione ufficiale di Arduino</ref>
<syntaxhighlight lang="arduino" line="1">
/*
CONTROLLO DEL SENSORE DI PROSSIMITA' HR-SC04
Line 40 ⟶ 60:
#define echo 3
 
// Definizione della velocita' del suono (centimetri / microsecondomicrosecondi)
#define c 0.0343
 
// Definizione delle variabili
unsigned long tempo;
float spazio;
 
Line 74 ⟶ 94:
// spazio viene visualizzata nel monitor seriale (Ctrl + Maius + M)
Serial.print("Distanza = ");
Serial.print(spazio, 1); // la variabile spazio viene approssimatoapprossimata alla prima cifra decimale
Serial.print(" cm\n");
 
Line 80 ⟶ 100:
}
</syntaxhighlight>
 
= Note =
<references />