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.

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:
- Mikrokontroler odešle krátký signál na pin Trig.
- Senzor vyšle ultrazvukový impuls o frekvenci přibližně 40 kHz.
- Zvuková vlna se odrazí od objektu a vrátí se zpět k senzoru.
- 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.

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.

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.
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:
1Distance (cm): 35.4
2Distance (inch): 13.9
3
4Distance (cm): 34.9
5Distance (inch): 13.7Hodnota 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.
