บทเรียน ESP32 27/55 - การวัดระยะทางด้วยเซนเซอร์อัลตราโซนิก | ชุดเรียนรู้ IoT ESP32 ของ SunFounder
ในบทช่วยสอนนี้ เราจะเรียนรู้วิธีการใช้เซนเซอร์วัดระยะทางแบบอัลตราโซนิกร่วมกับ ESP32 เพื่อวัดระยะทางและแสดงผลบนหน้าจอ เราจะสำรวจวิธีการเปิดใช้งานออดเมื่อตรวจพบวัตถุภายในระยะที่กำหนด โปรเจกต์นี้แสดงให้เห็นถึงความสามารถรอบด้านของไมโครคอนโทรลเลอร์ ESP32 ซึ่งรวมความสามารถ Wi-Fi และ Bluetooth เข้าด้วยกัน ทำให้เหมาะสำหรับการใช้งาน IoT ต่างๆ
ตลอดคู่มือนี้ คุณจะพบคำอธิบายเกี่ยวกับส่วนประกอบฮาร์ดแวร์ คำแนะนำการเดินสายไฟ และตัวอย่างโค้ดเพื่อช่วยให้คุณดำเนินโปรเจกต์ได้สำเร็จ เพื่อความชัดเจนเพิ่มเติม โปรดดูวิดีโอ (ในวิดีโอที่ 00:00)
คำอธิบายฮาร์ดแวร์
ส่วนประกอบหลักของโปรเจกต์นี้ประกอบด้วยไมโครคอนโทรลเลอร์ ESP32 เซนเซอร์อัลตราโซนิก (HC-SR04) และออด เซนเซอร์อัลตราโซนิกประกอบด้วยสองส่วนหลัก: ตัวส่งที่ปล่อยคลื่นอัลตราโซนิกและตัวรับที่ฟังคลื่นที่สะท้อนกลับ โดยการวัดเวลาที่คลื่นใช้ในการกลับมา เราสามารถคำนวณระยะทางถึงวัตถุได้
ESP32 ทำหน้าที่เป็นตัวควบคุมหลัก ประมวลผลข้อมูลจากเซนเซอร์อัลตราโซนิกและควบคุมออดตามระยะทางที่วัดได้ ออดจะดังเมื่อระยะทางที่ตรวจพบน้อยกว่าเกณฑ์ที่กำหนด ซึ่งบ่งบอกว่าวัตถุอยู่ใกล้เกินไป
รายละเอียดจาก Datasheet
| ผู้ผลิต | HC-SR04 |
|---|---|
| หมายเลขชิ้นส่วน | HC-SR04 |
| แรงดันไฟฟ้าลอจิก/IO | 5 V |
| แรงดันไฟฟ้าจ่าย | 5 V |
| กระแสเอาต์พุต (ต่อช่อง) | 16 mA |
| กระแสสูงสุด (ต่อช่อง) | … |
| คำแนะนำความถี่ PWM | … |
| เกณฑ์แรงดันไฟฟ้าอินพุตลอจิก | … |
| แรงดันตก / RDS(on) / ความอิ่มตัว | … |
| ขีดจำกัดความร้อน | … |
| แพ็คเกจ | … |
| หมายเหตุ / รุ่นต่างๆ | ช่วงการวัด: 2 ซม. ถึง 400 ซม. |
- ตรวจสอบให้แน่ใจว่ามีแหล่งจ่ายไฟ 5 V ที่เหมาะสมสำหรับเซนเซอร์
- รักษาเส้นทางที่ชัดเจนสำหรับคลื่นอัลตราโซนิกเพื่อหลีกเลี่ยงการรบกวน
- ใช้สายไฟสั้นเพื่อลดความล่าช้าของสัญญาณและสัญญาณรบกวน
- ตรวจสอบการเชื่อมต่อพินที่ถูกต้องเพื่อหลีกเลี่ยงการสื่อสารที่ผิดพลาด
- ทดสอบเซนเซอร์ในสภาพแวดล้อมต่างๆ เพื่อตรวจสอบความแม่นยำ
คำแนะนำการเดินสายไฟ

ในการเดินสายไฟเซนเซอร์อัลตราโซนิกเข้ากับ ESP32 ให้เชื่อมต่อพิน VCC ของเซนเซอร์เข้ากับพิน 5V บน ESP32 จากนั้นเชื่อมต่อพิน GND ของเซนเซอร์เข้ากับพินกราวด์ (GND) ตัวใดตัวหนึ่งบน ESP32 พินทริกเกอร์ (Trig) จากเซนเซอร์ควรเชื่อมต่อกับ GPIO 26 บน ESP32 ในขณะที่พินเอคโค่ (Echo) ควรเชื่อมต่อกับ GPIO 25 การตั้งค่านี้ช่วยให้ ESP32 ส่งสัญญาณไปยังเซนเซอร์และรับสัญญาณเอคโค่เพื่อคำนวณระยะทาง
สำหรับออด ให้เชื่อมต่อขาบวก (ยาว) เข้ากับ GPIO 12 บน ESP32 และขาลบ (สั้น) เข้ากับ 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;
}
ส่วนนี้แสดงฟังก์ชัน readSensorData() ซึ่งส่งพัลส์ 10 ไมโครวินาทีไปยังพินทริกเกอร์ จากนั้นจะวัดเวลาที่พินเอคโค่ใช้ในการรับสัญญาณกลับ คำนวณระยะทาง และส่งค่านี้กลับมา
สุดท้าย ฟังก์ชันลูปจะอ่านระยะทางอย่างต่อเนื่องและพิมพ์ลงในซีเรียลมอนิเตอร์ หากระยะทางต่ำกว่า 20 ซม. ออดจะถูกเปิดใช้งาน
การสาธิต / สิ่งที่คาดหวัง
เมื่อคุณรันโปรแกรม ESP32 จะแสดงระยะทางที่วัดได้เป็นเซนติเมตรบนซีเรียลมอนิเตอร์ หากวัตถุเข้ามาภายใน 20 ซม. จากเซนเซอร์ ออดจะดัง พฤติกรรมนี้สามารถทดสอบได้โดยวางวัตถุที่ระยะต่างๆ ด้านหน้าเซนเซอร์ ระวังการกลับขั้วและตรวจสอบให้แน่ใจว่าการเชื่อมต่อเป็นไปตามที่ระบุเพื่อหลีกเลี่ยงปัญหาใดๆ ระหว่างการทำงาน (ในวิดีโอที่ 08:00)
ไทม์สแตมป์ในวิดีโอ
- 00:00 เริ่มต้น
- 1:46 แนะนำเซนเซอร์อัลตราโซนิก
- 6:02 อธิบายการเดินสายไฟ
- 7:37 อธิบายโค้ด Arduino สำหรับ ESP32
- 11:33 การเลือกบอร์ด ESP32 และพอร์ต COM ใน Arduino IDE
- 13:15 สาธิตการวัดระยะทาง
- 16:43 การดำเนินการตามระยะทาง: ออด
// 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
สิ่งที่คุณอาจต้องการ
-
อีเบย์
-
แบงกูดPurchase HC-SR04 Ultrasonic Sensor from Banggoodbanggood.com
แหล่งข้อมูลและเอกสารอ้างอิง
-
เอกสารESP32 Tutorial 27/55- SunFounder doc page for Ultrasonic distance sensordocs.sunfounder.com
-
ภายนอกHC-SR04 Ultrasonic Library from the Arduino official websiteplayground.arduino.cc
ไฟล์📁
ไม่มีไฟล์ที่พร้อมใช้งาน