บทที่ 19: การเขียนโปรแกรมอ่านค่าจากเซนเซอร์ตรวจจับความเคลื่อนไหว

UTEN BOONLIAM Avatar
บทที่ 19 / 26

บทที่ 19: การเขียนโปรแกรมอ่านค่าจากเซนเซอร์ตรวจจับความเคลื่อนไหว

เซนเซอร์ตรวจจับความเคลื่อนไหว (PIR Motion Sensor) เป็นเซนเซอร์ที่ใช้หลักการตรวจจับรังสี Infrared จากวัตถุที่มีการเคลื่อนไหวผ่านอุปกรณ์รวมแสง มายังตัว Pyro Electric ซึ่งจะเปลี่ยนพลังงานความร้อน จากรังสี Infrared เป็นพลังงานไฟฟ้าและให้สัญญาณออกมาเป็นแบบดิจิตอล

สำหรับ PIR Motion Sensor ที่มีขายกันอยู่ทั่วไปในท้องตลาดในลักษณะที่เป็น โมดูลสำเร็จรูป มีวงจรอยู่ภายในทำให้ผู้ใช้สามารถใช้งานได้สะดวกมากขึ้น สามารถปรับความไว และหน่วงเวลาได้จากตัวต้านทานปรับค่าได้แบบเกือกม้า และยังสามารถเลือกลักษณะของสัญญาณเอาต์พุตได้อีกด้วย ซึ่งดูได้จากรูปด้านล่าง

สำหรับบอร์ด Arduino Learning Kit มี PIR motion sensor ติดตั้งไว้อยู่ในลักษณะเป็นช่องสำหรับถอดเสียบได้ เพื่อให้ผู้ใช้งานสามารถถอดออกมาปรับค่าต่าง ๆ ที่อยู่ด้านใต้โมดูล ซึ่งในการใช้งานจะต้องปรับ DIP Switch ของตัว PIR motion sensor ให้อยู่ในตำแหน่ง ON เสียก่อน ส่วนขาที่ใช้ติดต่อกับไมโครคอนโทรลเลอร์ ดูได้จากตารางด้านล่าง

OUTPUT
Arduino Uno 7
Arduino Nano 12
ESP32(ESP-WROM-32) 14

ตารางที่ 19. 1 ขาที่ต่อใช้งาน

เขียนโปรแกรมอ่านค่าจากเซนเซอร์ตรวจจับความเคลื่อนไหว

  1. เขียนโปรแกรมตามตัวอย่างด้านล่าง

  1. ทำการ upload โปรแกรมที่เขียนขึ้นลงบน Arduino หรือ ESP32 จากนั้นเปิดหน้าต่าง Serial Monitor ทดลองใช้มือโบกผ่าน PIR Motion sensor แล้วดูผลการเปลี่ยนแปรง

อธิบายการทำงานของโค้ด

ในการทำงานของโค้ดข้างบน จะเขียนแบบง่ายๆ ไม่ซับซ้อน โดยจะตรวจเช็กค่าเอาต์พุตของ PIR motion sensor ถ้าค่าที่อ่านได้เป็นลอจิก HIGH นั่นหมายความว่ามีการตรวจจับความเคลื่อนไหวเกิดขึ้น โปรแกรมจะแสดงข้อความ *** Detected *** ออกมาทาง Serial Monitor แต่ถ้าค่าที่อ่านได้เป็นลอจิก LOW แสดงว่าไม่มีการตรวจจับความเคลื่อนไหวเกิดขึ้น โปรแกรมจะพิมพ์ . ออกทางหน้าจอ Serial Monitor

แบบฝึกหัดสำหรับทบทวนความเข้าใจและประยุกต์ใช้งานจริง

  1. เขียนโปรแกรมสั่งเปิดไฟอัตโนมัติ เมื่อมีคนอยู่ในห้อง โดยใช้ PIR motion sensor เป็นตัวจับความเคลื่อนไหว และ Relay1 ทำหน้าที่เป็นสวิตช์เปิด-ปิดไฟ โดยมีเงื่อนไขว่า ระบบจะทำงานตั้งแต่เวลา 16:00 น. – 06:30 น.

 

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *