ตัวอย่างใช้งาน Micro:bit Education Kit V1.3 ตอนที่ 6

ตัวอย่างนี้จะพูดถึงการนำ ZX-PIR ซึ่งเป็นตัวตรวจจับความเคลื่อนไหวจากรังสีอินฟราเรดที่แพร่ออกจากสิ่งมีชีวิต

ไม่ว่าจะเป็นมนุษย์หรือสัตว์ขนาดใหญ่ หมา แมว เป็นต้น มาใช้งานกับ micro:bit

PIR Motion sensor

ปัจจุบันเซนเซอร์ตรวจจับความเคลื่อนไหวก็พบเห็นได้ทั่วๆ ไป เสียงแจ้งเตือนเมื่อเข้าร้านสะดวกซื้อ โคมไฟโซล่าร์เซล ซึ่งจะติดสว่างเมื่อเราเดินเข้าไปใกล้ หลักการทำงานจะใช้ตัวตรวจจับชื่อ pyro eletric เป็นตัวตรวจจับการแผ่รังสีอินฟราเรด โดยถ้ามีการเคลื่อนไหวจากสิ่งมีชีวิต ระดับการแผ่รังสีจะเปลี่ยนแปลง จึงเป็นที่มาของชื่อ Passive InfraRed Motion Sensor


เพื่อเพิ่มความไวในการตรวจจับ โมดูล PIR จะมีเลนส์ไฟรเนลทำหน้าที่รวมแสงจากทุกทิศทางให้โฟกัสตรงไปยังตัวเซนเซอร์ PIR

ZX-PIR

คุณสมบัติทางเทคนิค
  • ติดตั้ง PIR พร้อมเลนส์ไฟรเนลเส้นผ่านศูนย์กลาง 23 มิลลิเมตร เมื่อตรวจพบความเคลื่อนไหวจะเอาต์พุตดิจิตัลลอจิก “1”
  • เมื่อจ่ายไฟเลี้ยงครั้งแรกอาจใช้เวลา 10-60 วินาทีในการปรับตัว
  • ต่อกับไมโครคอนโทรลเลอร์ด้วยการใช้ขาพอร์ตดิจิตอลเพียงขาเดียว
  • ระยะตรวจจับสูงสุด 7 เมตร
  • มุมในการตรวจจับประมาณ 110 องศา
  • เลือกโหมดการทำงานได้ 2 แบบคือ ส่งพัลส์ต่อเนื่อง (คาบเวลา 2.5 วินาที) และแบบส่งลอจิก “1” ตลอดเวลา จนกว่าจะไม่สามารถจับความเคลื่อนไหวได้
  • ปรับค่าหน่วงเวลาได้
  • ปรับค่าความไวในการตรวจจับได้
  • ใช้ไฟเลี้ยง 3 -5V กินไฟต่ำมากเพียง 50uA

ตัวอย่างที่ 33 แจ้งเตือนผู้บุกรุกด้วยเสียง

https://makecode.microbit.org/_3te4PCMHrAMz

การทำงาน

เมื่อตรวจจับได้ ให้ส่งเสียงไซเรนออกลำโพง พร้อมทั้งให้ LED 5×5 ติดสว่างด้วย จากรูปเชื่อมต่อ ZX-PIR ไว้ที่ขา 12 ทำหน้าที่เป็นขา ดิจิตัลอินพุต อ่านค่าได้ 2 ค่าเท่านั้นคือ “0” และ “1” เมื่อมีการตรวจจับวัตถุได้ จะให้ลอจิก “1” ออกมาจาก ZX-PIR เงื่อนไข if ก็จะเป็นจริง ต้องแสดง Icon ที่ LED 5×5 และส่งเสียงไซเรนออกลำโพง

ค่าตัวโน๊ตใน play melody

เพื่อให้เกิด 2 เสียงดังสลับกัน จึงใช้ตัวโน๊ตลักษณะดังรูป พร้อมกำหนดค่าความเร็วเป็น 240 เพื่อให้การแสดงจังหวะเร็วขึ้น

การปรับตั้งค่าที่ ZX-PIR

สำหรับ ZX-PIR จะมีโหมดการทำงานอยู่หลายโหมด งานนี้ให้ปรับตั้งเพื่อทดสอบได้ง่ายที่สุด ดังนี้

  1. เลือกจั๊มเปอร์ไปที่ตำแหน่ง L เพื่อให้เกิดเป็นพัลส์หรือ ลอจิก “1” ขึ้นมาครั้งเดียวแล้วกลับเป็นลอจิก “0” ไม่ต้องแสดงค่าค้างไว้
  2. ปรับตัวต้านทานปรับค่าได้สำหรับตั้งการหน่วงเวลาไว้น้อยที่สุด โดยหมุนทวนเข็มนาฬิกาไปจนสุดจะได้เวลาประมาณ 2.5 วินาที
  3. ปรับตัวต้านทานปรับค่าได้สำหรับปรับความไว ไว้น้อยที่สุดเช่นกัน โดยหมุนทวนเข็มนาฬิกาไปจนสุด

หลังจากทดสอบและทำงานได้ถูกต้องแล้ว สามารถปรับค่าความไวและการหน่วงเวลา เพื่อให้ทำงานตามต้องการได้ โดยค่าการหน่วงเวลา สามารถปรับได้สูงสุดถึงประมาณ 60 วินาที ส่วนความไว ได้ระยะตรวจจับมากที่สุดถึง 7 เมตร

ตัวอย่างที่ 34 ดูการหน่วงเวลาของ ZX-PIR

เพื่อให้เห็นภาพว่า เมื่อ ZX-PIR ตรวจจับได้ จะสร้างพัลส์ขึ้นมา 1 ลูก โดยเป็นลอจิก “1” แล้วกลับเป็น “0” สามารถเขียนโค้ดเพื่อดูปรากฎการณ์นี้ได้ด้วยคำสั่ง serial write value

การทำงาน

ตัวอย่างง่ายๆ เพื่อนำค่าดิจิตัลจากขา 12 ไปแสดงที่หน้าต่าง device console โดยเพิ่มการหน่วงเวลาไป 20 มิลลิวินาที เพื่อไม่ให้ข้อมูลถูกส่งออกไปมากเกินไปจนเกิดข้อผิดพลาด

ผลการทำงาน

จากกราฟและข้อมูลจะเห็นว่าลอจิก “1” ถูกส่งค่ามาแสดงจำนวน 56 ครั้งเท่ากัน จากการหน่วงเวลาที่ปรับตัวต้านทานปรับค่าได้มาด้านซ้ายสุด ซึ่งเราเรียกรูปคลื่นสัญญาณแบบนี้ว่าสัญญาณพัลส์

ตัวอย่างที่ 35 การจับเวลาด้วยคำสั่ง running time

https://makecode.microbit.org/_6evhtrEk5YFP

ตัวอย่างนี้จะทำเครื่องมือวัดเพื่อจับเวลาว่า การหน่วงเวลาของ ZX-PIR นั้น หน่วงเวลาไปเท่าใด ตรงกับความต้องการหรือไม่

คำสั่ง running time

คำสั่งนี้จะอยู่ในหัวข้อ Input และส่วนเพิ่มเติม more มี 2 ตัวต่างกันที่วงเล็บด้านหลัง (ms) คือจะคืนค่าเป็นมิลลิวินาที (1 ในพันของวินาที) กับ (micros) จะคืนค่าเป็นไมโครวินาที (1 ในล้านของวินาที)

    ค่า running time คือค่าเวลาตั้งแต่ micro:bit เริ่มทำงานหรือรีเซต เริ่มต้นทำงานใหม่ โดยจะนับค่าไปเรื่อยๆ เมื่อต้องการทราบค่าเวลา หลังจากที่ทำงานไปแล้วสามารถอ่านค่ามาแสดงได้

จากบล็อกตัวอย่างด้านบน เมื่อกดปุ่ม A จะเห็นตัวเลขจำนวนหลายหลักแสดงออกมา ซึ่งจะมากขึ้นเรื่อยๆ ตามเวลาที่ micro:bit ทำงานไป ยิ่งถ้าเป็นปุ่ม B จำนวนหลักของตัวเลขก็ยิ่งมากขึ้น เพราะเป็นค่า 1 ในล้านของวินาที

แนวคิดการจับเวลา

    สมมติว่าต้องการทราบว่าเดินทางจากรังสิตไปบางนาใช้เวลานานเท่าใด สิ่งที่ต้องทำคือ อ่านค่าเวลาตอนเริ่มเดินทางจากรังสิตแล้วจำเอาไว้และเมื่อถึงบางนาก็อ่านค่าเวลาอีกครั้ง นำค่าเวลาที่ถึงบางนาลบออกจากเวลาที่เริ่มเดินทางจากรังสิต ก็เป็นเวลาที่ใช้งานนั่นเอง

การทำงาน

เมื่อ ZX-PIR ตรวจจับได้จะให้ลอจิก “1” ออกมา เงื่อนไข if ก็จะเป็นจริง จะทำงานเก็บค่าเวลา ณ ขนะนั้นไว้ที่ตัวแปร T จากนั้นแสดง icon และวนรอจนกว่า ZX-PIR จะมีค่าเป็น 0 อีกครั้ง ทำการอ่านค่าเวลาปัจจุบันหักลบด้วยเวลาเดิมที่เก็บในตัวแปร T นำค่ามาหารด้วย 1000 เพื่อให้ได้ผลลัพธ์หน่วยเป็นวินาที นำมาแสดงที่ LED 5×5 ได้เลย

การทดสอบ

จากการทดลองเพื่อวัดค่าเวลา เมื่อหมุนตัวต้านทานปรับค่าได้ของตัวตั้งการหน่วงเวลาไปทางขวาสุด การหน่วงเวลาจะเกิดนานถึง 10 นาที หรือ 600 วินาที ซึ่งต้องใช้เวลาในการทดสอบค่อนข้างนาน อาจะเปลี่ยนจากการแสดงที่ LED 5×5 ไปแสดงที่ console device แทน ซึ่งค่าการหน่วงเวลาจะถูกเก็บเอาไว้ ไม่ต้องเฝ้าดูตลอดเวลา

ปรับปรุงโค้ดสำหรับแสดงที่หน้าต่าง console device

สำหรับโค้ดกรณีที่ต้องการแสดงที่ console device จะแสดงในหน่วยมิลลิวินาทีเพื่อให้อ่านค่าได้ละเอียด

https://makecode.microbit.org/_f7j9eLPkYHt6

Facebook Comments Box