Search Code

ESP32 Tutoriaal 27/55 - Meet Afstand met Ultrasoniese Sensor | SunFounder se ESP32 IoT-leerkit

ESP32 Tutoriaal 27/55 - Meet Afstand met Ultrasoniese Sensor | SunFounder se ESP32 IoT-leerkit

In hierdie tutoriaal sal ons leer hoe om 'n ultrasoniese afstandsensor met die ESP32 te gebruik om afstande te meet en die resultate op 'n skerm te vertoon. Ons sal ook ondersoek hoe om 'n gonser te aktiveer wanneer 'n voorwerp binne 'n spesifieke reeks opgespoor word. Hierdie projek beklemtoon die veelsydigheid van die ESP32-mikrobeheerder, wat Wi-Fi- en Bluetooth-vermoëns integreer, wat dit geskik maak vir verskeie IoT-toepassings.

ultrasonic_principle

Deur hierdie gids sal jy verduidelikings van die hardeware-komponente, bedradingsinstruksies en kodefragmente vind om jou te help om die projek suksesvol te implementeer. Vir addisionele duidelikheid, verwys asseblief na die video (in video by 00:00).

Hardeware Verduidelik

Die primêre komponente van hierdie projek sluit die ESP32-mikrobeheerder, die ultrasoniese sensor (HC-SR04) en 'n gonser in. Die ultrasoniese sensor bestaan uit twee hoofdele: 'n sender wat ultrasoniese golwe uitstraal en 'n ontvanger wat luister vir die gereflekteerde golwe. Deur die tyd wat dit neem vir die golwe om terug te keer, te meet, kan ons die afstand na 'n voorwerp bereken.

Die ESP32 dien as die sentrale beheerder, verwerk data van die ultrasoniese sensor en beheer die gonser gebaseer op die gemete afstand. Die gonser sal klink wanneer die opgespoorde afstand minder as 'n gedefinieerde drempel is, wat aandui dat 'n voorwerp te naby is.

Datablad Besonderhede

Vervaardiger HC-SR04
Deelnommer HC-SR04
Logika/IO-spanning 5 V
Toevoerspanning 5 V
Uitsetstroom (per kanaal) 16 mA
Piekstroom (per kanaal)
PWM-frekwensie riglyne
Inset logika drempels
Spanningval / RDS(on) / versadiging
Termiese limiete
Pakket
Notas / variante Meetreeks: 2 cm tot 400 cm

 

  • Verseker behoorlike kragtoevoer van 5 V vir die sensor.
  • Handhaaf 'n duidelike pad vir ultrasoniese golwe om interferensie te vermy.
  • Gebruik kort drade om seinvertraging en geraas te minimaliseer.
  • Verseker korrekte penverbindings om miskommunikasie te vermy.
  • Toets die sensor in verskeie omgewings om akkuraatheid te kontroleer.

Bedradingsinstruksies

ESP32-27_ultrasonic_wiring

Om die ultrasoniese sensor aan die ESP32 te bedraad, verbind die VCC-pen van die sensor aan die 5V-pen op die ESP32. Verbind dan die GND-pen van die sensor aan een van die grond (GND)-penne op die ESP32. Die snellerpen (Trig) van die sensor moet aan GPIO 26 op die ESP32 gekoppel word, terwyl die eggopen (Echo) aan GPIO 25 gekoppel moet word. Hierdie opstelling laat die ESP32 toe om 'n sein na die sensor te stuur en die eggosein te ontvang om afstand te bereken.

ESP32-27_ultrasonic_schematic

Vir die gonser, verbind die positiewe (lang) been aan GPIO 12 op die ESP32 en die negatiewe (kort) been aan die GND. Verseker dat alle verbindings veilig is om los bedrading tydens werking te voorkom. As jy 'n broodbord gebruik, belyn die gonserverbindings behoorlik om verkeerde bedrading te vermy. Maak seker om na die video te verwys vir bedradingbevestiging (in video by 05:12).

Kode Voorbeelde & Deurloop

Die kode initialiseer die penne vir die ultrasoniese sensor en stel seriekommunikasie op. Die hoof funksie, readSensorData(), is verantwoordelik vir die stuur van 'n snellersignaal en die meet van die reaksietyd vanaf die eggopen.

const int echoPin = 25;
const int trigPin = 26;

void setup() {
  Serial.begin(115200);
  pinMode(echoPin, INPUT);
  pinMode(trigPin, OUTPUT);
  Serial.println("Ultrasoniese sensor:");  
}

Die kode definieer echoPin en trigPin as konstantes vir die penne wat aan die ultrasoniese sensor gekoppel is. In die setup() funksie initialiseer ons seriekommunikasie en stel die penmodusse dienooreenkomstig.

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;
}

Hierdie uittreksel wys die readSensorData() funksie, wat 'n 10-mikrosekonde-puls na die snellerpen stuur. Dit meet dan die tyd wat dit neem vir die eggopen om die sein terug te ontvang, bereken die afstand, en gee hierdie waarde terug.

Laastens lees die lusfunksie voortdurend die afstand en druk dit op die serie-monitor. As die afstand onder 20 cm is, sal die gonser geaktiveer word.

Demonstrasie / Wat om te Verwags

Wanneer jy die program laat loop, sal die ESP32 die gemete afstand in sentimeter op die serie-monitor vertoon. As 'n voorwerp binne 20 cm van die sensor kom, sal die gonser klink. Hierdie gedrag kan getoets word deur voorwerpe op verskeie afstande voor die sensor te plaas. Wees versigtig met omgekeerde polariteit en verseker dat die verbindings gemaak word soos gespesifiseer om enige probleme tydens werking te vermy (in video by 08:00).

Video Tydstempels

  • 00:00 Begin
  • 1:46 Inleiding tot Ultrasoniese Sensor
  • 6:02 Bedrading verduidelik
  • 7:37 ESP32 Arduino-kode verduidelik
  • 11:33 Kies ESP32-bord en COM-poort in Arduino IDE
  • 13:15 Demonstrasie van afstandmeting
  • 16:43 Aksie met afstand: gonser

Beelde

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
Taal: 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;
}

Goedere wat jy dalk nodig het

Hulpbronne en verwysings

Lêers📁

Geen lêers beskikbaar.