ESP32 Упатство 27/55 - Мерење растојание со ултразвучен сензор | SunFounder's ESP32 IoT комплет за учење
Во ова упатство, ќе научиме како да користиме ултразвучен сензор за растојание со ESP32 за мерење на растојанија и прикажување на резултатите на екран. Исто така, ќе истражиме како да активираме зумер кога ќе се открие предмет во одреден опсег. Овој проект ја истакнува разновидноста на микроконтролерот ESP32, кој интегрира Wi-Fi и Bluetooth можности, што го прави погоден за различни IoT апликации.
Низ ова упатство, ќе најдете објаснувања за хардверските компоненти, инструкции за поврзување и кодови кои ќе ви помогнат успешно да го имплементирате проектот. За дополнителна јасност, ве молиме погледнете го видеото (во видеото на 00:00).
Објаснување на хардверот
Примарните компоненти на овој проект вклучуваат микроконтролер ESP32, ултразвучен сензор (HC-SR04) и зумер. Ултразвучниот сензор се состои од два главни дела: предавател кој емитува ултразвучни бранови и приемник кој ги слуша рефлектираните бранови. Со мерење на времето потребно за брановите да се вратат, можеме да го пресметаме растојанието до предметот.
ESP32 служи како централен контролер, обработувајќи ги податоците од ултразвучниот сензор и контролирајќи го зумерот врз основа на измереното растојание. Зумерот ќе звучи кога откриеното растојание е помало од дефинираниот праг, што укажува дека предметот е премногу блиску.
Детали од техничката документација
| Производител | HC-SR04 |
|---|---|
| Број на дел | HC-SR04 |
| Логички/IO напон | 5 V |
| Напон на напојување | 5 V |
| Излезна струја (по канал) | 16 mA |
| Врвна струја (по канал) | … |
| Насоки за PWM фреквенција | … |
| Влезни логички прагови | … |
| Пад на напон / RDS(on) / заситување | … |
| Термички ограничувања | … |
| Пакет | … |
| Белешки / варијанти | Опсег на мерење: 2 cm до 400 cm |
- Обезбедете соодветно напојување од 5 V за сензорот.
- Одржувајте чист пат за ултразвучните бранови за да избегнете пречки.
- Користете кратки жици за да го минимизирате доцнењето на сигналот и бучавата.
- Обезбедете точни врски на пиновите за да избегнете погрешна комуникација.
- Тестирајте го сензорот во различни средини за да ја проверите точноста.
Инструкции за поврзување

За да го поврзете ултразвучниот сензор со ESP32, поврзете го VCC пинот на сензорот со 5V пинот на ESP32. Потоа, поврзете го GND пинот на сензорот со еден од земјените (GND) пинови на ESP32. Пинот за активирање (Trig) од сензорот треба да се поврзе со GPIO 26 на ESP32, додека пинот за ехо (Echo) треба да се поврзе со GPIO 25. Оваа поставка му овозможува на ESP32 да испрати сигнал до сензорот и да го прими ехо сигналот за да го пресмета растојанието.
За зумерот, поврзете ја позитивната (долга) нога со GPIO 12 на ESP32 и негативната (кратка) нога со GND. Осигурете се дека сите врски се цврсти за да спречите лабаво поврзување за време на работата. Ако користите лебна плоча, порамнете ги врските на зумерот правилно за да избегнете погрешно поврзување. Погрижете се да го погледнете видеото за потврда на поврзувањето (во видеото на 05:12).
Примери на код и објаснување
Кодот ги иницијализира пиновите за ултразвучниот сензор и ја поставува сериската комуникација. Главната функција, readSensorData(), е одговорна за испраќање на сигнал за активирање и мерење на времето на одговор од ехо пинот.
const int echoPin = 25;
const int trigPin = 26;
void setup() {
Serial.begin(115200);
pinMode(echoPin, INPUT);
pinMode(trigPin, OUTPUT);
Serial.println("Ултразвучен сензор:");
}
Кодот ги дефинира echoPin и trigPin како константи за пиновите поврзани со ултразвучниот сензор. Во функцијата setup(), ја иницијализираме сериската комуникација и ги поставуваме режимите на пиновите соодветно.
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;
}
Овој извадок ја прикажува функцијата readSensorData(), која испраќа пулс од 10 микросекунди до пинот за активирање. Потоа го мери времето потребно за ехо пинот да го прими сигналот назад, го пресметува растојанието и ја враќа оваа вредност.
Конечно, функцијата loop континуирано го чита растојанието и го печати на серискиот монитор. Ако растојанието е под 20 cm, зумерот ќе се активира.
Демонстрација / Што да очекувате
Кога ќе ја стартувате програмата, ESP32 ќе го прикаже измереното растојание во сантиметри на серискиот монитор. Ако предмет влезе во рамките на 20 cm од сензорот, зумерот ќе звучи. Ова однесување може да се тестира со поставување предмети на различни растојанија пред сензорот. Бидете внимателни со обратна поларизација и осигурете се дека врските се направени како што е наведено за да избегнете проблеми за време на работата (во видеото на 08:00).
Временски ознаки на видеото
- 00:00 Почеток
- 1:46 Вовед во ултразвучен сензор
- 6:02 Објаснување на жиците
- 7:37 Објаснување на ESP32 Arduino кодот
- 11:33 Избор на ESP32 плоча и COM порта во Arduino IDE
- 13:15 Демонстрација на мерење растојание
- 16:43 Дејство со растојание: зумер
// 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
Работи што можеби ќе ви требаат
-
eBay
-
BanggoodPurchase HC-SR04 Ultrasonic Sensor from Banggoodbanggood.com
Ресурси и референци
-
ДокументацијаESP32 Tutorial 27/55 - SunFounder doc page for ultrasonic distance sensordocs.sunfounder.com
-
НадворешноHC-SR04 Ultrasonic Library from the Arduino official websiteplayground.arduino.cc
Датотеки📁
Нема достапни датотеки.