Hľadať kód

Kód Arduina a video pre HC-SR04 ultrazvukový snímač vzdialenosti

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.

How HC-SR04 ulrasonic sensor work

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ýrobcaHC-SR04
Číslo dieluHC-SR04
Logické/IO napätie5 V
Napájacie napätie5 V
Výstupný prúd (na kanál)15 mA
Špičkový prúd (na kanál)20 mA
Odporúčanie pre PWM frekvenciuN/A
Prahové hodnoty vstupnej logiky0,3 V (nízka), 0,7 V (vysoká)
Pokles napätia / RDS(on) / saturáciaN/A
Tepelné limity0 °C až 70 °C
PuzdroModul
Poznámky / variantyMaximá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

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

Na zapojenie ultrazvukového senzora HC-SR04 k Arduinu postupujte podľa týchto krokov:

  • Pripojte pin VCC senzora HC-SR04 na pin 5V na Arduine.
  • Pripojte pin GND senzora HC-SR04 na uzemňovací pin na Arduine.
  • Pripojte pin TRIG senzora HC-SR04 (ktorý je zvyčajne modrý) na digitálny pin 12 na Arduine.
  • Pripojte pin ECHO senzora 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í

Obrázky

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.
Jazyk: 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");
  }
}

Veci, ktoré by ste mohli potrebovať

Zdroje a referencie

Súbory📁

Žiadne súbory nie sú k dispozícii.