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

ตอนนี้ว่าด้วยเรื่องตัวตรวจจับเสียง หัวใจหลักก็คือไมโครโฟน ใช้ ZX-SOUND ทำงานกับ micro:bit V1

และไมโครโฟนแบบ MEMS ประสิทธิภาพสูงที่ติดตั้งมาในตัว micro:bit V2.0

ZX-SOUND

ออกแบบมาเพื่อใช้ตรวจจับการเปลี่ยนแปลงของเสียง เช่น เสียงปรบมือ เสียงเคาะโต๊ะ โดยให้เอาต์พุตเป็นแรงดันเปลี่ยนแปลงตามค่าความดังของเสียง

ZX-SOUND ใช้ไมค์แบบคอนเด็นเซอร์ต่อเข้ากับวงจรขยายสัญญาณเสียง เพื่อให้มีแรงดันในช่วงจาก 0V ถึงแรงดันไฟเลี้ยง (micro:bit 3.3V) ขึ้นอยู่กับความดังของเสียง

ไมค์แบบคอนเด็นเซอร์

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

ตัวอย่างที่ 28 VU Meter ฉบับเร่งด่วน

https://makecode.microbit.org/_M32Fxr8Eeimh

การทำงาน

เพื่อให้เห็นค่าที่เกิดขึ้นจาก ZX-SOUND จะต้องต่อ ZX-SOUND เข้ากับช่อง Analog ในที่นี้เลือกขา P1 นำค่าที่ได้แสดงที่ LED 5×5 ด้วยคำสั่ง Plot Bargraph ปกติค่าเต็มสเกลของเสียงจะอยู่ที่ 1023 แต่ในที่นี้เลือกใช้ค่าเพียง 350 เพื่อให้มีความไวในการทำงาน คือเมื่อเปิดเสียงเพลงแล้ว LED ตอบสนองได้เร็ว

ผลลัพธ์ที่ได้เมื่อเปิดเสียงจากลำโพงไว้ใกล้ๆ

นอกจากเห็นผลลัพธ์ที่ LED 5×5 แล้ว ยังดูผลกราฟและค่าตัวเลขที่เกิดขึ้นได้ด้วย

ตัวอย่างที่ 29 ผิวปากเปิดปิดไฟ

https://makecode.microbit.org/_FJv6t0agW03V

ตัวอย่างนี้มาจากแนวคิดง่ายๆ ที่ว่า ถ้าเรามีของอยู่เต็มมือเราจะเปิดไฟได้อย่างไร ใช้เสียงได้ไม๊ หรือถ้าปิดไฟหละ ตัวอย่างนี้จะใช้เสียงจากการผิวปาก ซึ่งถือว่าง่ายที่สุดถ้าเราถือของอยู่

การทำงาน

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

ผลลัพธ์ที่ได้จากการผิวปาก เพื่อให้เห็นสถานะชัดเจน ให้แสดงไอคอนรูปสี่เหลี่ยมที่หน้าจอ LED 5×5 ด้วย

ตัวอย่างที่ 30 เปิด/ปิดไฟด้วยค่า MAX

https://makecode.microbit.org/_gvHMUWRs8cVz

จากตัวอย่างที่ 29 ผลลัพธ์ที่ได้ก็เป็นปกติ แต่ถ้าการตรวจจับเสียงมีความไวเพิ่มมากขึ้น การสั่งงานก็จะมีความแน่นอนมากขึ้นด้วย

คำสั่ง max

เป็นคำสั่งตรวจสอบค่า 2 ค่าและคืนค่าที่มากกว่าออกมา

การทำงาน

    โปรแกรมส่วนใหญ่จะทำงานเหมือนกับตัวอย่างที่ 29 ยกเส้นส่วนด้านบนที่สร้างตัวแปร Sound ขึ้นมาเพื่อใช้คืนค่าสูงสุดของความดังของเสียงออกมา โดยการอ่านค่าเสียงจะทำการวนลูป 100 รอบเพื่อหาค่าสูงสุด จากนั้นนำค่าที่ได้ไปเปรียบเทียบ ถ้าค่ามากกว่า 150 จะเข้าสู่การตรวจสอบ การติดหรือดับของหลอดไฟ

ไมโครโฟนในตัว micro:bit V2.0

micro:bit V2.0 ติดตั้งไมโครโฟนที่ใช้เทคโนโลยี MEMS ประสิทธิภาพสูง เบอร์ SPU0410LR5H-QB ซึ่งเป็นไมโครโฟนสมัยใหม่ นิยมใช้ในกล้อง โทรศัพท์มือถือ มีสัญญาณรบกวนต่ำ กินไฟน้อย ต่อตรงเข้ากับขาแอนะล็อกของ micro:bit ได้ทันที

    เมื่อมีการใช้งานไมโครโฟน micro:bit จะส่งสัญญาณเพื่อจ่ายไฟให้กับไมโครโฟน พร้อมทั้งให้ LED แสดงสถานะไมโครโฟนติดสว่างขึ้นมาด้วย LED สีแดงที่ติดด้านหลังไมโครโฟนจะให้แสงสว่างทะลุมาด้านหน้าเป็นรูปสัญลักษณ์ของไมโครโฟนฃ

ไมโครโฟนเทคโนโลยี MEMS (Micro Electro-Mechanical Systems)

    MEMS (Micro Electro-Mechanical Systems) เป็นระบบเครื่องกลไฟฟ้าขนาดเล็ก เป็นการรวมระบบไฟฟ้าและกลไกเข้าด้วยกัน ในขนาดระดับไมโครเมตร (1 ในล้านของเมตร) สำหรับไมโครโฟนแล้วคือส่วนของแผ่นไดอะเฟรมที่มีความไวต่อแรงกด ซึ่งเล็กมากขนาดฝังอยู่ในแผ่นเวเฟอร์ซิลิกอนเลยและจะมีวงจรขยายสัญญาณขนาดเล็กอยู่ในตัวซึ่งดึงขาเอาต์พุตไปใช้งานได้เลย ใช้เทคโนโลยีแบบเดียวกับการทำชิปไอซีนั่นเอง

ชุดคำสั่งเพื่อใช้งานไมโครโฟน

ชุดคำสั่งเหล่านี้จะอยู่ในหัวข้อ Input แยกเป็นส่วนที่บอกว่าใช้ได้กับ micro:bit V2 เท่านั้น

on sound ประกอบไปด้วย on loud sound และ on quiet sound จะกระตุ้นให้ทำงานเมื่อเสียงดัง (loud) กว่าที่กำหนดหรือเงียบ(quiet) กว่าที่กำหนด ค่าระดับเสียงจะอยู่ในช่วง 0 (เงียบ) ถึง 255 (ดังที่สุด) สำหรับค่าอ้างอิงที่ใช้เปรียบเทียบว่าเสียงดังหรือค่อย ปรับตั้งได้ผ่านคำสั่ง set Sound Threshold โดยถ้าไม่กำหนดค่าตั้งต้นจะอยู่ที่ 128

set sound threshold ใช้เพื่อกำหนดค่าอ้างอิงให้กับเหตุการณ์ on sound (อยู่ในส่วน more ของหัวข้อ Input) เมื่อ on loud sound ได้รับค่าเสียงมากกว่าค่าที่ตั้งไว้ จะถูกกระตุ้นให้ทำงานและ on quiet sound ได้รับค่าเสียงน้อยกว่าที่ตั้งไว้ จะถูกกระตุ้นให้ทำงาน ถ้าไม่ได้กำหนดค่าเดิมจะอยู่ที่ 128

sound level เป็นการคืนค่าเสียงที่ได้จากไมโครโฟนค่าระดับเสียงจะอยู่ในช่วง 0 (เงียบ) ถึง 255 (ดังที่สุด) เหมือนกับการอ่านค่าแอนะล็อกจาก ZX-SOUND นั่นเอง

ตัวอย่างที่ 31 เปรียบเทียบค่าจาก ZX-SOUND และ sound level

https://makecode.microbit.org/_dzUKwX4TKEhr

เพื่อเปรียบเทียบค่าที่ได้จาก ZX-SOUND และค่าจากไมโครโฟนของ micro:bit เอง จะต้องอ่านค่าและแสดงผลพร้อมกัน ดังนั้นต้องเลือกใช้คำสั่ง Serial write value

การทำงาน

serial write value จะส่งค่าไปแสดงที่ Console device ซึ่งการแสดงกราฟจะเกิดขึ้นคนละตำแหน่งถ้าชื่อคนละชื่อกัน ในที่นี้ใช้ชื่อว่า ZX-SOUND และ Built-in ถ้าต้องการให้การตอบสนองเร็วกว่านี้สามารถเอาคำสั่ง pause ออกได้

ผลลัพธ์

จากหน้าต่าง console Device จะเห็นว่า ไมโครโฟนภายใน micro:bit มีความไวในการทำงานมากกว่า ส่วน ZX-SOUND ค่าของเสียงต้องมีค่ามาก จึงจะเห็นการเปลี่ยนแปลงของกราฟ

ตัวอย่างที่ 32 ใช้ Event on sound เพื่อเปิด/ปิดไฟ

https://makecode.microbit.org/_RvM23h14VDKu

เลียนแบบตัวอย่างที่ใช้ ZX-SOUND แต่เอามาใช้กับไมโครโฟนบน micro:bit V2 ซึ่งสามารถเรียกการกระตุ้นเมื่อเกิดเสียงได้จากเหตุการณ์ on loud sound

การทำงาน

เช่นเดิม เมื่อมีการสั่งให้ติดหรือดับสลับกัน จะต้องทราบสถานะเดิมก่อนหน้า จึงต้องมีตัวแปรสำหรับเก็บค่ากำหนดชื่อเป็น X เมื่อมีเสียงดังขึ้น (ค่ามากกว่า 128) เหตุการณ์ on loud sound จะถูกกระตุ้นให้ทำงาน จากนั้นทำการตรวจสอบค่าของ X ถ้าเป็น 0 จะสั่งให้ LED ติด และปรับค่า X เป็น 1 เพื่อครั้งต่อไปเมื่อเงื่อนไขเป็นเท็จ จะได้สั่งการเป็นค่าตรงกันข้าม

จบไว้เท่านี้สำหรับเรื่องไมโครโฟนและการตรวจจับเสียง ย้อนกลับไปอ่านตอนเก่าๆ ได้จาก

ตอนที่ 1

ตอนที่ 2

ตอนที่ 3

ตอนที่ 4

 

Facebook Comments Box