Search Code

ESP32 Оқулық 27/55 - Ультрадыбыстық сенсормен қашықтықты өлшеу | SunFounder-дің ESP32 IoT оқу жиынтығы

ESP32 Оқулық 27/55 - Ультрадыбыстық сенсормен қашықтықты өлшеу | SunFounder-дің ESP32 IoT оқу жиынтығы

Осы оқулықта біз ESP32-мен ультрадыбыстық қашықтық сенсорын қолданып, қашықтықтарды өлшеуді және нәтижелерді экранда көрсетуді үйренеміз. Сондай-ақ, белгілі бір диапазонда нысан анықталған кезде дыбыстық сигналды қалай іске қосу керектігін зерттейміз. Бұл жоба ESP32 микроконтроллерінің әмбебаптығын көрсетеді, ол Wi-Fi және Bluetooth мүмкіндіктерін біріктіреді, бұл оны әртүрлі IoT қолданбаларына қолайлы етеді.

ultrasonic_principle

Осы нұсқаулық бойы сіз жобаны сәтті жүзеге асыруға көмектесетін аппараттық құрамдас бөліктердің түсіндірмелерін, сым қосу нұсқауларын және код үзінділерін табасыз. Қосымша түсініктілік үшін бейнені қараңыз (бейнеде 00:00).

Аппараттық құрал түсіндірмесі

Бұл жобаның негізгі құрамдас бөліктеріне ESP32 микроконтроллері, ультрадыбыстық сенсор (HC-SR04) және дыбыстық сигнал кіреді. Ультрадыбыстық сенсор екі негізгі бөліктен тұрады: ультрадыбыстық толқындарды шығаратын таратқыш және шағылысқан толқындарды тыңдайтын қабылдағыш. Толқындардың қайту уақытын өлшеу арқылы біз нысанға дейінгі қашықтықты есептей аламыз.

ESP32 орталық контроллер ретінде қызмет етеді, ультрадыбыстық сенсордан деректерді өңдейді және өлшенген қашықтыққа негізделген дыбыстық сигналды басқарады. Анықталған қашықтық белгіленген шектен аз болғанда, дыбыстық сигнал шығады, бұл нысанның тым жақын екенін көрсетеді.

Деректер парағының мәліметтері

Өндіруші HC-SR04
Бөлшек нөмірі HC-SR04
Логика/IO кернеуі 5 В
Қоректендіру кернеуі 5 В
Шығыс тогы (арнаға) 16 мА
Ең жоғары ток (арнаға)
ШИМ жиілігі бойынша нұсқау
Кіріс логикалық шектері
Кернеудің төмендеуі / RDS(on) / қанығу
Жылулық шектеулер
Қаптама
Ескертулер / нұсқалар Өлшеу диапазоны: 2 см-ден 400 см-ге дейін

 

  • Сенсор үшін 5 В қоректендіруді дұрыс қамтамасыз етіңіз.
  • Кедергілерді болдырмау үшін ультрадыбыстық толқындарға ашық жолды сақтаңыз.
  • Сигнал кідірісі мен шуды азайту үшін қысқа сымдарды қолданыңыз.
  • Қате байланысты болдырмау үшін түйреуіш қосылымдарының дұрыстығын қамтамасыз етіңіз.
  • Дәлдікті тексеру үшін сенсорды әртүрлі орталарда сынап көріңіз.

Сым қосу нұсқаулары

ESP32-27_ultrasonic_wiring

Ультрадыбыстық сенсорды ESP32-ге қосу үшін сенсордың VCC түйреуішін ESP32-дегі 5V түйреуішіне қосыңыз. Әрі қарай, сенсордың GND түйреуішін ESP32-дегі жерге (GND) түйреуіштерінің біріне қосыңыз. Сенсордағы триггер түйреуіші (Trig) ESP32-дегі GPIO 26-ға, ал эхо түйреуіші (Echo) GPIO 25-ке қосылуы керек. Бұл орнату ESP32-ге сенсорға сигнал жіберуге және қашықтықты есептеу үшін эхо сигналын қабылдауға мүмкіндік береді.

ESP32-27_ultrasonic_schematic

Дыбыстық сигнал үшін оң (ұзын) аяқшаны ESP32-дегі GPIO 12-ге, ал теріс (қысқа) аяқшаны GND-ге қосыңыз. Жұмыс кезінде бос сымдарды болдырмау үшін барлық қосылымдардың берік екеніне көз жеткізіңіз. Егер макет тақтасын қолдансаңыз, қате қосуды болдырмау үшін дыбыстық сигнал қосылымдарын дұрыс туралаңыз. Сым қосуды растау үшін бейнені қараңыз (бейнеде 05:12).

Код мысалдары және түсіндірме

Код ультрадыбыстық сенсорға арналған түйреуіштерді инициализациялайды және сериялық байланысты орнатады. Негізгі функция readSensorData() триггер сигналын жіберуге және эхо түйреуішінен жауап уақытын өлшеуге жауапты.

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

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

Код ультрадыбыстық сенсорға қосылған түйреуіштер үшін echoPin және trigPin тұрақтыларын анықтайды. setup() функциясында біз сериялық байланысты инициализациялаймыз және түйреуіш режимдерін сәйкесінше орнатамыз.

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

Бұл үзінді триггер түйреуішіне 10 микросекундтық импульс жіберетін readSensorData() функциясын көрсетеді. Содан кейін ол эхо түйреуішінің сигналды қабылдау уақытын өлшейді, қашықтықты есептейді және осы мәнді қайтарады.

Соңында, цикл функциясы қашықтықты үздіксіз оқиды және оны сериялық мониторға басып шығарады. Егер қашықтық 20 см-ден төмен болса, дыбыстық сигнал іске қосылады.

Демонстрация / Не күтуге болады

Бағдарламаны іске қосқанда, ESP32 өлшенген қашықтықты сантиметрмен сериялық мониторда көрсетеді. Егер нысан сенсорға 20 см ішінде кірсе, дыбыстық сигнал шығады. Бұл әрекетті сенсордың алдына әртүрлі қашықтықтағы нысандарды қою арқылы тексеруге болады. Полярлықтың ауысуына абай болыңыз және жұмыс кезінде ақауларды болдырмау үшін қосылымдардың көрсетілгендей жасалғанына көз жеткізіңіз (бейнеде 08:00).

Бейне уақыт белгілері

  • 00:00 Бастау
  • 1:46 Ультрадыбыстық сенсорға кіріспе
  • 6:02 Сымдарды қосу түсіндірілді
  • 7:37 ESP32 Arduino коды түсіндірілді
  • 11:33 Arduino IDE-де ESP32 платасын және COM портын таңдау
  • 13:15 Қашықтықты өлшеу демонстрациясы
  • 16:43 Қашықтықпен әрекет: дыбыстық сигнал

Суреттер

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
Тіл: 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;
}

Сізге қажет болуы мүмкін нәрселер

Ресурстар мен сілтемелер

Файлдар📁

Файлдар жоқ.