Samouczek ESP32 27/55 - Pomiar odległości za pomocą czujnika ultradźwiękowego | Zestaw do nauki IoT ESP32 od SunFounder
W tym samouczku nauczymy się, jak używać ultradźwiękowego czujnika odległości z ESP32 do mierzenia odległości i wyświetlania wyników na ekranie. Omówimy również, jak aktywować brzęczyk, gdy obiekt zostanie wykryty w określonym zakresie. Ten projekt podkreśla wszechstronność mikrokontrolera ESP32, który integruje możliwości Wi-Fi i Bluetooth, co czyni go odpowiednim do różnych zastosowań IoT.
W trakcie tego przewodnika znajdziesz wyjaśnienia dotyczące komponentów sprzętowych, instrukcje podłączania oraz fragmenty kodu, które pomogą Ci z powodzeniem zrealizować projekt. Dla dodatkowej jasności zapoznaj się z filmem (na filmie o 00:00).
Wyjaśnienie sprzętu
Główne komponenty tego projektu obejmują mikrokontroler ESP32, czujnik ultradźwiękowy (HC-SR04) oraz brzęczyk. Czujnik ultradźwiękowy składa się z dwóch głównych części: nadajnika, który emituje fale ultradźwiękowe, oraz odbiornika, który nasłuchuje odbitych fal. Mierząc czas potrzebny na powrót fal, możemy obliczyć odległość do obiektu.
ESP32 pełni rolę centralnego kontrolera, przetwarzając dane z czujnika ultradźwiękowego i sterując brzęczykiem na podstawie zmierzonej odległości. Brzęczyk będzie emitował dźwięk, gdy wykryta odległość będzie mniejsza niż określony próg, co wskazuje, że obiekt jest zbyt blisko.
Szczegóły z karty katalogowej
| Producent | HC-SR04 |
|---|---|
| Numer części | HC-SR04 |
| Napięcie logiki/IO | 5 V |
| Napięcie zasilania | 5 V |
| Prąd wyjściowy (na kanał) | 16 mA |
| Prąd szczytowy (na kanał) | … |
| Zalecana częstotliwość PWM | … |
| Progi logiczne wejścia | … |
| Spadek napięcia / RDS(on) / nasycenie | … |
| Limity termiczne | … |
| Obudowa | … |
| Uwagi / warianty | Zakres pomiarowy: od 2 cm do 400 cm |
- Zapewnij prawidłowe zasilanie 5 V dla czujnika.
- Utrzymuj czystą ścieżkę dla fal ultradźwiękowych, aby uniknąć zakłóceń.
- Używaj krótkich przewodów, aby zminimalizować opóźnienia sygnału i szumy.
- Upewnij się, że połączenia pinów są prawidłowe, aby uniknąć błędnej komunikacji.
- Przetestuj czujnik w różnych środowiskach, aby sprawdzić dokładność.
Instrukcje podłączania

Aby podłączyć czujnik ultradźwiękowy do ESP32, podłącz pin VCC czujnika do pinu 5V na ESP32. Następnie podłącz pin GND czujnika do jednego z pinów masy (GND) na ESP32. Pin wyzwalający (Trig) z czujnika należy podłączyć do GPIO 26 na ESP32, natomiast pin echa (Echo) należy podłączyć do GPIO 25. Ta konfiguracja pozwala ESP32 wysłać sygnał do czujnika i odebrać sygnał echa w celu obliczenia odległości.
Dla brzęczyka podłącz dodatnią (dłuższą) nóżkę do GPIO 12 na ESP32, a ujemną (krótszą) nóżkę do GND. Upewnij się, że wszystkie połączenia są pewne, aby zapobiec luźnemu okablowaniu podczas pracy. Jeśli używasz płytki stykowej, odpowiednio wyrównaj połączenia brzęczyka, aby uniknąć błędów w podłączeniu. Sprawdź film w celu potwierdzenia podłączeń (na filmie o 05:12).
Przykłady kodu i omówienie
Kod inicjalizuje piny dla czujnika ultradźwiękowego i konfiguruje komunikację szeregową. Główna funkcja, readSensorData(), odpowiada za wysłanie sygnału wyzwalającego i pomiar czasu odpowiedzi z pinu echa.
const int echoPin = 25;
const int trigPin = 26;
void setup() {
Serial.begin(115200);
pinMode(echoPin, INPUT);
pinMode(trigPin, OUTPUT);
Serial.println("Ultrasonic sensor:");
}
Kod definiuje echoPin i trigPin jako stałe dla pinów podłączonych do czujnika ultradźwiękowego. W funkcji setup() inicjalizujemy komunikację szeregową i ustawiamy tryby pinów odpowiednio.
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;
}
Ten fragment pokazuje funkcję readSensorData(), która wysyła 10-mikrosekundowy impuls na pin wyzwalający. Następnie mierzy czas potrzebny na odebranie sygnału przez pin echa, oblicza odległość i zwraca tę wartość.
Na koniec funkcja pętli ciągle odczytuje odległość i wypisuje ją na monitorze szeregowym. Jeśli odległość jest mniejsza niż 20 cm, brzęczyk zostanie aktywowany.
Demonstracja / Czego się spodziewać
Po uruchomieniu programu ESP32 wyświetli zmierzoną odległość w centymetrach na monitorze szeregowym. Jeśli obiekt znajdzie się w odległości mniejszej niż 20 cm od czujnika, brzęczyk wyda dźwięk. To zachowanie można przetestować, umieszczając obiekty w różnych odległościach przed czujnikiem. Zachowaj ostrożność w przypadku odwrotnej polaryzacji i upewnij się, że połączenia są wykonane zgodnie ze specyfikacją, aby uniknąć problemów podczas pracy (na filmie o 08:00).
Znaczniki czasu w filmie
- 00:00 Start
- 1:46 Wprowadzenie do czujnika ultradźwiękowego
- 6:02 Wyjaśnienie podłączenia
- 7:37 Wyjaśnienie kodu ESP32 w Arduino
- 11:33 Wybór płytki ESP32 i portu COM w Arduino IDE
- 13:15 Demonstracja pomiaru odległości
- 16:43 Działanie z odległością: brzęczyk
// 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
Rzeczy, których możesz potrzebować
-
Allegro
-
BanggoodPurchase HC-SR04 Ultrasonic Sensor from Banggoodbanggood.com
Zasoby i odniesienia
-
DokumentacjaESP32 Tutorial 27/55- SunFounder doc page for Ultrasonic distance sensordocs.sunfounder.com
-
ZewnętrznyHC-SR04 Ultrasonic Library from the Arduino official websiteplayground.arduino.cc
Pliki📁
Brak dostępnych plików.