Search Code

Mafunzo ya ESP32 27/55 - Kupima Umbali kwa Sensor ya Ultrasonic | Kifurushi cha Kujifunza cha ESP32 IoT cha SunFounder

Mafunzo ya ESP32 27/55 - Kupima Umbali kwa Sensor ya Ultrasonic | Kifurushi cha Kujifunza cha ESP32 IoT cha SunFounder

Katika mafunzo haya, tutajifunza jinsi ya kutumia kihisi cha umbali cha ultrasonic na ESP32 kupima umbali na kuonyesha matokeo kwenye skrini. Pia tutachunguza jinsi ya kuamsha buzzer wakati kitu kinapogunduliwa ndani ya eneo maalum. Mradi huu unaangazia uwezo mwingi wa microcontroller ya ESP32, ambayo inajumuisha uwezo wa Wi-Fi na Bluetooth, na kuifanya kufaa kwa matumizi mbalimbali ya IoT.

kanuni_ya_ultrasonic

Katika mwongozo huu wote, utapata maelezo ya vipengele vya vifaa, maagizo ya wiring, na sehemu za msimbo ili kukusaidia kutekeleza mradi kwa mafanikio. Kwa uwazi zaidi, tafadhali rejelea video (katika video saa 00:00).

Vifaa Vimeelezwa

Vipengele vikuu vya mradi huu ni pamoja na microcontroller ya ESP32, kihisi cha ultrasonic (HC-SR04), na buzzer. Kihisi cha ultrasonic kina sehemu kuu mbili: kisambazaji kinachotoa mawimbi ya ultrasonic na kipokezi kinachosikiliza mawimbi yaliyoakisiwa. Kwa kupima muda unaochukuliwa na mawimbi kurudi, tunaweza kuhesabu umbali wa kitu.

ESP32 hutumika kama kidhibiti kikuu, kuchakata data kutoka kwa kihisi cha ultrasonic na kudhibiti buzzer kulingana na umbali uliopimwa. Buzzer italia wakati umbali unaogunduliwa ni chini ya kiwango maalum, ikionyesha kwamba kitu kiko karibu sana.

Maelezo ya Datasheet

Mtengenezaji HC-SR04
Nambari ya sehemu HC-SR04
Voltage ya Logic/IO 5 V
Voltage ya usambazaji 5 V
Mkondo wa pato (kwa kila chaneli) 16 mA
Mkondo wa kilele (kwa kila chaneli)
Mwongozo wa mzunguko wa PWM
Viwango vya kizingiti vya logic ya kuingiza
Kushuka kwa voltage / RDS(on) / kueneza
Mipaka ya joto
Kifurushi
Vidokezo / lahaja Kipimo cha umbali: 2 cm hadi 400 cm

 

  • Hakikisha usambazaji sahihi wa umeme wa 5 V kwa kihisi.
  • Weka njia wazi kwa mawimbi ya ultrasonic ili kuepuka usumbufu.
  • Tumia nyaya fupi ili kupunguza ucheleweshaji wa ishara na kelele.
  • Hakikisha miunganisho ya pini ni sahihi ili kuepuka mawasiliano yasiyo sahihi.
  • Jaribu kihisi katika mazingira mbalimbali ili kuangalia usahihi.

Maagizo ya Wiring

ESP32-27_ultrasonic_wiring

Ili kuunganisha kihisi cha ultrasonic kwenye ESP32, unganisha pini ya VCC ya kihisi kwenye pini ya 5V kwenye ESP32. Kisha, unganisha pini ya GND ya kihisi kwenye moja ya pini za ardhi (GND) kwenye ESP32. Pini ya trigger (Trig) kutoka kwa kihisi inapaswa kuunganishwa kwenye GPIO 26 kwenye ESP32, wakati pini ya echo (Echo) inapaswa kuunganishwa kwenye GPIO 25. Mpangilio huu unaruhusu ESP32 kutuma ishara kwa kihisi na kupokea ishara ya echo ili kuhesabu umbali.

ESP32-27_ultrasonic_schematic

Kwa buzzer, unganisha mguu chanya (mrefu) kwenye GPIO 12 kwenye ESP32 na mguu hasi (mfupi) kwenye GND. Hakikisha miunganisho yote ni thabiti ili kuzuia wiring iliyolegea wakati wa operesheni. Ikiwa unatumia breadboard, panga miunganisho ya buzzer vizuri ili kuepuka wiring isiyo sahihi. Hakikisha unarejelea video kwa uthibitisho wa wiring (katika video saa 05:12).

Mifano ya Msimbo & Maelezo ya Hatua kwa Hatua

Msimbo huanzisha pini za kihisi cha ultrasonic na kuanzisha mawasiliano ya serial. Kazi kuu, readSensorData(), inawajibika kutuma ishara ya trigger na kupima muda wa majibu kutoka kwa pini ya echo.

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

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

Msimbo unafafanua echoPin na trigPin kama viwango vya pini zilizounganishwa kwenye kihisi cha ultrasonic. Katika kazi ya setup(), tunaanzisha mawasiliano ya serial na kuweka hali za pini ipasavyo.

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

Sehemu hii inaonyesha kazi ya readSensorData(), ambayo hutuma pulse ya mikrosekunde 10 kwenye pini ya trigger. Kisha hupima muda unaochukuliwa na pini ya echo kupokea ishara kurudi, huhesabu umbali, na kurudisha thamani hii.

Hatimaye, kazi ya loop inasoma umbali mara kwa mara na kuuchapisha kwenye monitor ya serial. Ikiwa umbali ni chini ya 20 cm, buzzer itaamilishwa.

Maonyesho / Nini cha Kutarajia

Unapoendesha programu, ESP32 itaonyesha umbali uliopimwa kwa sentimita kwenye monitor ya serial. Ikiwa kitu kitaingia ndani ya 20 cm kutoka kwa kihisi, buzzer italia. Tabia hii inaweza kujaribiwa kwa kuweka vitu kwa umbali mbalimbali mbele ya kihisi. Kuwa mwangalifu kuhusu polarity iliyogeuzwa na hakikisha miunganisho imefanywa kama ilivyoelezwa ili kuepuka matatizo yoyote wakati wa operesheni (katika video saa 08:00).

Vidokezo vya Muda wa Video

  • 00:00 Anza
  • 1:46 Utangulizi wa Sensor ya Ultrasonic
  • 6:02 Uelekezaji wa waya umeelezwa
  • 7:37 Msimbo wa ESP32 Arduino umeelezwa
  • 11:33 Kuchagua bodi ya ESP32 na mlango wa COM katika Arduino IDE
  • 13:15 Maonyesho ya kupima umbali
  • 16:43 Kuchukua hatua kwa umbali: buzzer

Bilder

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
Språk: 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;
}

Tänker att du kanske behöver

Filer📁

Inga filer tillgängliga.