25. Wio Terminal EP.12, วัดระยะทาง ด้วย HC-SR04
Wio Terminal EP.12, วัดระยะทาง ด้วย HC-SR04
ครั้งนี้ผู้เขียนได้ประยุกต์ใช้งาน โดยนำเซนเซอร์วัดระยะทาง แบบอัลตร้าโซนิก HC-SR04 มาใช้ และขอเน้นย้ำว่า ไม่ใช่ Grove Sensor นะครับ เนื่องจาก Grove Sensor มีขั้วต่อใช้งาน 3 ขั้ว แต่ HC-SR04 มีขั้วต่อใช้งาน 4 ขั้ว ตามรูปที่ 1
ภาพจาก https://raw.githubusercontent.com/SeeedDocument/Grove_Ultrasonic_Ranger/master/optimizing/Compare.jpg
รูปที่ 1 Grove Ultrasonic และ HC-SR04
รูปที่ 1 Grove Ultrasonic และ HC-SR04
ในการนำ HC-SR04 มาใช้งาน จึงต้อง มีการต่อสาย ตามรูปที่ 2 และ ไม่จำเป็นต้องติดตั้งไลบรารี่ ใด ๆ เพิ่มเติม
HC-SR04 ต่อกับ | Wio Terminal |
Vcc | GPIO4 (+5) |
GND | GPIO6 (GND) |
Trig | GPIO13 (D0) |
Echo | GPIO15 (D1) |
รูปที่ 2 แสดงการต่อสาย
คำอธิบาย
การเขียนโค้ดครั้งนี้ มีการแยกเขียนเป็นส่วน ๆ เพื่อให้ง่ายต่อการศึกษาและแก้ไข โดยแบ่งเป็นฟังก์ชั่นต่าง ๆ ดังนี้
1. ฟังก์ชั่น ranger () เป็นฟังก์ชั่นที่ใช้ในการสั่งงานให้ HC-SR04 ทำงานส่งสัญญาณออกไปและรับเวลาที่ใช้ในการส่งออกไป จนสะท้อนกลับมา แล้วคำนวณให้เป็นระยะทาง ในหน่วย เซนติเมตร
2. ฟังก์ชั่น centerText(String tt, int tx, int ty) ใช้สำหรับแสดงค่าที่วัดได้ ให้อยู่ในแนวกึ่งกลาง
3. ฟังก์ชั่น setup() ทำหน้าที่ในการเติมสีบนหน้าจอแสดงผล และกำหนดให้ พอร์ต D0 ทำหน้าที่เป็น เอ๊าท์พุต และ D1 ทำหน้าที่เป็น อินพุต
4. ฟังก์ชั่น loop() อ่านค่า จากเซนเซอร์ HC-SR04 แล้วเปรียบเทียบค่าที่อ่านได้ กับ ค่าก่อนหน้านี้ ซึ่งเก็บไว้ในตัวแปร old ถ้าค่าที่รับมาต่างจากค่าเดิมที่ได้มาก่อนหน้านี้ ให้ลบข้อความเดิม แล้วเขียนข้อความใหม่บนจอแสดงผล ซึ่งมีทั้งหน่วย เซนติเมตร และ นิ้ว
2. ฟังก์ชั่น centerText(String tt, int tx, int ty) ใช้สำหรับแสดงค่าที่วัดได้ ให้อยู่ในแนวกึ่งกลาง
3. ฟังก์ชั่น setup() ทำหน้าที่ในการเติมสีบนหน้าจอแสดงผล และกำหนดให้ พอร์ต D0 ทำหน้าที่เป็น เอ๊าท์พุต และ D1 ทำหน้าที่เป็น อินพุต
4. ฟังก์ชั่น loop() อ่านค่า จากเซนเซอร์ HC-SR04 แล้วเปรียบเทียบค่าที่อ่านได้ กับ ค่าก่อนหน้านี้ ซึ่งเก็บไว้ในตัวแปร old ถ้าค่าที่รับมาต่างจากค่าเดิมที่ได้มาก่อนหน้านี้ ให้ลบข้อความเดิม แล้วเขียนข้อความใหม่บนจอแสดงผล ซึ่งมีทั้งหน่วย เซนติเมตร และ นิ้ว
หลักในการใช้งาน HC-SR04 มีอยู่ว่า จะต้องกำหนดให้ขา Trig มีสถานะเป็น HIGH เป็นเวลานาน 10 ไมโครวินาที เพื่อส่งคลื่นออกไป และเมื่อตัวรับสัญญาณ ตรวจจับการสะท้อนของคลื่นได้ ก็จะส่งค่าเวลาในการเดินทางของคลื่นออกมา ผู้ใช้เพียงนำค่าที่ได้รับ หารด้วย 58.2 ก็จะได้ตัวเลขที่เป็นระยะทาง ในหน่วย เซนติเมตร และหากต้องการแสดงระยะทาง ในหน่วย นิ้ว ก็เพียงนำค่าระยะทางในหน่วย เซนติเมตร หารด้วย 2.54 ก็จะได้ระยะทางในหน่วย นิ้ว โดยง่าย
ขั้นตอนการทำงาน
1. วาดหน้าจอของมิเตอร์
2. อ่านค่าจากเซ็นเซอร์ HC-SR04
3. เปรียบเทียบค่าที่อ่านได้ กับค่าก่อนหน้า
4. ถ้าค่าต่างไปจากเดิม ให้ลบข้อความเดิม
5. เขียนข้อความใหม่บนจอแสดงผล
1. วาดหน้าจอของมิเตอร์
2. อ่านค่าจากเซ็นเซอร์ HC-SR04
3. เปรียบเทียบค่าที่อ่านได้ กับค่าก่อนหน้า
4. ถ้าค่าต่างไปจากเดิม ให้ลบข้อความเดิม
5. เขียนข้อความใหม่บนจอแสดงผล
เขียนโค้ด ใช้ทดสอบ