ESP32 Tutorial 27/55 - Afstand meten met een ultrasone sensor | SunFounder's ESP32 IoT-leerkit
In deze tutorial leren we hoe we een ultrasone afstandssensor met de ESP32 kunnen gebruiken om afstanden te meten en de resultaten op een scherm weer te geven. We onderzoeken ook hoe we een zoemer kunnen activeren wanneer er een object binnen een specifiek bereik wordt gedetecteerd. Dit project benadrukt de veelzijdigheid van de ESP32-microcontroller, die Wi-Fi- en Bluetooth-mogelijkheden integreert, waardoor deze geschikt is voor verschillende IoT-toepassingen.
In deze handleiding vindt u uitleg over de hardwarecomponenten, bedradingsinstructies en codefragmenten om u te helpen het project succesvol te implementeren. Voor extra duidelijkheid verwijzen we naar de video (in video op 00:00).
Hardware uitgelegd
De primaire componenten van dit project zijn de ESP32-microcontroller, de ultrasone sensor (HC-SR04) en een zoemer. De ultrasone sensor bestaat uit twee hoofdonderdelen: een zender die ultrasone golven uitzendt en een ontvanger die luistert naar de gereflecteerde golven. Door de tijd te meten die de golven nodig hebben om terug te keren, kunnen we de afstand tot een object berekenen.
De ESP32 fungeert als de centrale controller, verwerkt gegevens van de ultrasone sensor en bestuurt de zoemer op basis van de gemeten afstand. De zoemer zal klinken wanneer de gedetecteerde afstand kleiner is dan een gedefinieerde drempelwaarde, wat aangeeft dat een object te dichtbij is.
Datasheetdetails
| Fabrikant | HC-SR04 |
|---|---|
| Onderdeelnummer | HC-SR04 |
| Logica/IO-spanning | 5 V |
| Voedingsspanning | 5 V |
| Uitgangsstroom (per kanaal) | 16 mA |
| Piekstroom (per kanaal) | … |
| PWM-frequentierichtlijn | … |
| Ingangslogische drempels | … |
| Spanningsval / RDS(on) / verzadiging | … |
| Thermische limieten | … |
| Behuizing | … |
| Opmerkingen / varianten | Meetbereik: 2 cm tot 400 cm |
- Zorg voor een correcte voedingsspanning van 5 V voor de sensor.
- Houd een vrij pad voor ultrasone golven om interferentie te voorkomen.
- Gebruik korte draden om signaalvertraging en ruis te minimaliseren.
- Zorg voor correcte pinverbindingen om miscommunicatie te voorkomen.
- Test de sensor in verschillende omgevingen om de nauwkeurigheid te controleren.
Bedradingsinstructies

Om de ultrasone sensor op de ESP32 aan te sluiten, verbindt u de VCC-pin van de sensor met de 5V-pin op de ESP32. Verbind vervolgens de GND-pin van de sensor met een van de aardingspinnen (GND) op de ESP32. De triggerpin (Trig) van de sensor moet worden verbonden met GPIO 26 op de ESP32, terwijl de echopin (Echo) moet worden verbonden met GPIO 25. Deze opstelling stelt de ESP32 in staat om een signaal naar de sensor te sturen en het echosignaal te ontvangen om de afstand te berekenen.
Voor de zoemer verbindt u de positieve (lange) poot met GPIO 12 op de ESP32 en de negatieve (korte) poot met de GND. Zorg ervoor dat alle verbindingen stevig zijn om losse bedrading tijdens het gebruik te voorkomen. Als u een breadboard gebruikt, lijn dan de zoemerverbindingen correct uit om verkeerde bedrading te voorkomen. Raadpleeg de video voor bevestiging van de bedrading (in video op 05:12).
Codevoorbeelden & uitleg
De code initialiseert de pinnen voor de ultrasone sensor en stelt seriële communicatie in. De hoofdfunctie, readSensorData(), is verantwoordelijk voor het verzenden van een triggersignaal en het meten van de responstijd van de echopin.
const int echoPin = 25;
const int trigPin = 26;
void setup() {
Serial.begin(115200);
pinMode(echoPin, INPUT);
pinMode(trigPin, OUTPUT);
Serial.println("Ultrasonic sensor:");
}
De code definieert echoPin en trigPin als constanten voor de pinnen die zijn verbonden met de ultrasone sensor. In de setup()-functie initialiseren we seriële communicatie en stellen we de pinmodi dienovereenkomstig in.
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;
}
Dit fragment toont de readSensorData()-functie, die een puls van 10 microseconden naar de triggerpin stuurt. Vervolgens meet het de tijd die de echopin nodig heeft om het signaal terug te ontvangen, berekent het de afstand en retourneert deze waarde.
Ten slotte leest de loop-functie continu de afstand en print deze naar de seriële monitor. Als de afstand onder de 20 cm is, wordt de zoemer geactiveerd.
Demonstratie / wat te verwachten
Wanneer u het programma uitvoert, geeft de ESP32 de gemeten afstand in centimeters weer op de seriële monitor. Als een object binnen 20 cm van de sensor komt, zal de zoemer klinken. Dit gedrag kan worden getest door objecten op verschillende afstanden voor de sensor te plaatsen. Wees voorzichtig met omgekeerde polariteit en zorg ervoor dat de verbindingen worden gemaakt zoals gespecificeerd om problemen tijdens het gebruik te voorkomen (in video op 08:00).
Videotijdstempels
- 00:00 Start
- 1:46 Inleiding tot ultrasone sensor
- 6:02 Bedrading uitgelegd
- 7:37 ESP32 Arduino-code uitgelegd
- 11:33 ESP32-board en COM-poort selecteren in Arduino IDE
- 13:15 Demonstratie van het meten van afstand
- 16:43 Actie ondernemen op basis van afstand: zoemer
// 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
Dingen die je misschien nodig hebt
-
eBay
-
BanggoodPurchase HC-SR04 Ultrasonic Sensor from Banggoodbanggood.com
Hulpmiddelen en referenties
-
DocumentatieESP32 Tutorial 27/55- SunFounder doc page for Ultrasonic distance sensordocs.sunfounder.com
-
ExternHC-SR04 Ultrasonic Library from the Arduino official websiteplayground.arduino.cc
Bestanden📁
Geen bestanden beschikbaar.