ผมเพิ่งโพสต์วิดีโอลงบน YouTube เพื่ออธิบายทุกอย่างที่คุณสามารถอ่านได้ในบทความนี้ หากคุณสนใจรับชม นี่คือวิดีโอครับ
Ultrasonic sensor คืออุปกรณ์ที่สามารถ วัดระยะทางโดยใช้คลื่นเสียง โดยทำงานในลักษณะเดียวกับค้างคาวและโลมา - ด้วยการส่งคลื่นเสียงออกไปและรอฟังเสียงที่สะท้อนกลับมา
Ultrasonic sensor (HC-SR04) - มุมมองด้านหน้า,
Ultrasonic sensor (HC-SR04) - มุมมองด้านหลัง,
Transmitter (ส่งคลื่นเสียงความถี่สูง),
Receiver (ตรวจจับคลื่นเสียงความถี่สูง)Sensor ประกอบด้วยส่วนประกอบหลักสองส่วนคือ: transmitter และ receiver โดย transmitter จะทำหน้าที่ส่งเสียงความถี่สูง ซึ่งในความเป็นจริงแล้วคำว่า ultrasonic หมายถึงความถี่ที่เกินขอบเขตการได้ยินของมนุษย์ - หรือสิ่งที่สูงกว่า 20kHz นั่นเอง
เมื่อคลื่นเสียงกระทบกับวัตถุ มันจะสะท้อนกลับมาเหมือนเสียงเอคโค่ คลื่นที่สะท้อนกลับมานี้จะถูกตรวจจับโดย receiver จากนั้น sensor จะใช้ internal clock ของ micro-controller (Arduino) เพื่อหาว่าเสียงใช้เวลาเท่าไหร่ในการสะท้อนกลับมา โดยนาฬิกาเล็กๆ นี้จะเริ่มทำงานเมื่อมีการส่งคลื่นความถี่สูงออกไป และจะหยุดทำงานเมื่อตรวจพบเสียงสะท้อน
การใช้ code ทำให้เราสามารถเขียนโปรแกรมเพื่อเก็บค่าเวลาที่เกิดขึ้นระหว่างเหตุการณ์ทั้งสองนี้ลงใน variable จากนั้นเราสามารถนำข้อมูลนี้ไปใช้คำนวณระยะห่างระหว่าง sensor และวัตถุได้
คุณอาจจะกำลังคิดว่า: เราจะหาระยะทางได้อย่างไรหากเรารู้เพียงแค่เวลา?
อย่างที่คุณทราบกันดีว่า velocity (ความเร็ว) คือระยะทางหารด้วยเวลา ตามสมการนี้ หากเรา คูณความเร็วด้วยเวลา เราจะได้ระยะทาง อย่างที่ผมบอกไปว่า sensor นี้ส่งคลื่นเสียง ดังนั้นความเร็วที่เราต้องใช้คือความเร็วเสียงในอากาศ (340 m/s)
Velocity = ระยะทาง / เวลา
ระยะทาง = Velocity * เวลา
แต่ถ้าเราคูณความเร็วนี้ด้วยเวลาที่หาได้ เราจะได้ค่าที่เป็นสองเท่าของระยะทางจริง นั่นเป็นเพราะเสียงเดินทางไปกระทบวัตถุแล้วสะท้อนกลับมา หรือพูดอีกอย่างคือมันเดินทางในเส้นทางเดิมสองรอบ ดังนั้นเพื่อหาระยะทางจริง เราต้องคูณความเร็วเสียงกับเวลาแล้วหารผลลัพธ์ด้วยสอง
ระยะทาง = (Velocity * เวลา) / 2
Ultrasonic sensor วางอยู่หน้าวัตถุ,
Sensor ส่งเสียงความถี่สูง,
Sensor ตรวจจับเสียงสะท้อน (คลื่นความถี่สูงที่สะท้อนกลับมา),
คลื่นเสียงเดินทางในเส้นทางเดิมสองรอบProject
ในบทความนี้ ผมจะแสดงให้คุณดูว่าเราจะสร้างระบบสัญญาณกันขโมย (alarm system) โดยใช้ Arduino และ ultrasonic sensor อย่างไร หากคุณไม่มีอุปกรณ์ครบทุกชิ้นหรือต้องการทดสอบก่อนประกอบจริง ผมได้สร้างแบบจำลองของ alarm system นี้ไว้บน Tinkercad คุณสามารถรันโปรแกรมผ่านเบราว์เซอร์ได้โดยตรงเพียงคลิก ที่นี่
ต่อมา สำหรับโปรเจกต์นี้คุณจะต้องมี: บอร์ด Arduino, breadboard, สาย jumper, buzzer และ ultrasonic sensor
Assembly
อันดับแรก ติดตั้ง ultrasonic sensor และ buzzer ลงบน breadboard จากนั้นเชื่อมต่อพิน VCC และ GND เข้ากับพอร์ต Arduino 5V และ ground
Ultrasonic sensor และ buzzer ที่ติดตั้งบน breadboard,
เชื่อมต่อ VCC และ GND เข้ากับ 5V และ GND ตามลำดับหลังจากนั้น เชื่อมต่อพิน trigger เข้ากับพอร์ต 9, พิน echo เข้ากับพอร์ต 10 และ buzzer เข้ากับพอร์ต 8 นอกจากนี้ให้ต่อ GND ของ buzzer เข้ากับ Arduino GND
การประกอบ alarm system เสร็จสมบูรณ์สุดท้าย ให้อัปโหลดไฟล์ alarm-system-arduino.ino ที่ผมให้ไว้ในบทความนี้ และตอนนี้ alarm system ของเราก็เสร็จสมบูรณ์แล้วครับ
Code explanation
ในตอนแรก เราได้กำหนดค่าคงที่ (constants) และ variables ที่จำเป็น จากนั้นในฟังก์ชัน setup เราได้ตั้งค่าส่วนสำคัญของ code - เช่น การกำหนดให้พิน echo เป็น INPUT และพิน trigger กับ buzzer เป็น OUTPUT นอกจากนี้เรายังเริ่มการสื่อสารแบบ serial - ซึ่งสำคัญมากในการดูค่าระยะทางที่วัดได้
Code บล็อกแรก: variables และ constants,
Code บล็อกที่สอง: ฟังก์ชัน setupส่วนสุดท้ายคือฟังก์ชัน loop ซึ่งจะเริ่มจากการปิด emitter แล้วเปิดใช้งานเป็นเวลา 10 มิลลิวินาที (milliseconds) ก่อนที่จะปิดอีกครั้ง code ส่วนนี้จะทำหน้าที่สร้างคลื่นเสียงที่จะสะท้อนกลับมาจากวัตถุที่อยู่ใกล้
ในบรรทัดที่ 28 เราจะหาว่า sensor ใช้เวลาเท่าไหร่ในการตรวจจับเสียงสะท้อน ข้อมูลนี้สำคัญมากสำหรับการคำนวณระยะทางในบรรทัดที่ 29 ซึ่งในกรณีนี้เราจะได้ระยะทางในหน่วยเซนติเมตร หลังจากนั้น ในบรรทัดที่ 30 ถึง 35 เราจะสั่งพิมพ์ค่าระยะทางออกมา
ส่วนสุดท้ายของ code คือ if-statement ที่จะสั่งให้ buzzer ทำงานเมื่อวัตถุอยู่ห่างจาก sensor ในระยะ 50 เซนติเมตรหรือใกล้กว่านั้น แต่หากเงื่อนไขนี้เป็นเท็จ buzzer ก็จะดับลง
การสร้างคลื่นความถี่สูง,
การคำนวณระยะห่างระหว่าง sensor และวัตถุ,
การพิมพ์ค่าระยะทางในหน่วยเซนติเมตรและนิ้ว,
สั่งให้ buzzer ทำงานถ้าระยะทางน้อยกว่า 50 เซนติเมตร (19.68 นิ้ว) และจะปิด buzzer ในกรณีอื่นและตอนนี้ก็ได้เวลามาดูกันแล้วว่ามันจะใช้งานได้ไหม ดังนั้นลองอัปโหลด code ลงบอร์ด Arduino ของคุณแล้วสนุกกับมันได้เลยครับ