Návod na ESP32 27/55 - Meranie vzdialenosti pomocou ultrazvukového senzora | SunFounderova ESP32 IoT výučbová súprava
V tomto návode sa naučíme, ako používať ultrazvukový snímač vzdialenosti s ESP32 na meranie vzdialeností a zobrazenie výsledkov na obrazovke. Taktiež preskúmame, ako aktivovať bzučiak, keď sa objekt zistí v určitom rozsahu. Tento projekt zdôrazňuje všestrannosť mikrokontroléra ESP32, ktorý integruje možnosti Wi-Fi a Bluetooth, čo ho robí vhodným pre rôzne IoT aplikácie.
V tomto návode nájdete vysvetlenia hardvérových komponentov, pokyny na zapojenie a úryvky kódu, ktoré vám pomôžu úspešne implementovať projekt. Pre väčšiu jasnosť si pozrite video (vo videu o 00:00).
Vysvetlenie hardvéru
Hlavné komponenty tohto projektu zahŕňajú mikrokontrolér ESP32, ultrazvukový snímač (HC-SR04) a bzučiak. Ultrazvukový snímač pozostáva z dvoch hlavných častí: vysielača, ktorý vysiela ultrazvukové vlny, a prijímača, ktorý počúva odrazené vlny. Meraním času, ktorý vlny potrebujú na návrat, môžeme vypočítať vzdialenosť k objektu.
ESP32 slúži ako centrálny ovládač, spracúva údaje z ultrazvukového snímača a ovláda bzučiak na základe nameranej vzdialenosti. Bzučiak zaznie, keď je zistená vzdialenosť menšia ako definovaný prah, čo znamená, že objekt je príliš blízko.
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) | 16 mA |
| Špičkový prúd (na kanál) | … |
| Odporúčanie pre PWM frekvenciu | … |
| Prahové hodnoty vstupnej logiky | … |
| Pokles napätia / RDS(on) / saturácia | … |
| Tepelné limity | … |
| Puzdro | … |
| Poznámky / varianty | Rozsah merania: 2 cm až 400 cm |
- Zabezpečte správne napájanie 5 V pre snímač.
- Udržiavajte voľnú cestu pre ultrazvukové vlny, aby ste predišli rušeniu.
- Používajte krátke vodiče na minimalizáciu oneskorenia signálu a šumu.
- Zabezpečte správne pripojenie pinov, aby ste predišli chybnej komunikácii.
- Otestujte snímač v rôznych prostrediach, aby ste skontrolovali presnosť.
Pokyny na zapojenie

Na zapojenie ultrazvukového snímača k ESP32 pripojte pin VCC snímača na pin 5V na ESP32. Potom pripojte pin GND snímača na jeden z uzemňovacích (GND) pinov na ESP32. Spúšťací pin (Trig) zo snímača by mal byť pripojený na GPIO 26 na ESP32, zatiaľ čo ozvenový pin (Echo) by mal byť pripojený na GPIO 25. Toto nastavenie umožňuje ESP32 vyslať signál do snímača a prijať ozvenový signál na výpočet vzdialenosti.
Pre bzučiak pripojte kladnú (dlhú) nožičku na GPIO 12 na ESP32 a zápornú (krátku) nožičku na GND. Uistite sa, že všetky pripojenia sú pevné, aby sa predišlo uvoľnenému zapojeniu počas prevádzky. Ak používate breadboard, správne zarovnajte pripojenia bzučiaka, aby ste predišli chybnému zapojeniu. Pozrite si video na potvrdenie zapojenia (vo videu o 05:12).
Príklady kódu a vysvetlenie
Kód inicializuje piny pre ultrazvukový snímač a nastaví sériovú komunikáciu. Hlavná funkcia readSensorData() je zodpovedná za vyslanie spúšťacieho signálu a meranie času odozvy z ozvenového pinu.
const int echoPin = 25;
const int trigPin = 26;
void setup() {
Serial.begin(115200);
pinMode(echoPin, INPUT);
pinMode(trigPin, OUTPUT);
Serial.println("Ultrasonic sensor:");
}
Kód definuje echoPin a trigPin ako konštanty pre piny pripojené k ultrazvukovému snímaču. Vo funkcii setup() inicializujeme sériovú komunikáciu a nastavíme režimy pinov podľa potreby.
float readSensorData() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
unsigned long microsecond = pulseIn(echoPin, HIGH);
float distance = microsecond / 29.00 / 2;
return distance;
}
Tento úryvok ukazuje funkciu readSensorData(), ktorá vysiela 10-mikrosekundový impulz na spúšťací pin. Potom meria čas, ktorý ozvenový pin potrebuje na prijatie signálu späť, vypočíta vzdialenosť a vráti túto hodnotu.
Nakoniec funkcia loop nepretržite číta vzdialenosť a vypisuje ju do sériového monitora. Ak je vzdialenosť menšia ako 20 cm, bzučiak sa aktivuje.
Demonštrácia / Čo očakávať
Keď spustíte program, ESP32 zobrazí nameranú vzdialenosť v centimetroch na sériovom monitore. Ak sa objekt dostane do vzdialenosti 20 cm od snímača, bzučiak zaznie. Toto správanie môžete otestovať umiestnením objektov v rôznych vzdialenostiach pred snímač. Buďte opatrní pri obrátenej polarite a uistite sa, že pripojenia sú vykonané podľa špecifikácií, aby ste predišli problémom počas prevádzky (vo videu o 08:00).
Časové značky videa
- 00:00 Začiatok
- 1:46 Úvod k ultrazvukovému senzoru
- 6:02 Vysvetlenie zapojenia
- 7:37 Vysvetlenie kódu ESP32 v Arduine
- 11:33 Výber dosky ESP32 a COM portu v Arduino IDE
- 13:15 Ukážka merania vzdialenosti
- 16:43 Reakcia na vzdialenosť: bzučiak
// Define pins for the ultrasonic sensor
const int echoPin = 25;
const int trigPin = 26;
// Function prototype for reading sensor data
float readSensorData();
void setup() {
// Begin serial communication at 115200 baud rate
Serial.begin(115200);
// Set echoPin as input and trigPin as output
pinMode(echoPin, INPUT);
pinMode(trigPin, OUTPUT);
// Print sensor information to the serial monitor
Serial.println("Ultrasonic sensor:");
}
void loop() {
// Read distance from the ultrasonic sensor
float distance = readSensorData();
// Print the measured distance to the serial monitor
Serial.print(distance);
Serial.println(" cm");
// Delay between readings
delay(200);
}
// Function to read data from the ultrasonic sensor
float readSensorData() {
// Trigger a low signal before sending a high signal
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
// Send a 10-microsecond high signal to the trigPin
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
// Return to low signal
digitalWrite(trigPin, LOW);
// Measure the duration of the high signal on the echoPin
unsigned long microsecond = pulseIn(echoPin, HIGH);
// Calculate the distance using the speed of sound (29.00µs per centimeter)
float distance = microsecond / 29.00 / 2;
// Return the calculated distance
return distance;
}
Common Course Links
Common Course Files
Things you might need
-
eBay
-
BanggoodPurchase HC-SR04 Ultrasonic Sensor from Banggoodbanggood.com
Resources & references
-
DocumentationESP32 Tutorial 27/55- SunFounder doc page for Ultrasonic distance sensordocs.sunfounder.com
-
ExternalHC-SR04 Ultrasonic Library from the Arduino official websiteplayground.arduino.cc
Files📁
No files available.