สิ่งประดิษฐ์เกิดจากกระบวนการคิดเพื่อแก้ปัญหาใดๆ และเรามักจะพบกับปัญหาที่เกี่ยวข้องกับระยะทางในช่วงสั้นๆที่มีความแม่นยำ หากความต้องการที่กล่าวมาข้างต้นเราจะพิจารณาเอาอุปกรณ์ตัวนึงเข้ามาแก้ปัญหาเหล่านี้ เป็นอุปกรณ์ที่ได้รับความนิยมเป็นอย่างมากเพราะใช้งานง่ายการเชื่อมต่อสื่อสารไม่ซับซ้อนและมีโปรแกรมตัวอย่างให้ใช้งานมากมายนั้นคือ HC-SR04 เป็นเซ็นเซอร์วัดระยะทางด้วยอัลตราโซนิก (Ultrasonic Sensor) ที่ทำงานโดยการปล่อยคลื่นเสียงความถี่สูงและรับสัญญาณสะท้อนกลับมาเพื่อคำนวณระยะทาง วัดจากระยะเวลาที่เสียงใช้ในการเดินทางจากตัวปล่อย (transmitter) ไปยังวัตถุและสะท้อนกลับมาที่ตัวรับ (receiver)
การทำงานของ HC-SR04
- Trigger Signal: ใช้ขาสัญญาณ Trigger เพื่อส่งพัลส์สั้น ๆ ให้กับเซ็นเซอร์ โดยต้องส่งสัญญาณที่มีความกว้าง 10 ไมโครวินาที
- Sound Emission: เมื่อรับสัญญาณจาก Trigger ขา Echo จะเริ่มทำงาน โดยเซ็นเซอร์จะปล่อยคลื่นเสียงที่มีความถี่ 40 kHz ออกไปจากตัวปล่อย
- Reflection: คลื่นเสียงเดินทางไปยังวัตถุ และเมื่อชนกับวัตถุจะสะท้อนกลับมายังตัวรับของเซ็นเซอร์
- Echo Signal: ขา Echo จะรับสัญญาณเสียงที่สะท้อนกลับมา โดยระยะเวลาที่ใช้ในการเดินทางไปและกลับของคลื่นจะถูกนำมาคำนวณเพื่อหาค่าระยะทาง
- Distance Calculation: ใช้สูตรการคำนวณระยะทางดังนี้: หารด้วย 2 เนื่องจากคลื่นเสียงต้องเดินทางไปและกลับ
- VCC: จ่ายไฟ 5V ให้กับ HC-SR04
- GND: ต่อเข้ากับกราวด์
- Trigger: ต่อเข้ากับขาดิจิตอลของ Arduino เช่น Pin 9
- Echo: ต่อเข้ากับขาดิจิตอลของ Arduino เช่น Pin 10
- pinMode(trigPin, OUTPUT): กำหนดขา Trigger เป็นเอาต์พุต
- pinMode(echoPin, INPUT): กำหนดขา Echo เป็นอินพุตเพื่อรับสัญญาณสะท้อนกลับ
- digitalWrite(trigPin, LOW): ทำให้ขา Trigger ต่ำก่อนเริ่มต้น
- pulseIn(echoPin, HIGH): วัดระยะเวลาที่ขา Echo สูง (สัญญาณเสียงสะท้อนกลับ)
- คำนวณระยะทาง: นำเวลาที่ได้จาก Echo มาคูณด้วยความเร็วเสียงเพื่อหาค่าระยะทาง
การต่อวงจร
สำหรับการต่อใช้งานนั้น อุปกรณ์ทุกชนิดจำเป็นต้องมีพลังงานเลี้ยงเพื่อให้ตัวมันเองสามารถทำงานได้เราจึงต้องต่อไฟเลี้ยง Vcc และ Gnd เพื่อให้การทำงานได้ครบวงจร และการใช้งานรับส่งข้อมูลสามารถต่อเข้ากับขาดิจิตอลขาใดๆก็ได้ของ arduino แต่เมื่อต่อแล้วต้องกำหนดขานั้นๆให้ตรงกับขาที่เปลี่ยนไปด้วย มิฉนั้นการอ่านค่าจะเกิดความผิดพลาด และเป็นจุดที่นักเรียนมือใหม่มักจะผิดพลาด.
ตัวอย่างโค้ดการใช้งาน HC-SR04 กับ Arduino
const int trigPin = 9;
const int echoPin = 10;
void setup() {
Serial.begin(9600); // เริ่มต้นการสื่อสารผ่าน Serial Monitor
pinMode(trigPin, OUTPUT); // กำหนดขา Trigger เป็นเอาต์พุต
pinMode(echoPin, INPUT); // กำหนดขา Echo เป็นอินพุต
}
void loop() {
long duration;
float distance;
// ทำความสะอาดสัญญาณที่ขา Trigger ก่อน
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
// ส่งพัลส์ที่ขา Trigger นาน 10 ไมโครวินาที
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// อ่านค่าจากขา Echo เป็นระยะเวลาที่เสียงใช้ในการเดินทาง
duration = pulseIn(echoPin, HIGH);
// คำนวณระยะทาง (ความเร็วเสียงในอากาศคือ 343 m/s)
distance = (duration * 0.0343) / 2;
// แสดงผลระยะทางผ่าน Serial Monitor
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
// หน่วงเวลาการอ่านค่าครั้งถัดไป
delay(1000);
}
อธิบายโค้ด
ข้อควรระวัง
อย่าติดตั้งเซ็นเซอร์ใกล้พื้นผิวที่สามารถสะท้อนเสียงได้ดีเกินไป เพราะอาจทำให้ค่าที่อ่านได้คลาดเคลื่อน การวัดระยะทางอาจมีความคลาดเคลื่อนถ้าใช้งานในสภาพแวดล้อมที่มีสิ่งรบกวนเช่น เสียงลม หรือวัตถุที่ไม่สะท้อนเสียง