HC-SR04P คืออะไร? วิธีวัดระยะทางด้วย Ultrasonic Sensor และ Arduino
HC-SR04P คือ เซนเซอร์อัลตร้าโซนิค (Ultrasonic Sensor) สำหรับวัดระยะห่างระหว่างตัวเซนเซอร์กับวัตถุ โดยอาศัยหลักการส่งคลื่นเสียงความถี่สูง (40 kHz) ออกไป และจับเวลาที่คลื่นเสียงนั้นเดินทางไปกระทบวัตถุแล้วสะท้อนกลับมา จากนั้นจึงนำค่าเวลามาคำนวณเป็นระยะทาง
เซนเซอร์รุ่นนี้เป็นที่นิยมอย่างมากในโปรเจกต์หุ่นยนต์หลบหลีกสิ่งกีดขวาง, ระบบตรวจจับวัตถุ, การวัดระดับน้ำในถัง และอื่นๆ อีกมากมาย
HC-SR04P vs HC-SR04 (รุ่นเก่า): จุดเด่นสำคัญของรุ่น P คือการรองรับแรงดันไฟฟ้าได้ทั้ง 3.3V และ 5V ทำให้สามารถใช้งานได้กับบอร์ดไมโครคอนโทรลเลอร์ที่หลากหลายมากขึ้น เช่น ESP32, Raspberry Pi โดยไม่ต้องใช้วงจรแปลงระดับแรงดัน (Logic Level Shifter) เพิ่มเติม
สเปคของ HC-SR04P
แรงดันไฟฟ้าที่รองรับ |
3.0V – 5.5V DC |
กระแสขณะทำงาน |
ประมาณ 8 mA |
ช่วงวัดระยะ |
2 ซม. – 400 ซม. (4 เมตร) |
ความแม่นยำ |
ประมาณ ±3 มม. |
มุมการวัด |
ประมาณ 15° |
อินเทอร์เฟซ |
ดิจิทัล (ใช้ขา Trig สำหรับส่ง และ Echo สำหรับรับ) |
ขาเชื่อมต่อ |
4 ขา (VCC, Trig, Echo, GND) |
การใช้งานกับ Arduino
✅ การต่อสาย
ขาบน HC-SR04P |
ต่อกับขาบน Arduino UNO |
VCC |
5V (หรือ 3.3V) |
GND |
GND |
Trig (Trigger) |
ขา Digital ใดก็ได้ (เช่น D9) |
Echo |
ขา Digital ใดก็ได้ (เช่น D10) |
✅ ตัวอย่างโค้ด Arduino
โค้ดนี้จะสั่งให้เซนเซอร์วัดระยะทางทุกๆ ครึ่งวินาที แล้วแสดงผลเป็นหน่วยเซนติเมตรทาง Serial Monitor
// กำหนดขา Trig และ Echo
const int trigPin = 9;
const int echoPin = 10;
void setup() {
Serial.begin(9600); // เริ่มการสื่อสารแบบ Serial
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop() {
long duration;
float distance;
// สร้างพัลส์สั้นๆ ที่ขา Trig เพื่อสั่งให้เซนเซอร์ส่งคลื่นเสียง
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// อ่านค่าเวลาที่คลื่นเสียงใช้เดินทางไป-กลับ (หน่วยเป็น microsecond)
duration = pulseIn(echoPin, HIGH);
// คำนวณเป็นระยะทาง (หน่วยเป็นเซนติเมตร)
// สูตร: ระยะทาง = (ความเร็วเสียง * เวลา) / 2
// ความเร็วเสียง = 340 m/s หรือ 0.034 cm/μs
distance = duration * 0.034 / 2;
// แสดงผล
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
delay(500); // หน่วงเวลา 0.5 วินาที ก่อนวัดครั้งต่อไป
}
💡 ไอเดียการประยุกต์ใช้งาน
โปรเจกต์ |
การใช้งาน HC-SR04P |
หุ่นยนต์หลบหลีกสิ่งกีดขวาง |
ติดตั้งไว้ด้านหน้าหุ่นยนต์เพื่อวัดระยะจากกำแพงหรือสิ่งของ แล้วสั่งให้เลี้ยวหลบ |
เซนเซอร์วัดระดับน้ำ |
ติดตั้งไว้เหนือผิวน้ำในถัง เพื่อวัดระยะห่างและคำนวณระดับน้ำที่เหลืออยู่ |
ระบบช่วยจอดรถ |
ติดตั้งไว้ท้ายรถเพื่อวัดระยะจากวัตถุด้านหลัง พร้อมส่งเสียงเตือนเมื่อเข้าใกล้เกินไป |
ระบบเปิดประตู/ก๊อกน้ำอัตโนมัติ |
ใช้ตรวจจับมือหรือบุคคลที่เข้ามาในระยะเพื่อสั่งงานอุปกรณ์ |
ไม้บรรทัดดิจิทัล |
สร้างเครื่องมือวัดระยะทางแบบพกพา แสดงผลบนจอ OLED หรือ LCD |
ข้อดีและข้อควรระวัง
✅ ข้อดีของ HC-SR04P
-
รองรับทั้ง 3.3V และ 5V ทำให้ใช้งานได้กับบอร์ดหลากหลายรุ่นโดยตรง
-
ใช้งานง่าย มีโค้ดและตัวอย่างมากมายให้ศึกษา
-
ราคาประหยัด เป็นเซนเซอร์วัดระยะทางที่คุ้มค่าที่สุดตัวหนึ่ง
-
วัดได้ไกลและแม่นยำ เพียงพอสำหรับโปรเจกต์ส่วนใหญ่ (สูงสุด 4 เมตร)
⚠️ ข้อควรระวัง
-
ไม่กันน้ำ ตัวเซนเซอร์ไม่ควรโดนน้ำหรือความชื้นโดยตรง
-
พื้นผิวของวัตถุมีผลต่อการวัด วัตถุที่นุ่มหรือดูดซับเสียง (เช่น ผ้า, ฟองน้ำ) อาจทำให้วัดค่าได้ไม่แม่นยำ
-
การรบกวนของคลื่น หากใช้งานหลายตัวพร้อมกันในบริเวณใกล้เคียง อาจเกิดการรบกวนของคลื่นเสียงได้