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.

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 dijela | HC-SR04 |
| Logika/IO napon | 5 V |
| Napon napajanja | 5 V |
| Izlazna struja (po kanalu) | 15 mA |
| Vršna struja (po kanalu) | 20 mA |
| Smjernice za PWM frekvenciju | N/A |
| Ulazni logički pragovi | 0,3 V (nisko), 0,7 V (visoko) |
| Pad napona / RDS(on) / zasićenje | N/A |
| Toplinska ograničenja | 0°C do 70°C |
| Paket | Modul |
| Napomene / varijante | Maksimalni 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


Da biste povezali HC-SR04 ultrazvučni senzor na svoj Arduino, slijedite ove korake:
- Spojite
VCCpin HC-SR04 na 5V pin na Arduinu. - Spojite
GNDpin HC-SR04 na ground pin na Arduinu. - Spojite
TRIGpin HC-SR04 (koji je obično plav) na digitalni pin 12 na Arduinu. - Spojite
ECHOpin 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
/*
* 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");
}
}
Things you might need
-
eBay
-
BanggoodPurchase HC-SR04 Ultrasonic Sensor from Banggoodbanggood.com
Resources & references
-
ExternalHC-SR04 Ultrasonic Library from the Arduino official websiteplayground.arduino.cc
Files📁
No files available.