Zpět na články

Měření vzdálenosti pomocí ultrazvukového senzoru HC-SR04 a ESP32

Jak měřit vzdálenost pomocí ultrazvukového senzoru HC-SR04 a mikrokontroleru ESP32

Měření vzdálenosti pomocí ultrazvukového senzoru HC-SR04 a ESP32

Ultrazvukové senzory jsou velmi populární v hobby elektronice i robotice. Umožňují jednoduše měřit vzdálenost od objektu bez fyzického kontaktu. Jedním z nejrozšířenějších modulů je HC-SR04, který lze snadno připojit k mikrokontroleru ESP32.

V tomto článku si ukážeme, jak senzor zapojit, jak funguje a jak z něj získat vzdálenost v centimetrech pomocí Arduino IDE.

Co je ultrazvukový senzor HC-SR04

HC-SR04 je senzor pro měření vzdálenosti využívající ultrazvukové vlny. Modul obsahuje vysílač a přijímač ultrazvuku, které společně umožňují určit vzdálenost k objektu.

Senzor dokáže měřit vzdálenost přibližně od 2 cm do 4 metrů s přesností přibližně 0,3 cm, což je dostatečné pro většinu hobby projektů.

Mezi hlavní vlastnosti senzoru patří:

  • napájení 5 V
  • pracovní proud přibližně 15 mA
  • ultrazvuková frekvence 40 kHz
  • maximální měřitelná vzdálenost 4 m
  • minimální vzdálenost 2 cm
  • měřicí úhel přibližně 15°
  • rozlišení měření přibližně 0,3 cm

Díky jednoduchému rozhraní se senzor často používá například v robotech, parkovacích systémech nebo projektech chytré domácnosti.

ESP32 Blog image

Jak HC-SR04 funguje

Princip měření je založený na odrazu zvukových vln.

Proces měření probíhá v několika krocích:

  1. Mikrokontroler odešle krátký signál na pin Trig.
  2. Senzor vyšle ultrazvukový impuls o frekvenci přibližně 40 kHz.
  3. Zvuková vlna se odrazí od objektu a vrátí se zpět k senzoru.
  4. Pin Echo vyšle signál, jehož délka odpovídá době letu zvuku.

Ze změřeného času lze vypočítat vzdálenost pomocí rychlosti zvuku ve vzduchu (přibližně 343 m/s při 20 °C).

Vzdálenost se vypočítá podle vztahu:

vzdálenost = (rychlost zvuku × čas) / 2

Dělení dvěma je nutné, protože signál urazí cestu k objektu i zpět.

ESP32 Blog image

Zapojení HC-SR04 s ESP32

Senzor má čtyři základní piny.

Pin VCC slouží pro napájení a připojuje se na 5 V pin na ESP32.
Pin GND se připojí na zem (GND).

Pro komunikaci jsou důležité dva další piny:

Pin Trig připojíme například na GPIO 5 na ESP32.
Pin Echo připojíme například na GPIO 18 na ESP32.

Pin Trig slouží k vyslání měřicího impulzu a pin Echo vrací signál, který odpovídá době letu ultrazvuku.

ESP32 Blog image

Potřebné komponenty

Pro tento projekt budeš potřebovat:

  • mikrokontroler ESP32
  • ultrazvukový senzor HC-SR04
  • breadboard
  • několik propojovacích vodičů

Tyto komponenty stačí pro základní měření vzdálenosti.

Program pro ESP32

Následující program změří vzdálenost od objektu a zobrazí ji v sériovém monitoru.

hcsr.cpp
1const int trigPin = 5; 2const int echoPin = 18; 3 4#define SOUND_SPEED 0.034 5#define CM_TO_INCH 0.393701 6 7long duration; 8float distanceCm; 9float distanceInch; 10 11void setup() { 12 Serial.begin(115200); 13 pinMode(trigPin, OUTPUT); 14 pinMode(echoPin, INPUT); 15} 16 17void loop() { 18 19 digitalWrite(trigPin, LOW); 20 delayMicroseconds(2); 21 22 digitalWrite(trigPin, HIGH); 23 delayMicroseconds(10); 24 digitalWrite(trigPin, LOW); 25 26 duration = pulseIn(echoPin, HIGH); 27 28 distanceCm = duration * SOUND_SPEED / 2; 29 distanceInch = distanceCm * CM_TO_INCH; 30 31 Serial.print("Distance (cm): "); 32 Serial.println(distanceCm); 33 34 Serial.print("Distance (inch): "); 35 Serial.println(distanceInch); 36 37 delay(1000); 38}

Program odešle krátký impuls na pin Trig, změří dobu návratu signálu na pinu Echo a následně vypočítá vzdálenost.

Ukázka výstupu

Po spuštění programu můžeš v sériovém monitoru vidět například:

iwillmetyourmothertonight.cpp
1Distance (cm): 35.4 2Distance (inch): 13.9 3 4Distance (cm): 34.9 5Distance (inch): 13.7

Hodnota se mění podle vzdálenosti objektu před senzorem.

Zobrazení vzdálenosti na OLED displeji

Senzor lze také kombinovat s displejem. Například pomocí OLED displeje SSD1306 může ESP32 zobrazovat aktuální vzdálenost přímo na obrazovce.

V takovém případě stačí přidat knihovny pro OLED displej a zobrazit naměřenou hodnotu místo výpisu do sériového monitoru.

Využití ultrazvukového senzoru

HC-SR04 patří mezi nejpoužívanější senzory pro měření vzdálenosti v projektech s mikrokontrolery.

Používá se například pro:

  • roboty vyhýbající se překážkám
  • parkovací asistenty
  • měření hladiny vody v nádrži
  • automatické dávkovače
  • IoT projekty s ESP32

Díky jednoduchému zapojení a nízké ceně je ideální pro začátečníky i pokročilé projekty.

Nakupte svoje ESP32 ještě dnes!

Doprava Zásilkovnou za 89 Kč
Platba dobírkou
Vrácení do 30 dnů
Omezené zásoby - skladem

ESP32-S3 DevKit USB-C

Kompletní vývojová deska s USB-C

240MHz dvoujádrový
WiFi 802.11 b/g/n
Bluetooth 4.2 + BLE
4MB Flash paměť
520KB SRAM
38 GPIO pinů
209za kus

Množstevní slevy:

1
Celkem
209
Objednat

Bezpečná platba při převzetí zásilky nebo online platba přes Comgate, a.s.