Search Code

Arduino kod i video za HC-SR04 ultrazvučni senzor udaljenosti

Arduino kod i video za HC-SR04 ultrazvučni senzor udaljenosti

U ovom tutorijalu ćemo istražiti kako koristiti HC-SR04 ultrazvučni senzor udaljenosti s Arduinom. HC-SR04 je ekonomičan i efikasan način za mjerenje udaljenosti pomoću ultrazvučnih valova. Slanjem signala i mjerenjem vremena koje je potrebno da se eho vrati, možemo precizno izračunati udaljenost do objekta.

How HC-SR04 ulrasonic sensor work

Ovaj projekt uključuje postavljanje senzora s Arduinom i pisanje jednostavnog programa za čitanje i prikaz mjerenja udaljenosti. Program će koristiti NewPing biblioteku za pojednostavljenje komunikacije sa senzorom. Ako želite vizualnu referencu ili dodatno pojašnjenje bilo kojeg koraka, svakako pogledajte video (u videu na 00:00).

Objašnjenje hardvera

HC-SR04 ultrazvučni senzor sastoji se od dvije glavne komponente: predajnika i prijemnika. Predajnik emitira ultrazvučne impulse na frekvenciji iznad opsega ljudskog sluha, dok prijemnik sluša eho tih impulsa nakon što se odbiju od objekta. Izračunavanjem vremena između slanja impulsa i primanja eha, možemo odrediti udaljenost do objekta.

Senzor ima dvije bitne pinove: trigger pin i echo pin. Trigger pin se koristi za pokretanje mjerenja slanjem kratkog visokog signala, dok echo pin prima reflektirani signal i mjeri vrijeme potrebno da se eho vrati.

Detalji iz tehničke specifikacije

ProizvođačHC-SR04
Broj dijelaHC-SR04
Logika/IO napon5 V
Napon napajanja5 V
Izlazna struja (po kanalu)15 mA
Vršna struja (po kanalu)20 mA
Smjernice za PWM frekvencijuN/A
Ulazni logički pragovi0,3 V (nisko), 0,7 V (visoko)
Pad napona / RDS(on) / zasićenjeN/A
Toplinska ograničenja0°C do 70°C
PaketModul
Napomene / varijanteMaksimalni domet 400 cm

  • Osigurajte odgovarajuće napajanje (5 V).
  • Održavajte senzor čistim za tačna očitanja.
  • Koristite trigger pin za pokretanje mjerenja.
  • Ne prekoračujte maksimalnu udaljenost za pouzdane rezultate.
  • Održavajte čist put da se ultrazvučni valovi odbiju natrag.
  • Koristite decoupling kondenzatore blizu pinova napajanja.
  • Budite oprezni s ambijentalnom bukom koja može ometati očitanja.
  • Testirajte različite udaljenosti da se upoznate sa senzorom.

Upute za povezivanje

Arduino Wiring for HC-SR04 ulrasonic sensor
Arduino Wiring for HC-SR04 ulrasonic sensor
Arduino Wiring for HC-SR04 ulrasonic sensor
Arduino Wiring for HC-SR04 ulrasonic sensor

Da biste povezali HC-SR04 ultrazvučni senzor na svoj Arduino, slijedite ove korake:

  • Spojite VCC pin HC-SR04 na 5V pin na Arduinu.
  • Spojite GND pin HC-SR04 na ground pin na Arduinu.
  • Spojite TRIG pin HC-SR04 (koji je obično plav) na digitalni pin 12 na Arduinu.
  • Spojite ECHO pin HC-SR04 (koji je obično zelen) na digitalni pin 11 na Arduinu.

Osigurajte da su veze sigurne kako biste izbjegli povremena očitanja. Ako koristite drugačiju postavku ili imate alternativno povezivanje, pogledajte video za dodatne smjernice (u videu na 00:00).

Primjeri koda i objašnjenje

Sljedeći kod inicijalizira NewPing biblioteku i postavlja pinove za HC-SR04 senzor. Glavne komponente uključuju definiranje trigger i echo pinova, kao i maksimalne udaljenosti.

#define TRIGGER_PIN  12  // Trigger pin
#define ECHO_PIN     11  // Echo pin
#define MAX_DISTANCE 200  // Maksimalna udaljenost u cm

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // Postavljanje NewPing-a

U ovom izvatku, TRIGGER_PIN i ECHO_PIN su postavljeni na digitalne pinove 12 i 11, respektivno. MAX_DISTANCE je definiran kao 200 cm, što je maksimalna udaljenost koju želite mjeriti.

Zatim imamo setup funkciju gdje se serijski monitor inicijalizira za prikaz rezultata:

void setup() {
  Serial.begin(115200); // Inicijalizacija serijskog monitora
}

Ovaj kod otvara serijsku komunikaciju pri brzini prijenosa od 115200, omogućavajući nam da vidimo mjerenja udaljenosti u serijskom monitoru.

Konačno, loop funkcija mjeri udaljenost i provjerava je li manja ili jednaka 12 cm:

void loop() {
  delay(50); // Čekanje između mjerenja
  int distance = sonar.ping_cm(); // Mjerenje udaljenosti
  if(distance <=12){ // Provjera udaljenosti
    Serial.println("Vrlo blizu"); // Ispis ako je vrlo blizu
  }
}

U loop() funkciji uvodimo kašnjenje od 50 milisekundi kako bismo kontrolirali učestalost mjerenja. Udaljenost se mjeri, i ako je manja ili jednaka 12 cm, ispisuje "Vrlo blizu" na serijski monitor.

Za kompletan kod, molimo pogledajte odjeljak za učitavanje ispod članka.

Demonstracija / Šta očekivati

Kada pokrenete program, Arduino će kontinuirano mjeriti udaljenost do najbližeg objekta. Trebao bi ispisivati udaljenost u centimetrima i obavijestiti vas sa "Vrlo blizu" kada se objekt detektuje unutar 12 cm. Ako je objekt preblizu, možete dobiti netačna očitanja ili nikakva očitanja, kao što je navedeno u videu (u videu na 10:00).

Osigurajte da je senzor pravilno pozicioniran i da nema prepreka koje blokiraju ultrazvučne valove. Ako je sve pravilno postavljeno, trebali biste vidjeti konzistentna mjerenja prikazana na serijskom monitoru.

Vremenske oznake videa

  • 00:00 - Uvod u HC-SR04
  • 01:30 - Povezivanje senzora
  • 03:00 - Pregled koda
  • 05:00 - Pokretanje programa
  • 07:30 - Mjerenje udaljenosti

Images

Arduino Wiring for HC-SR04 ulrasonic sensor
Arduino Wiring for HC-SR04 ulrasonic sensor
Arduino Wiring for HC-SR04 ulrasonic sensor
Arduino Wiring for HC-SR04 ulrasonic sensor
HC-SR04 ulrasonic sensor
HC-SR04 ulrasonic sensor
How HC-SR04 ulrasonic sensor work
How HC-SR04 ulrasonic sensor work
42-This is the Arduino code for the HC-SR04 ultrasonic distance sensor.
Language: C++
/*
 * This is the Arduino code for the HC-SR04 Ultrasonic Distance Sensor
 * to measure the distance using Arduino for a robotic car and other applications
 * Watch the video https://youtu.be/QI9541YQq7M
 * 
 * Written by Ahmad Shamshiri for Robojax Video
 * Date: December 21, 2017, in Ajax, Ontario, Canada
 * Permission granted to share this code given that this
 * note is kept with the code.
 * Disclaimer: this code is "AS IS" and for educational purposes only.
 * 
 */

/* Original Code 
// https://playground.arduino.cc/Code/NewPing
 * Modified for Robojax video on December 21, 2017

 */

// ---------------------------------------------------------------------------
// Example NewPing library sketch that does a ping about 20 times per second.
// ---------------------------------------------------------------------------

#include <NewPing.h>

#define TRIGGER_PIN  12  // Arduino pin tied to trigger pin on the ultrasonic sensor.
#define ECHO_PIN     11  // Arduino pin tied to echo pin on the ultrasonic sensor.
#define MAX_DISTANCE 200 // Maximum distance we want to ping for (in centimeters). Maximum sensor distance is rated at 400-500cm.

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance.

void setup() {
  Serial.begin(115200); // Open serial monitor at 115200 baud to see ping results.
}

void loop() {
  delay(50);                     // Wait 50ms between pings (about 20 pings/sec). 29ms should be the shortest delay between pings.
  Serial.print("Ping: ");
  Serial.print(sonar.ping_cm()); // Send ping, get distance in cm and print result (0 = outside set distance range)
  Serial.println("cm");
  int distance = sonar.ping_cm();// store the distance value in "distance" variable
  if(distance <=12){             // if distance is less than 12, do something. For example, here just print "very close"
    Serial.println("Very close");
  }
}

Resources & references

Files📁

No files available.