มาทำระบบเซ็นเซอร์จอดรถอัจฉริยะด้วย Arduino กัน (Arduino Parking Sensor)
จะทำเซ็นเซอร์จอดรถด้วย Arduino เนี่ย ต้องมีอุปกรณ์นิดหน่อยจ้า เริ่มจากเซ็นเซอร์ตัวนึง ตามด้วยบัซเซอร์ (Buzzer) สำหรับเสียงเตือน แล้วก็ LED 8 ดวงไว้แสดงระยะ
ทำเซ็นเซอร์จอดรถด้วย Arduino ง่ายนิดเดียว แค่ใช้เซ็นเซอร์ HC-SR04 แต่ทีนี้เราต้องแสดงผลระยะห่างให้เห็นหน่อย วิธีง่ายๆ ก็ใช้ LED หลายๆ ดวงกับบัซเซอร์นี่แหละ
หลักการทำงานของเซ็นเซอร์และองค์ประกอบทางเทคนิค
หัวใจของโปรเจคนี้คือ เซ็นเซอร์อัลตราโซนิค HC-SR04 ซึ่งทำงานบนหลักการสะท้อนของเสียง (โซนาร์) เซ็นเซอร์จะปล่อยคลื่นเสียงความถี่สูง (ที่หูมนุษย์ฟังไม่เห็น) ออกไปผ่านตัวส่ง (Transmitter) แล้วรอรับคลื่นที่สะท้อนกลับมาจากวัตถุผ่านตัวรับ (Receiver)
ในทางเทคนิค เราต้องเขียนโค้ดเพื่อส่งสัญญาณพัลส์ (Pulse) ขนาด 10 ไมโครวินาทีไปที่ขา Trigger ของเซ็นเซอร์ จากนั้นเราก็วัดระยะเวลาที่ขา Echo ยังคงเป็นสถานะ HIGH อยู่ ระยะเวลานี้เราเรียกว่า Time of Flight (ToF) ซึ่งเอาไปคำนวณหาระยะทางได้ด้วยสูตร:
ระยะทาง (ซม.) = (เวลาเดินทาง * 0.034) / 2
(โดยที่ 0.034 คือความเร็วเสียงในอากาศหน่วยเซนติเมตรต่อไมโครวินาที)
บอร์ดทดลองกับสายจัมเปอร์ ปัญหาชวนปวดหัว
เวลาใช้บัซเซอร์เนี่ย ต้องใช้ทรานซิสเตอร์ (Transistor) ด้วยนะ เพราะกระแสที่บัซเซอร์ต้องการอาจมากกว่าที่ขาของ Arduino จะจ่ายให้ไหว การต่อวงจรพวกนี้บางทีก็เบื่อและเหนื่อยมือเอาเรื่อง

ความท้าทายในการเดินสายบนเบรดบอร์ด
เมื่อเราสร้างระบบที่ต้องการการแสดงผลแบบละเอียด เราก็ต้องมีหน่วยแสดงผลที่มีประสิทธิภาพ ในโปรเจคนี้เราใช้ LED ทั้งหมด 8 ดวง แบ่งเป็น:
- LED สีเขียว 3 ดวง: ระยะปลอดภัย
- LED สีเหลือง 3 ดวง: โซนเตือน
- LED สีแดง 2 ดวง: โซนหยุด!
แต่ปัญหาคือ การเดินสายวงจรบนเบรดบอร์ดมักจะกลายเป็นกองสายจัมเปอร์ที่ยุ่งเหยิง และจัดการอุปกรณ์ลำบาก
รายละเอียดโปรเจค
เราจะใช้ LED 8 ดวงในโปรเจคของเรา โดย 2 ดวงจะเป็นสีแดง, 3 ดวงสีเหลือง และ 3 ดวงสีเขียว การจะใช้ LED 8 ดวงได้ เราต้องใช้ตัวต้านทาน (Resistor) 220 โอห์ม 8 ตัวด้วย ซึ่งการเตรียมวงจรบนเบรดบอร์ดให้ใช้ตัวต้านทาน 8 ตัวพร้อม LED 8 ดวงเนี่ย ท้าทายพอสมควรเลยล่ะ

นอกจากนี้ ระบบเสียงที่ใช้ บัซเซอร์ ก็มีความซับซ้อนซ่อนอยู่ แม้บัซเซอร์จะดูเหมือนใช้กระแสไม่มาก แต่ในทางปฏิบัติ ขาของ Arduino อาจจ่ายกระแสให้บัซเซอร์บางประเภทไม่เสถียร หรือเสียงอาจไม่ดังพอ ดังนั้นเราจึงต้องใช้ ทรานซิสเตอร์ (เช่น S8050 หรือ 2N2222) ทำหน้าที่เป็นสวิตช์อิเล็กทรอนิกส์ เพื่อดึงกระแสตรงจากแหล่งจ่ายไฟแทนที่จะดึงจากขาของ Arduino โดยตรง

ทางเลือกใหม่: คิตเซ็นเซอร์จอดรถจาก Circle Electronic
Circle Electronic Parking Sensor Kit
สำหรับใครที่อยากทำเซ็นเซอร์จอดรถด้วย Arduino แบบไม่ปวดหัว Circle Electronic เขาออกแบบแผงวงจรสำเร็จรูปมาให้แล้วจ้า บนบอร์ดมี LED 8 ดวง พร้อมบัซเซอร์ ตัวต้านทาน และทรานซิสเตอร์สำหรับขับสัญญาณเสียงในตัว

ผู้ใช้แค่เสียบเซ็นเซอร์ HC-SR04 เข้ากับเฮดเดอร์ตัวเมีย 4 ขาที่ด้านหน้า แล้วต่อสายสัญญาณไม่กี่เส้นไปหา Arduino เท่านี้ก็พร้อมเขียนโค้ดได้เลย ช่วยลดโอกาสเกิดสัญญาณรบกวน (Noise) ที่มักพบในวงจรเบรดบอร์ดที่มีสายยาวๆ ลงได้อย่างมาก จัดไปวัยรุ่น!
ตรรกะการเขียนโปรแกรม (Logic of Code)
ตรรกะการทำงานของเซ็นเซอร์จอดรถตัวนี้ใช้หลัก การเปรียบเทียบกับค่ากำหนด (Threshold Comparison) แบบง่ายๆ:
- อ่านระยะทาง: ดึงค่าจาก HC-SR04 มาเป็นหน่วยเซนติเมตร
- จัดหมวดหมู่ข้อมูล: ใช้ฟังก์ชันตรวจสอบเงื่อนไข (if-else หรือ switch-case) มาดูว่าค่าระยะทางที่วัดได้ตกอยู่ในช่วงไหน
- ถ้าระยะทาง > 100 ซม.: ปิดไฟ LED ทุกดวง (ยังห่างโล่งๆ)
- ถ้าระยะทาง 50-100 ซม.: ค่อยๆ เปิดไฟสีเขียวตามความใกล้ (เริ่มจับตาดูแล้วน้อง)
- ถ้าระยะทาง 20-50 ซม.: เปิดไฟสีเหลือง และสั่งให้ออด (Buzzer) ร้องติ๊ง ต่องๆ ช้าๆ เป็นจังหวะ (ระวังตัวหน่อยนะ!)
- ถ้าระยะทาง < 20 ซม.: เปิดไฟสีแดงเต็มที่ และให้ออดร้องติ๊งต่อเนื่องเตือนภัยฉุกเฉิน (ห้ามช็อตนะตัวนี้!)
เคล็ดลับสำคัญ: ใช้เทคนิค Non-blocking timing กับฟังก์ชัน millis() แทนที่จะใช้ delay() ในการควบคุมจังหวะเสียงออด วิธีนี้จะทำให้การวัดระยะทางของเซ็นเซอร์ยังทำงานได้ลื่นไหลและแม่นยำ ไม่สะดุดหรือค้างตอนที่ออดกำลังร้องอยู่ สู้งานนะน้อง!