Пребарување код

ESP32 Упатство 27/55 - Мерење растојание со ултразвучен сензор | SunFounder's ESP32 IoT комплет за учење

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-27_ultrasonic_wiring

За да го поврзете ултразвучниот сензор со ESP32, поврзете го VCC пинот на сензорот со 5V пинот на ESP32. Потоа, поврзете го GND пинот на сензорот со еден од земјените (GND) пинови на ESP32. Пинот за активирање (Trig) од сензорот треба да се поврзе со GPIO 26 на ESP32, додека пинот за ехо (Echo) треба да се поврзе со GPIO 25. Оваа поставка му овозможува на ESP32 да испрати сигнал до сензорот и да го прими ехо сигналот за да го пресмета растојанието.

ESP32-27_ултразвучна_шема

За зумерот, поврзете ја позитивната (долга) нога со 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 Дејство со растојание: зумер

Слики

ESP32-27_ultrasonic_wiring
ESP32-27_ultrasonic_wiring
ESP32-27_ultrasonic_schematic
ESP32-27_ultrasonic_schematic
ultrasonic_principle
ultrasonic_principle
827-ESP32 Tutorial 27/55- Arduino code for ultrasonic sensor
Јазик: C++
// 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;
}

Работи што можеби ќе ви требаат

Ресурси и референци

Датотеки📁

Нема достапни датотеки.