KidBright & Senses IoT Platform [ตอนที่ 18: Ultrasonic Sensor]

Sittikron Muekdang
3 min readFeb 2, 2020

--

Ultrasonic Sensor เป็นอุปกรณ์อินพุต คือ เซ็นเซอร์ที่ใช้สำหรับตรวจจับวัดถุต่างๆ โดยอาศัยหลักการสะท้อนของคลื่นความถี่เสียง และ คำนวณหาค่าระยะทางได้จากการเดินทางของคลื่นและนำมาเทียบกับเวลา ด้วยกลไกดังกล่าวทำให้เราสามารถนำมาประยุกต์ใช้งานในรูปแบบต่างๆได้อย่างมากมาย เช่น งานวัดระดับน้ำ งานตรวจจับชิ้นงาน งานตรวจจับความหนาของวัตถุ หรือ แม้กระทั่งนำมาใช้ร่วมกับการแข่งขันหุ่นยนต์ของน้องๆนักเรียน

หลักการทำงาน

อัตราเร็วของเสียงในอากาศ = 331 + (0.606 * อุณหภูมิในหน่วยองศาเซลเซียส) m/s

อัตราเร็วของเสียงในอากาศ = 331 + (0.606 * 27) m/s

อัตราเร็วของเสียงในอากาศ = 347.362 m/s

จากนั้นให้พิจารณาว่า ฟังก์ชั่น pulseIn(pin, value) จะส่งค่ากลับมาในหน่วยไมโครวินาที (uS) เราจึงต้องแปลงให้ค่า 347.362 m/s ให้เป็นหน่วย m/uS

โดยนำไปคูณด้วย 10 ^ -6 ต่อมาเราต้องการให้ค่าออกมาในหน่วยเซ็นติเมตร (cm) ให้นำไปคูณ 10 ^ 2 (เพราะ 1 เมตร = 100 เซ็นติเมตร) จึงจะได้ค่าออกมาในหน่วย เซ็นติเมตร ต่อ ไมโครวินาที (cm/uS)

อัตราเร็วของเสียงในอากาศ = 347.362 * 10 ^ -6 * 10 ^ 2 cm/uS

อัตราเร็วของเสียงในอากาศ = 347.362 * 10 ^ (-6 + 2) cm/uS

อัตราเร็วของเสียงในอากาศ = 0.0347362 cm/uS

เนื่องจากสัญญาณเดินทางทั้งไป และกลับ จึงต้องนำค่ามาหารด้วย 2 จึงได้ 0.0173681

ระยะห่างระหว่างวัตถุกับหน้าเซ็นเซอร์ = เวลาที่ได้จากขา Echo ในหน่วยไมโครวินาที * 0.0173681 cm

อ้างอิงเนื้อหาจาก www.ioxhop.com

แสดงการต่อสายระหว่างบอร์ด Senses IoT และ Ultrasonic

เขียนโปรแกรมติดต่อกับ Ultrasonic

จุดประสงค์ของการทดลอง

1. ต่อสายวงจรตามรูปได้

2. วัดระยะห่างระหว่าง Ultrasonic และ วัตถุได้

3. วัดระยะห่างตั้งแต่ 2 CM ถึง 30 CM ได้

อธิบายโค้ด

บรรทัดที่ 1 กำหนดพินส่งความถี่

บรรทัดที่ 2 กำหนดพินรับความถี่

บรรทัดที่ 3 กำหนดตัวแปรมารับค่าที่อ่านได้จาก Ultrasonic

บรรทัดที่ 5 ฟังก์ชั่นตั้งค่าการทำงาน

บรรทัดที่ 6 กำหนดความเร็วในการรับส่งข้อมูลระหว่างบอร์ด KidBright กับ คอมพิวเตอร์

เพื่อใช้ในการแสดงผลออกทางหน้าจอ (Serial Monitor)

บรรทัดที่ 7 กำหนด trigPin ทำหน้าที่เป็นเอาต์พุต

บรรทัดที่ 8 กำหนด echoPin ทำหน้าที่เป็นอินพุต

บรรทัดที่ 11 ฟังก์ชั่นทำงานวนซ้ำ

บรรทัดที่ 13–17 ส่งความถี่ออกไป

บรรทัดที่ 19 รับความถี่

บรรทัดที่ 22 แปลงค่าเวลาเป็นระยะห่าง

บรรทัดที่ 24 แสดงผลออกทางหน้าจอ (Serial Monitor)

แสดงผลลัพธ์ของโค้ด “เขียนโปรแกรมติดต่อกับ Ultrasonic” ออกสู่หน้าจอ

เขียนโปรแกรมติดต่อกับ Ultrasonic และ LED

จุดประสงค์ของการทดลอง

1. ต่อสายวงจรตามรูปได้

2. วัดระยะห่างระหว่าง Ultrasonic และ วัตถุได้

3. วัดระยะห่างตั้งแต่ 2 CM ถึง 30 CM ได้

4. ถ้าระยะห่างน้อยกว่าเท่ากับ 2 CM สั่งให้ LED ทุกดวงดับได้

5. ถ้าระยะห่างน้อยกว่าเท่ากับ 5 CM สั่งให้ LED_IOT ติดสว่างดวงเดียวได้

6. ถ้าระยะห่างน้อยกว่าเท่ากับ 10 CM สั่งให้ LED_NTP และ LED_IOT ติดสว่างเพียงสองดวงได้

7. ถ้าระยะห่างน้อยกว่าเท่ากับ 15 CM สั่งให้ LED_NTP,LED_IOT,LED_WIFI ติดสว่างเพียงสามดวงได้

8. ถ้าระยะห่างน้อยกว่าเท่ากับ 20 CM หรือ ระยะห่างมากกว่า 20 CM สั่งให้ LED ติดสว่างทุกดวงได้

อธิบายโค้ด

บรรทัดที่ 1 กำหนดพินส่งความถี่

บรรทัดที่ 2 กำหนดพินรับความถี่

บรรทัดที่ 4–7 กำหนดพิน LED ทั้ง 4 ดวง

บรรทัดที่ 9 กำหนดตัวแปรมารับค่าที่อ่านได้จาก Ultrasonic

บรรทัดที่ 11 ฟังก์ชั่นตั้งค่าการทำงาน

บรรทัดที่ 12 กำหนดความเร็วในการรับส่งข้อมูลระหว่างบอร์ด KidBright กับ คอมพิวเตอร์

เพื่อใช้ในการแสดงผลออกทางหน้าจอ (Serial Monitor)

บรรทัดที่ 13 กำหนด trigPin ทำหน้าที่เป็นเอาต์พุต

บรรทัดที่ 14 กำหนด echoPin ทำหน้าที่เป็นอินพุต

บรรทัดที่ 16–19 กำหนดพิน LED ทั้ง 4 ดวง ทำหน้าที่เป็นเอาต์พุต

บรรทัดที่ 23 ฟังก์ชั่นทำงานวนซ้ำ

บรรทัดที่ 25–27 ส่งความถี่ออกไป

บรรทัดที่ 29 รับความถี่

บรรทัดที่ 32 แปลงค่าเวลาเป็นระยะห่าง

บรรทัดที่ 34 แสดงผลออกทางหน้าจอ (Serial Monitor)

บรรทัดที่ 36–41 ถ้าระยะห่างน้อยกว่าเท่ากับ 2 CM สั่งให้ LED ทุกดวงดับ

บรรทัดที่ 43–48 ถ้าระยะห่างน้อยกว่าเท่ากับ 5 CM สั่งให้ LED_IOT ติดสว่างดวงเดียว

บรรทัดที่ 50–55 ถ้าระยะห่างน้อยกว่าเท่ากับ 10 CM สั่งให้ LED_NTP และ LED_IOT ติดสว่างเพียงสองดวง

บรรทัดที่ 57–62 ถ้าระยะห่างน้อยกว่าเท่ากับ 15 CM สั่งให้ LED_NTP,LED_IOT,LED_WIFI ติดสว่างเพียงสามดวง

บรรทัดที่ 64–69 ถ้าระยะห่างน้อยกว่าเท่ากับ 20 CM หรือ ระยะห่างมากกว่า 20 CM

สั่งให้ LED ติดสว่างทุกดวง

บรรทัดที่ 71 หน่วงเวลา 250 มิลลิเซค

เกร็ดความรู้

LED ทั้ง 4 ดวง บนบอร์ด KidBright นั้น ถูกออกแบบมาให้ทำงานในลักษณะของ Active Low สังเกตุได้ว่า ในขณะที่เราใช้คำสั่ง HIGH: LED จะดับ แต่ถ้าหากเราเราใช้คำสั่ง LOW: LED จะติดสว่างนั่นเอง

บรรทัดที่ 36–41 ถ้าระยะห่างน้อยกว่าเท่ากับ 2 CM สั่งให้ LED ทุกดวงดับ
บรรทัดที่ 43–48 ถ้าระยะห่างน้อยกว่าเท่ากับ 5 CM สั่งให้ LED_IOT ติดสว่างดวงเดียว
บรรทัดที่ 50–55 ถ้าระยะห่างน้อยกว่าเท่ากับ 10 CM สั่งให้ LED_NTP และ LED_IOT ติดสว่างเพียงสองดวง
บรรทัดที่ 57–62 ถ้าระยะห่างน้อยกว่าเท่ากับ 15 CM สั่งให้ LED_NTP,LED_IOT,LED_WIFI ติดสว่างเพียงสามดวง
บรรทัดที่ 64–69 ถ้าระยะห่างน้อยกว่าเท่ากับ 20 CM หรือ ระยะห่างมากกว่า 20 CM

KidBright & Senses IoT Platform [ตอนที่ 19: GPS]

<< กลับสู่หน้าหลัก : Back to Home

--

--

No responses yet