Search Code

Samouczek ESP32 27/55 - Pomiar odległości za pomocą czujnika ultradźwiękowego | Zestaw do nauki IoT ESP32 od SunFounder

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.

ultrasonic_principle

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

ESP32-27_ultrasonic_wiring

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.

ESP32-27_ultrasonic_schematic

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

Obrazy

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
Język: 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;
}

Rzeczy, których możesz potrzebować

Pliki📁

Brak dostępnych plików.