Kód Arduina a video pre HC-SR04 ultrazvukový snímač vzdialenosti
V tomto návode si ukážeme, ako používať ultrazvukový senzor vzdialenosti HC-SR04 s Arduinom. HC-SR04 je ekonomický a efektívny spôsob merania vzdialeností pomocou ultrazvukových vĺn. Vyslaním signálu a meraním času, ktorý trvá, kým sa ozvena vráti, môžeme presne vypočítať vzdialenosť k objektu.

Tento projekt zahŕňa zapojenie senzora s Arduinom a napísanie jednoduchého programu na čítanie a zobrazovanie meraní vzdialenosti. Program bude využívať knižnicu NewPing na zjednodušenie komunikácie so senzorom. Ak potrebujete vizuálnu referenciu alebo ďalšie objasnenie niektorých krokov, určite si pozrite video (vo videu o 00:00).
Vysvetlenie hardvéru
Ultrazvukový senzor HC-SR04 pozostáva z dvoch hlavných komponentov: vysielača a prijímača. Vysielač vysiela ultrazvukové impulzy na frekvencii nad rozsahom ľudského sluchu, zatiaľ čo prijímač počúva ozvenu týchto impulzov po tom, ako sa odrazia od objektu. Výpočtom času medzi vyslaním impulzu a prijatím ozveny môžeme určiť vzdialenosť k objektu.
Senzor má dva základné piny: trigger pin a echo pin. Trigger pin sa používa na spustenie merania vyslaním krátkeho vysokého signálu, zatiaľ čo echo pin prijíma odrazený signál a meria čas, ktorý trvá, kým sa ozvena vráti.
Podrobnosti z datasheetu
| Výrobca | HC-SR04 |
|---|---|
| Číslo dielu | HC-SR04 |
| Logické/IO napätie | 5 V |
| Napájacie napätie | 5 V |
| Výstupný prúd (na kanál) | 15 mA |
| Špičkový prúd (na kanál) | 20 mA |
| Odporúčanie pre PWM frekvenciu | N/A |
| Prahové hodnoty vstupnej logiky | 0,3 V (nízka), 0,7 V (vysoká) |
| Pokles napätia / RDS(on) / saturácia | N/A |
| Tepelné limity | 0 °C až 70 °C |
| Puzdro | Modul |
| Poznámky / varianty | Maximálny rozsah 400 cm |
- Zabezpečte správne napájanie (5 V).
- Udržiavajte senzor čistý pre presné merania.
- Použite trigger pin na spustenie meraní.
- Neprekračujte maximálnu vzdialenosť pre spoľahlivé výsledky.
- Udržiavajte voľnú cestu, aby sa ultrazvukové vlny mohli odrážať späť.
- Použite oddeľovacie kondenzátory v blízkosti napájacích pinov.
- Buďte opatrní pri okolitom hluku, ktorý môže rušiť merania.
- Testujte rôzne vzdialenosti, aby ste sa oboznámili so senzorom.
Pokyny na zapojenie


Na zapojenie ultrazvukového senzora HC-SR04 k Arduinu postupujte podľa týchto krokov:
- Pripojte pin
VCCsenzora HC-SR04 na pin 5V na Arduine. - Pripojte pin
GNDsenzora HC-SR04 na uzemňovací pin na Arduine. - Pripojte pin
TRIGsenzora HC-SR04 (ktorý je zvyčajne modrý) na digitálny pin 12 na Arduine. - Pripojte pin
ECHOsenzora HC-SR04 (ktorý je zvyčajne zelený) na digitálny pin 11 na Arduine.
Uistite sa, že sú pripojenia pevné, aby ste predišli prerušovaným meraniam. Ak používate iné zapojenie alebo máte alternatívne prepojenie, pozrite si video pre ďalšie pokyny (vo videu o 00:00).
Príklady kódu a vysvetlenie
Nasledujúci kód inicializuje knižnicu NewPing a nastaví piny pre senzor HC-SR04. Hlavné komponenty zahŕňajú definovanie trigger a echo pinov, ako aj maximálnej vzdialenosti.
#define TRIGGER_PIN 12 // Trigger pin
#define ECHO_PIN 11 // Echo pin
#define MAX_DISTANCE 200 // Maximálna vzdialenosť v cm
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // Nastavenie NewPing
V tomto úryvku sú TRIGGER_PIN a ECHO_PIN nastavené na digitálne piny 12 a 11. MAX_DISTANCE je definovaná ako 200 cm, čo je maximálna vzdialenosť, ktorú chcete merať.
Ďalej máme funkciu setup, kde sa inicializuje sériový monitor na zobrazenie výsledkov:
void setup() {
Serial.begin(115200); // Inicializácia sériového monitora
}
Tento kód otvára sériovú komunikáciu pri prenosovej rýchlosti 115200, čo nám umožňuje vidieť merania vzdialenosti v sériovom monitore.
Nakoniec funkcia loop meria vzdialenosť a kontroluje, či je menšia alebo rovná 12 cm:
void loop() {
delay(50); // Čakanie medzi meraniami
int distance = sonar.ping_cm(); // Meranie vzdialenosti
if(distance <=12){ // Kontrola vzdialenosti
Serial.println("Veľmi blízko"); // Vytlačí, ak je veľmi blízko
}
}
V loop() zavedieme oneskorenie 50 milisekúnd na kontrolu frekvencie meraní. Vzdialenosť sa meria, a ak je menšia alebo rovná 12 cm, vytlačí "Veľmi blízko" do sériového monitora.
Pre kompletný kód sa prosím pozrite na časť s načítaním nižšie v článku.
Demonštrácia / Čo očakávať
Keď spustíte program, Arduino bude nepretržite merať vzdialenosť k najbližšiemu objektu. Malo by tlačiť vzdialenosť v centimetroch a upozorniť vás "Veľmi blízko", keď sa objekt zistí do 12 cm. Ak je objekt príliš blízko, môžete dostať nepresné údaje alebo žiadne údaje, ako je uvedené vo videu (vo videu o 10:00).
Uistite sa, že senzor je správne umiestnený a že žiadne prekážky neblokujú ultrazvukové vlny. Ak je všetko správne nastavené, mali by ste vidieť konzistentné merania zobrazené v sériovom monitore.
Časové značky videa
- 00:00 - Úvod k HC-SR04
- 01:30 - Zapojenie senzora
- 03:00 - Prehľad kódu
- 05:00 - Spustenie programu
- 07:30 - Meranie vzdialeností
/*
* 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");
}
}
Veci, ktoré by ste mohli potrebovať
-
eBay
-
BanggoodPurchase HC-SR04 Ultrasonic Sensor from Banggoodbanggood.com
Zdroje a referencie
-
ExternéHC-SR04 Ultrasonic Library from the Arduino official websiteplayground.arduino.cc
Súbory📁
Žiadne súbory nie sú k dispozícii.