Progetto 5 Sensore Ultrasonico

1.Descrizione

image-20250509085643931

Il sensore ultrasonico HC-SR04 utilizza il sonar per determinare la distanza da un oggetto, come fanno i pipistrelli. Offre un’eccellente rilevazione della distanza senza contatto con alta precisione e letture stabili in un pacchetto facile da usare. È completo di moduli trasmettitore e ricevitore ultrasonici.

Img

L’HC-SR04 o sensore ultrasonico viene utilizzato in una vasta gamma di progetti elettronici per creare applicazioni di rilevamento ostacoli e misurazione della distanza, oltre a varie altre applicazioni. Qui abbiamo presentato un metodo semplice per misurare la distanza con Arduino e un sensore ultrasonico e come utilizzare il sensore ultrasonico con Arduino.

2.Specifiche

  • Tensione di funzionamento : +5V DC

  • Corrente a riposo : <2mA

  • Corrente di funzionamento: 15mA

  • Angolo efficace: <15°

  • Intervallo di distanza : 2cm – 300 cm

  • Precisione : 0.3 cm

  • Angolo di misurazione: 30 gradi

  • Larghezza impulso di ingresso Trigger: 10uS

image-20250509085705309

3.Componenti

Scheda di sviluppo *1

Driver motore 8833 *1

Modulo LED Rosso*1

Sensore Ultrasonico*1

img

img

img

image-20250509085643931

Cavo Dupont 4P*1

Cavo USB*1

Cavo Dupont 3P*1

image-20250509143737972

img

img

4.Principio di funzionamento

Come mostrato nell’immagine sopra, è come due occhi. Uno è il trasmettitore, l’altro è il ricevitore.

Il modulo ultrasonico emetterà onde ultrasoniche dopo aver ricevuto un segnale di trigger. Quando le onde ultrasoniche incontrano un oggetto e vengono riflesse, il modulo emette un segnale di eco, così può determinare la distanza dell’oggetto dal tempo di differenza tra il segnale di trigger e il segnale di eco.

t è il tempo che il segnale emesso impiega per incontrare l’ostacolo e tornare indietro. La velocità di propagazione del suono nell’aria è circa 343m/s, e distanza = velocità * tempo. Tuttavia, l’onda ultrasonica viene emessa e torna indietro, quindi percorre 2 volte la distanza. Pertanto, deve essere divisa per 2, la distanza misurata dall’onda ultrasonica = (velocità * tempo)/2.

Metodo d’uso e diagramma del modulo ultrasonico:

  1. Usa il pin GPIO per fornire un segnale alto di almeno 10μs al pin Trig dell’SR04, che può attivarlo per rilevare la distanza.

  2. Dopo il trigger, il modulo invierà automaticamente otto impulsi ultrasonici a 40KHz e rileverà se c’è un segnale di ritorno. Questo passaggio sarà completato automaticamente dal modulo.

  3. Se il segnale ritorna, il pin Echo emetterà un livello alto, e la durata del livello alto è il tempo dal trasmissione dell’onda ultrasonica al ritorno.

image-20250509143833078

Schema elettrico del sensore ultrasonico:

image-20250509154035287

5.Diagramma di collegamento

image-20250509154107103

VCC, Trig, Echo e Gnd del sensore ultrasonico sono collegati rispettivamente a 5V(V), D12, D13 e Gnd(G)

6.Codice di test

//***************************************************************************
/*
 keyestudio 4wd BT Car
 lesson 5.1
 Ultrasonic Sensor
 http://www.keyestudio.com
*/ 
int trigPin = 12;    // Trigger
int echoPin = 13;    // Echo
long duration, cm, inches;
void setup() {
  //Inizio porta seriale
  Serial.begin (9600);
  //Definisci ingressi e uscite
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
}

```c
void loop() {
  // Il sensore viene attivato da un impulso HIGH di 10 o più microsecondi.
  // Fornire un breve impulso LOW prima per garantire un impulso HIGH pulito:
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
   // Leggi il segnale dal sensore: un impulso HIGH la cui
  // durata è il tempo (in microsecondi) dal momento
  // dell'invio del ping alla ricezione del suo eco da un oggetto.
  duration = pulseIn(echoPin, HIGH);
   // Converti il tempo in una distanza
  cm = (duration/2) / 29.1;     // Dividi per 29.1 o moltiplica per 0.0343
  inches = (duration/2) / 74;   // Dividi per 74 o moltiplica per 0.0135
  Serial.print(inches);
  Serial.print("in, ");
  Serial.print(cm);
  Serial.print("cm");
  Serial.println();
  delay(250);
}
//***************************************************************************

7.Risultato del Test

Dopo aver caricato con successo il codice sulla scheda V4.0, collega i cablaggi secondo lo schema elettrico, quindi collega il computer tramite un cavo USB per alimentare la scheda. Dopo l’accensione, apri il monitor seriale e imposta la velocità di trasmissione a 9600 baud.

La distanza rilevata verrà visualizzata, e l’unità di misura è cm e pollici. Ostacola il sensore ad ultrasuoni con la mano, il valore della distanza visualizzato diminuisce.

image-20250509154147537

8.Spiegazione del Codice

int trigPin- questo pin è definito per trasmettere onde ultrasoniche, generalmente in output.

int echoPin - questo è definito come il pin di ricezione, generalmente in input.

cm = (duration/2) / 29.1-

inches = (duration/2) / 74-

Possiamo calcolare la distanza usando la seguente formula:

distanza = (tempo di percorrenza/2) x velocità del suono

La velocità del suono è: 343m/s = 0.0343 cm/us = 1/29.1 cm/us

Oppure in pollici: 13503.9in/s = 0.0135in/us = 1/74in/us

Dobbiamo dividere il tempo di percorrenza per 2 perché dobbiamo considerare che l’onda è stata inviata, ha colpito l’oggetto e poi è tornata indietro al sensore.

9.Esercizio di Estensione

Abbiamo appena misurato la distanza visualizzata dall’ultrasuoni. Che ne dici di controllare il LED con la distanza misurata? Proviamo a collegare un modulo luce LED al pin D9.

image-20250509154232505

//*****************************************************************
/*
 keyestudio 4wd BT Car
 lezione 5.2
 Ultrasonic LED
 http://www.keyestudio.com
*/ 
int trigPin = 12;    // Trigger
int echoPin = 13;    // Echo
long duration, cm, inches;

void setup() {
  Serial.begin (9600);  //Inizio porta seriale
  pinMode(trigPin, OUTPUT);  //Definisci ingressi e uscite
  pinMode(echoPin, INPUT);
}

void loop() 
{
  // Il sensore viene attivato da un impulso HIGH di 10 o più microsecondi.
  // Fornire un breve impulso LOW prima per garantire un impulso HIGH pulito:
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  // Leggi il segnale dal sensore: un impulso HIGH la cui
  // durata è il tempo (in microsecondi) dal momento
  // dell'invio del ping alla ricezione del suo eco da un oggetto.
  duration = pulseIn(echoPin, HIGH);
  // Converti il tempo in una distanza
  cm = (duration/2) / 29.1;     // Dividi per 29.1 o moltiplica per 0.0343
  inches = (duration/2) / 74;   // Dividi per 74 o moltiplica per 0.0135
  Serial.print(inches);
  Serial.print("in, ");
  Serial.print(cm);
  Serial.print("cm");
  Serial.println();
  delay(250);
  if (cm>=2 && cm<=10)
  {
    Serial.println("HIGH");
    digitalWrite(9, HIGH);
  }
  else
  {
    Serial.println("LOW");
    digitalWrite(9, LOW);
  }
}
//*****************************************************************

Dopo aver caricato con successo il codice sulla scheda V4.0, collega i cablaggi secondo lo schema elettrico, quindi collega il computer tramite un cavo USB per alimentare la scheda. Dopo l’accensione, blocca il sensore ad ultrasuoni con la mano (la distanza è tra 2-10 cm), quindi verifica se il LED si accende.