Motion Sensor Tester: ทดสอบ Accelerometer, Gyroscope และ Compass ของมือถือในเบราว์เซอร์
Motion Sensor Tester แสดงข้อมูลจาก DeviceMotion และ DeviceOrientation ของโทรศัพท์แบบเรียลไทม์ ทั้ง acceleration, gravity, rotation rate, มุม alpha/beta/gamma และ compass heading ทำงานฝั่งไคลเอนต์ทั้งหมด ไม่ต้องติดตั้งแอป
Table of Contents
สมาร์ตโฟนทุกเครื่องมีชุดเซ็นเซอร์ motion ขนาดเล็กซ่อนอยู่ภายใน ไม่ว่าจะเป็น accelerometer ที่วัดความเร่งเชิงเส้น, gyroscope ที่ติดตามการหมุน และ magnetometer ที่ทำหน้าที่เป็นเข็มทิศดิจิทัล เมื่อแอปที่พึ่งพาการเอียงหรือการเขย่าเครื่องเริ่มทำงานผิดปกติ หรือฟีเจอร์วัดระดับเริ่มเพี้ยนไปเอง สาเหตุมักมาจากเซ็นเซอร์ตัวใดตัวหนึ่งเหล่านี้ Motion Sensor Tester ช่วยพาคุณเข้าไปดูข้อมูลดิบจากเซ็นเซอร์โดยตรง เพื่อให้เห็นชัดว่าโทรศัพท์ของคุณรายงานค่าอะไรออกมาจริง ๆ
เครื่องมือนี้ทำงานผ่านเบราว์เซอร์และอ่านข้อมูลจาก API มาตรฐานอย่าง DeviceMotion และ DeviceOrientation โดยแสดงผลแบบเรียลไทม์ทั้ง acceleration, gravity และ rotation rate พร้อมมุม alpha/beta/gamma และ compass heading ที่อัปเดตทันทีที่คุณขยับเครื่อง ทุกอย่างประมวลผลฝั่งไคลเอนต์ทั้งหมด ไม่ต้องติดตั้งแอป ไม่ต้องสมัครสมาชิก และข้อมูลไม่มีทางออกจากเครื่องของคุณ
ไม่ว่าคุณจะกำลังตรวจสอบมือถือมือสองก่อนซื้อ ดีบักเว็บแอปที่ตอบสนองต่อการเอียงเครื่อง หรืออยากให้นักเรียนเห็นวิธีทำงานของเซ็นเซอร์ motion บทความนี้จะพาไปตั้งแต่วิธีรันการทดสอบ ไปจนถึงวิธีอ่านค่าแต่ละสตรีมให้ถูกต้อง
ทำไมต้องใช้ Motion Sensor Tester?
ข้อมูล motion ที่ละเอียดมีอยู่ในทุกโทรศัพท์ แต่แทบไม่มีอะไรบนหน้าเครื่องเปิดเผยให้เห็นเลย เครื่องมือทดสอบเฉพาะทางจึงช่วยปิดช่องว่างนี้ได้
- วินิจฉัยปัญหาฮาร์ดแวร์ได้ทันที ถ้าค่า acceleration นิ่งไม่ขยับแม้คุณเขย่าเครื่อง หรือ heading เด้งไปมาผิดปกติ คุณจะมีหลักฐานที่ชัดเจนว่าเซ็นเซอร์มีปัญหา แทนที่จะเป็นแค่ความรู้สึกคลุมเครือ
- ไม่ต้องติดตั้งแอป เปิดหน้าเว็บในเบราว์เซอร์บนมือถือแล้วทดสอบได้ทันที เหมาะมากเวลาตรวจเครื่องในร้าน หรือเมื่อไม่อยากลงซอฟต์แวร์เพิ่มในเครื่องชั่วคราว
- รองรับการขอสิทธิ์บน iOS 13 ขึ้นไปในตัว Apple บล็อกข้อมูล motion จนกว่าผู้ใช้จะกดอนุญาตด้วยตัวเอง เครื่องมือจะตรวจจับเงื่อนไขนี้และพาคุณผ่านขั้นตอน แทนที่จะปล่อยให้หน้าเว็บเงียบไปเฉย ๆ
- เห็นทุกสตรีมเซ็นเซอร์พร้อมกัน acceleration, gravity, rotation rate, มุม orientation และ heading แสดงอยู่ในหน้าจอเดียว ทำให้จับได้ง่ายว่าช่องทางไหนหายไปหรือค้างอยู่กับที่
- เป็นส่วนตัวอย่างสมบูรณ์ การประมวลผลทั้งหมดเกิดขึ้นในเบราว์เซอร์บนเครื่องของคุณ ค่าเซ็นเซอร์ไม่ถูกส่งไปเก็บที่ใดเลย
- ฟรีและไม่จำกัดจำนวนครั้ง ทดสอบได้บ่อยเท่าที่ต้องการ กับอุปกรณ์กี่เครื่องก็ได้
คุณสมบัติหลัก
เครื่องมือนี้รวม pipeline ของเซ็นเซอร์ทั้งหมดไว้ในหน้าจอเดียว
| Feature | หน้าที่ |
|---|---|
| Acceleration และ gravity | สตรีมค่าความเร่งเชิงเส้นพร้อมเวกเตอร์ gravity จาก DeviceMotion เพื่อให้แยกได้ว่าเป็นการเขย่าหรือการเอียง |
| Rotation rate | แสดงความเร็วการหมุนของเครื่องรอบแกนทั้งสาม หน่วยองศาต่อวินาที |
| มุม alpha/beta/gamma | แสดงมุม orientation ทั้งสามค่าจาก DeviceOrientation ที่บอกว่าโทรศัพท์กำลังเอียงอยู่ในลักษณะใด |
| Compass heading | แสดงทิศทางจาก magnetometer รวมถึงค่า webkitCompassHeading บน iOS |
| การขอสิทธิ์ iOS 13+ | ตรวจจับกรณีที่ต้องขออนุญาตการเข้าถึง motion และนำทางผ่านการกดอนุญาตเพียงครั้งเดียว |
| การแสดงผลแบบเรียลไทม์ | อัปเดตทุกค่าทันทีที่คุณขยับ พลิก หรือหมุนโทรศัพท์ |
รายละเอียดที่น่ารู้:
- ทุกสตรีมมาจากตัวเครื่องโดยตรง หน้าเว็บไม่ส่งข้อมูลออกเครือข่าย จึงใช้ได้แม้เครื่องไม่มีซิม
- ดีไซน์ออกแบบมาเพื่อมือถือเป็นหลัก แต่หน้าเดียวกันใช้กับแท็บเล็ตที่มี motion hardware ได้เช่นกัน
- เพราะทุกอย่างทำงานฝั่งไคลเอนต์ ค่าที่เห็นจึงสะท้อนเฉพาะเครื่องที่คุณถืออยู่เท่านั้น ไม่ใช่การจำลองจากฝั่งเซิร์ฟเวอร์
วิธีใช้งาน Motion Sensor Tester
- เปิดเครื่องมือบนมือถือ เข้าหน้า Motion Sensor Tester ผ่านเบราว์เซอร์บนโทรศัพท์ เพราะคอมพิวเตอร์ส่วนใหญ่ไม่มี motion hardware จึงควรทดสอบบนเครื่องจริงเสมอ
- กดอนุญาตการเข้าถึง motion บน iPhone หรือ iPad ที่ใช้ iOS 13 ขึ้นไป หน้าเว็บจะขอสิทธิ์เข้าถึงข้อมูล motion และ orientation ให้กดอนุญาตเพียงครั้งเดียว ส่วน Chrome บน Android มักเริ่มสตรีมข้อมูลได้ทันที
- ขยับเครื่อง เอียงโทรศัพท์ไปข้างหน้าและข้างหลัง คว่ำไปทางซ้ายขวา เขย่าเบา ๆ แล้วหมุนบนโต๊ะ พร้อมสังเกตตัวเลขที่ตอบสนองตลอดเวลา
- อ่านค่า acceleration และมุมต่าง ๆ โทรศัพท์ที่วางนิ่งบนโต๊ะควรรายงานค่า gravity ราว ๆ 9.81 m/s² ที่แกนใดแกนหนึ่ง และค่า alpha/beta/gamma ควรติดตามการเอียงของคุณอย่างนุ่มนวล ไม่ค้างอยู่กับที่
- ตรวจสอบเข็มทิศ วางโทรศัพท์ราบบนโต๊ะแล้วหมุนช้า ๆ ดูว่า heading ตามทิศทางที่คุณชี้อยู่หรือไม่ โดยเทียบกับเข็มทิศจริงหรือทิศทางบนแผนที่ถ้ามี
แต่ละสตรีมเซ็นเซอร์ทำงานอย่างไร
หัวใจสำคัญของการอ่านค่าให้ถูกคือการเข้าใจว่าเครื่องมือเปิดเผยข้อมูลจากสอง API ที่แตกต่างกัน
DeviceMotion ยิงข้อมูลหลายครั้งต่อวินาทีและรายงานค่าสามกลุ่ม Acceleration คือความเร่งเชิงเส้นของเครื่องที่หัก gravity ออกแล้ว โทรศัพท์ที่วางนิ่งจึงควรอ่านได้ใกล้ศูนย์ทุกแกน ส่วน Acceleration including gravity ยังเก็บเวกเตอร์ gravity ไว้ด้วย นั่นคือเหตุผลที่เครื่องเดียวกันวางนิ่ง ๆ กลับอ่านได้ราว ๆ 9.81 m/s² ที่แกนที่ชี้ลงพื้น และ Rotation rate หน่วยองศาต่อวินาที บอกว่าขณะนั้นเครื่องกำลังหมุนเร็วแค่ไหนรอบแกนทั้งสาม
DeviceOrientation บรรยายการวางตัวของเครื่องด้วยมุมสามค่า Alpha คือการหมุนรอบแกน z แนวตั้ง หรือพูดง่าย ๆ ว่าหัวโทรศัพท์กำลังชี้ไปทางไหน บน iOS ควรดูค่า webkitCompassHeading คู่กันด้วย เพราะเป็น heading แบบเข็มทิศจริงหน่วยองศา ขณะที่ค่า alpha ดิบมีพฤติกรรมต่างกันไปในแต่ละแพลตฟอร์ม Beta คือการเอียงหน้า-หลังรอบแกน x และ Gamma คือการเอียงซ้าย-ขวารอบแกน y
เงื่อนไขขอสิทธิ์บน iOS 13 ขึ้นไป เป็นจุดที่ต้องเน้นเป็นพิเศษ เพราะ Safari จะไม่ส่งข้อมูล motion หรือ orientation ใด ๆ เลยจนกว่าผู้ใช้จะกดอนุญาตอย่างชัดเจน และการอนุญาตต้องเกิดภายในการกระทำของผู้ใช้ เช่น การแตะปุ่ม นี่คือเหตุผลที่เครื่องมือมีขั้นตอนขอสิทธิ์เฉพาะ หากไม่มี หน้าเว็บจะได้รับแค่ความเงียบเท่านั้น
เมื่อเซ็นเซอร์รายงานค่าศูนย์ สาเหตุแทบทั้งหมดมาจากสภาพแวดล้อมมากกว่าฮาร์ดแวร์เสีย เช่น สิทธิ์ถูกปฏิเสธหรือยังไม่ได้ขอ หน้าเว็บไม่ได้รันบน HTTPS ที่ปลอดภัย อุปกรณ์ไม่มีเซ็นเซอร์ตัวนั้นจริง ๆ (เดสก์ท็อปส่วนใหญ่และแท็บเล็ตรุ่นประหยัดบางรุ่น) หรือเบราว์เซอร์บล็อก motion API ไว้ในโหมดส่วนตัว ลองเปิดหน้าเดียวกันในเบราว์เซอร์อื่นก่อนสรุปว่าเครื่องมีปัญหา
กรณีการใช้งานจริง
ตรวจสอบเซ็นเซอร์ของมือถือมือสองหรือเครื่องรีเฟอร์บิช
เซ็นเซอร์เป็นอะไรที่ตัดสินยากในร้านและประเมินไม่ได้จากรูปถ่ายเลย ก่อนจ่ายเงิน ให้เปิดเครื่องมือ เอียงและเขย่าเครื่อง แล้วยืนยันว่าทุกสตรีมตอบสนอง ถ้าเครื่องไหน gyroscope เสีย ค่า rotation rate จะแบนราบและมุม orientation ค้างอยู่กับที่ ซึ่งกระทบทั้งเกมและการ stabilize ภาพกล้อง
ดีบักเว็บแอปที่ใช้การเอียงเครื่อง
ถ้า hero section แบบ parallax, มินิเกมพวงมาลัย หรือเครื่องมือวัดระดับในเบราว์เซอร์ของคุณทำงานผิดปกติบนบางเครื่อง ให้รันเครื่องมือทดสอบบนโทรศัพท์เครื่องนั้น คุณจะยืนยันได้ว่า event มาถึงจริงไหม ค่าที่ส่งมาอยู่ในช่วงที่คาดไว้หรือเปล่า และประตูขอสิทธิ์บน iOS คือตัวการจริงหรือไม่ แทนที่จะโทษโค้ด JavaScript
เช็กความพร้อมของ VR Cardboard
เครื่องเล่นแบบ Cardboard พึ่งพาการติดตาม orientation ล้วน ๆ ใช้เวลาสามสิบวินาทียืนยันว่า beta และ gamma ตอบสนองนุ่มนวล และ alpha นิ่งไม่ลอย ก่อนจะโทษว่า headset ทำให้ภาพเบลอหรือสั่น
ใช้สอนเรื่อง Sensor API
ในห้องเรียนหรือเวิร์กช็อปเขียนโปรแกรม เครื่องมือนี้เป็นการสาธิตสด ๆ ของ DeviceMotion และ DeviceOrientation นักเรียนจะเห็นชื่อแกนที่เคยเป็นนามธรรมกลายเป็นตัวเลขจริง ๆ ในทันทีที่เอียงโทรศัพท์
แนวปฏิบัติที่แนะนำ
- ทดสอบหลายทิศทาง จับโทรศัพท์แนวตั้ง วางราบ และหมุนผ่านทุกด้าน เพราะเซ็นเซอร์บางตัวมีปัญหาเฉพาะบางตำแหน่งเท่านั้น
- เทียบกับค่า gravity ที่รู้จริง เครื่องที่วางนิ่งควรแสดงค่ารวมของ acceleration including gravity ได้ราว ๆ 9.81 m/s² ถ้าเบี่ยงเบนมากแปลว่ามีปัญหาการ calibrate หรือฮาร์ดแวร์
- จำไว้ว่าเซ็นเซอร์ต่างกันในแต่ละเครื่อง อัตรา sampling, ระดับ noise และแม้แต่ทิศทางแกนต่างกันไปตามผู้ผลิต อย่าคาดหวังว่าสองเครื่องจะให้ตัวเลขเหมือนกันเป๊ะ
- ทดสอบซ้ำหลังอัปเดต OS การอัปเดตระบบบางครั้งเปลี่ยนวิธีส่งข้อมูล motion เมื่อพฤติกรรมเปลี่ยนฉับพลัน ให้รันเครื่องมือทดสอบอีกครั้ง
- ใช้ HTTPS เสมอ motion API ต้องการ secure context ถ้าทุกค่าเป็นศูนย์ ให้ดูที่ address bar ก่อนสงสัยฮาร์ดแวร์
- เช็กเข็มทิศให้ห่างโลหะ เคสแบบแม่เหล็ก รถยนต์ และลำโพงทำให้ magnetometer เพี้ยน จึงควรตรวจ heading ในที่ที่ไม่มีสิ่งรบกวน
พร้อมดูแล้วหรือยังว่าเซ็นเซอร์ในโทรศัพท์ของคุณกำลังทำอะไรอยู่ เปิด Motion Sensor Tester บนเครื่องของคุณ กดอนุญาต แล้วดูข้อมูลไหลเข้ามา ใช้เวลาไม่ถึงหนึ่งนาทีและไม่มีค่าใช้จ่ายใด ๆ ทั้งสิ้น
เครื่องมืออื่น ๆ ที่คุณอาจสนใจ:
- Bubble Level — ใช้ข้อมูล orientation เดียวกันนี้ตรวจว่าผิวหน้าแบนจริงหรือไม่
- Speaker Test — ทดสอบลำโพงและระบบเสียงของมือถือมือสองด้วยโทนเสียงหลายรูปแบบ
- Camera Tester — ทดสอบกล้องหน้า กล้องหลัง และแฟลชได้ในเบราว์เซอร์
ขอให้สนุกกับการทดสอบ!
คำถามที่พบบ่อย
ถ: ทำไมบน iPhone ถึงต้องกดขอสิทธิ์ก่อนใช้งาน? ตอบ: ตั้งแต่ iOS 13 เป็นต้นไป Safari กำหนดให้ผู้ใช้ต้องกดอนุญาตอย่างชัดเจนก่อน หน้าเว็บจึงจะได้รับข้อมูล motion และ orientation เครื่องมือจะแสดงปุ่มขอสิทธิ์ให้กดเพียงครั้งเดียว จากนั้นสตรีมข้อมูลจะเริ่มทันที
ถ: ทำไมทุกค่าถึงนิ่งเป็นศูนย์? ตอบ: สาเหตุที่พบบ่อยคือสิทธิ์ถูกปฏิเสธ หน้าเว็บรันบน HTTP ที่ไม่ปลอดภัย เบราว์เซอร์บล็อก motion API ในบางโหมดส่วนตัว หรืออุปกรณ์ไม่มีเซ็นเซอร์ตัวนั้นเลย ลองใช้เบราว์เซอร์อื่นบนเครื่องเดิมก่อนสรุปว่าเซ็นเซอร์เสีย
ถ: compass heading แม่นยำแค่ไหน? ตอบ: ค่านี้มาจาก magnetometer ซึ่งได้รับอิทธิพลจากโลหะและแม่เหล็กใกล้ตัว โดยทั่วไปเพียงพอสำหรับการเช็กทิศทางทั่วไป แต่ถ้าความแม่นยำสำคัญ ควรเทียบกับเข็มทิศเฉพาะทางและเลี่ยงเคสแบบแม่เหล็ก
ถ: ข้อมูล motion ของฉันถูกส่งไปไหนหรือเปล่า? ตอบ: ไม่ เครื่องมือทำงานฝั่งไคลเอนต์ทั้งหมด ทุกค่าถูกประมวลผลและแสดงผลบนเครื่องของคุณเอง ไม่มีการส่งออกไปที่ใด