Pedometer (เครื่องนับก้าว) ในแอปพลิเคชันมือถือเป็นกลไกซอฟต์แวร์-ฮาร์ดแวร์สำหรับนับจำนวนก้าวของผู้ใช้โดยอาศัยข้อมูลจากมาตรความเร่งและไจโรสโคป สมาร์ทโฟนสมัยใหม่ใช้อัลกอริทึมการเรียนรู้ของเครื่องร่วมกับเซ็นเซอร์เพื่อตรวจจับการเดิน การวิ่ง และกิจกรรมทางกายภาพประเภทอื่นๆ ได้อย่างแม่นยำ ตามเอกสาร Apple HealthKit Documentation, 2025 ความแม่นยำของการนับก้าวบนอุปกรณ์สมัยใหม่ สูงถึง 95–97% ในระหว่างการเดินปกติ
ประเด็นสำคัญ
Pedometer (เครื่องนับก้าว) ในแอปพลิเคชันมือถือคือฟังก์ชันที่กำหนดจำนวนก้าวของผู้ใช้โดยอาศัยข้อมูลจากเซ็นเซอร์ตรวจจับความเคลื่อนไหวในตัวของสมาร์ทโฟน ต่างจาก pedometer เชิงกลในอดีต pedometer มือถือใช้เซ็นเซอร์ไมโครอิเล็กโตรแมคคานิคอล (MEMS) และอัลกอริทึมการประมวลผลสัญญาณดิจิทัลเพื่อนับการเคลื่อนที่อย่างแม่นยำ การนำไปใช้สมัยใหม่ไม่เพียงนับก้าวเท่านั้น แต่ยัง จำแนกประเภทกิจกรรม อีกด้วย: การเดิน การวิ่ง การขึ้นบันได
การบูรณาการ pedometer เข้ากับอุปกรณ์มือถือเกิดขึ้นได้ด้วยการเปิดตัวโคโปรเซสเซอร์เคลื่อนที่ M7 ใน iPhone 5s ปี 2013 ซึ่งรวบรวมข้อมูลจากเซ็นเซอร์อย่างต่อเนื่องด้วยการใช้พลังงานน้อยที่สุด ปัจจุบันสมาร์ทโฟนสมัยใหม่ทั้งหมดมีการรองรับฮาร์ดแวร์สำหรับนับก้าวในระดับ เซ็นเซอร์ฮับ — ชิปเฉพาะที่ประมวลผลข้อมูลเซ็นเซอร์เฉื่อยโดยไม่ต้องปลุกโปรเซสเซอร์หลัก
การนับก้าว บนสมาร์ทโฟนอาศัยการวิเคราะห์สัญญาณมาตรความเร่ง ซึ่งวัดความเร่งของอุปกรณ์ตามสามแกนตั้งฉาก (X, Y, Z) เมื่อเดิน แต่ละก้าวจะสร้างรูปแบบความเร่งที่มีลักษณะเฉพาะ: อันแรกคือจุดสูงสุดขึ้นเมื่อยกขา จากนั้นจุดสูงสุดลงเมื่อลงสู่พื้น ความถี่ก้าว (เคเดนซ์) คือ 100–130 ก้าว/นาทีสำหรับการเดิน และ 150–180 ก้าว/นาทีสำหรับการวิ่ง ในขณะที่แอมพลิจูดความเร่งอยู่ที่ 2–6 ม./วินาที²
สัญญาณดิบจาก มาตรความเร่ง มีสัญญาณรบกวนและการรบกวนความถี่สูง ดังนั้นขั้นตอนแรกของการประมวลผลคือการกรองความถี่ต่ำผ่าน (low-pass filter) ด้วยความถี่ตัด 3–5 เฮิรตซ์ หลังการกรอง จะคำนวณ เวกเตอร์ความเร่ง: a = sqrt(x² + y² + z²) ซึ่งแยกความเร่งที่เกี่ยวข้องกับการเคลื่อนที่โดยไม่ขึ้นกับทิศทางของอุปกรณ์ จากนั้นอัลกอริทึมจะตรวจจับค่าสูงสุดเฉพาะที่ในสัญญาณ — แต่ละค่าสูงสุดสอดคล้องกับหนึ่งก้าว
เพื่อ ลดผลบวกลวง (เช่น การสั่นในยานพาหนะ) จึงใช้เกณฑ์เพิ่มเติม: แอมพลิจูดก้าวต่ำสุด (โดยทั่วไป >1.2 ม./วินาที²) ช่วงเวลาต่ำสุดระหว่างก้าว (300–400 มิลลิวินาทีสำหรับการเดิน) และการตรวจสอบความเป็นคาบของสัญญาณผ่านการสหสัมพันธ์อัตโนมัติ หากช่วงเวลาระหว่างจุดสูงสุดไม่สม่ำเสมอ ลำดับนั้นจะถูกทำเครื่องหมายว่าเป็นการเคลื่อนที่แบบสุ่มและไม่นับเป็นก้าว
อัลกอริทึมพื้นฐาน การตรวจจับก้าว ใช้วิธีการตรวจจับแบบเกณฑ์: ระบบค้นหาช่วงเวลาที่สัญญาณมาตรความเร่งเกินเกณฑ์ที่กำหนดแล้วกลับสู่ระดับพัก แต่ละเหตุการณ์ดังกล่าวถือเป็นก้าวที่เป็นไปได้ มีสองแนวทาง: การตรวจจับจุดสูงสุด (peak detection) และการตัดผ่านศูนย์ (zero-crossing) การตรวจจับจุดสูงสุดจะจับค่าสูงสุดของสัญญาณ ในขณะที่การตัดผ่านศูนย์จะตรวจจับช่วงเวลาที่สัญญาณตัดผ่านค่าเฉลี่ย ซึ่ง ขึ้นอยู่กับ แอมพลิจูดก้าวน้อยกว่า
อัลกอริทึมการนับก้าวสมัยใหม่ ใช้เกณฑ์แบบปรับตัวที่ปรับตามรูปแบบการเดินของผู้ใช้โดยอัตโนมัติ ระบบวิเคราะห์ความแปรปรวนของสัญญาณในช่วง 2–3 วินาทีที่ผ่านมาและคำนวณเกณฑ์ไดนามิกเป็นค่ารากที่สองของค่าเฉลี่ยกำลังสอง (RMS) คูณด้วยสัมประสิทธิ์ ซึ่งช่วยให้ นับก้าวได้อย่างถูกต้อง ทั้งในระหว่างการเดินช้าและการวิ่งแรง โดยไม่ต้องปรับเทียบข้ามระหว่างประเภทกิจกรรม
การนำ pedometer ไปใช้สมัยใหม่ไม่เพียงใช้การตรวจจับจุดสูงสุดเท่านั้น แต่ยังใช้การเรียนรู้ของเครื่องเพื่อจำแนกรูปแบบการเคลื่อนไหวอีกด้วย โมเดลโครงข่ายประสาทเทียมได้รับการฝึกด้วยการบันทึกการเคลื่อนไหวจริงหลายพันชั่วโมงจากสถานการณ์ต่างๆ: การเดินบนพื้นราบ การขึ้นบันได การวิ่ง การเดินทางในยานพาหนะ คุณลักษณะนำเข้าประกอบด้วยอนุกรมเวลาของมาตรความเร่งและไจโรสโคป และผลลัพธ์คือความน่าจะเป็นที่ส่วนสัญญาณปัจจุบันสอดคล้องกับ การเคลื่อนที่ของมนุษย์
ตาม งานวิจัย Google Activity Recognition โมเดลที่ใช้โครงข่ายประสาทเทียมแบบคอนโวลูชัน (CNN) มีความแม่นยำในการรู้จำการเดิน 98% บนชุดข้อมูลมาตรฐาน บนอุปกรณ์ Apple ใช้ Core ML กับโมเดลการจำแนกกิจกรรมที่ฝึกด้วยข้อมูลจากอาสาสมัครมากกว่า 100,000 คน โมเดลที่ปรับแต่งแล้วทำงานบนอุปกรณ์โดยตรง (การอนุมานบนอุปกรณ์) ซึ่งช่วยให้ ประมวลผลได้ทันที และรักษาความเป็นส่วนตัวของผู้ใช้
import CoreMotion
class PedometerObserver {
private let pedometer = CMPedometer()
func startTracking() {
guard CMPedometer.isStepCountingAvailable() else { return }
pedometer.startUpdates(from: Date()) { data, error in
guard let data = data else { return }
let steps = data.numberOfSteps.intValue
let distance = data.distance?.doubleValue
let floorsAscended = data.floorsAscended?.intValue
// อัปเดต UI ด้วยจำนวนก้าว
DispatchQueue.main.async {
// self.stepsLabel.text = "\(steps) ก้าว"
}
}
}
func stopTracking() {
pedometer.stopUpdates()
}
}
บน iOS การเข้าถึง pedometer ใช้คลาส CMPedometer จากเฟรมเวิร์ก Core Motion CMPedometer ให้ข้อมูลไม่เพียงจำนวนก้าวเท่านั้น แต่ยังรวมถึงระยะทางที่เดิน จำนวนชั้น (การขึ้น) ความเร็วในการเดิน และระยะเวลากิจกรรม ข้อมูลพร้อมใช้งานทั้งแบบเรียลไทม์ (startUpdates) และสำหรับช่วงเวลาใดๆ ในอดีต (queryPedometerData) โคโปรเซสเซอร์เคลื่อนที่ (M-ซีรีส์) ประมวลผลข้อมูลเซ็นเซอร์ในระดับฮาร์ดแวร์ ซึ่ง ลดการใช้พลังงานลง 80% เมื่อเทียบกับการประมวลผลด้วยซอฟต์แวร์
บน Android ฟังก์ชัน pedometer ถูกนำไปใช้ผ่านเซ็นเซอร์ฮาร์ดแวร์สองตัว: TYPE_STEP_COUNTER (ตัวนับก้าวสะสมตั้งแต่บูต) และ TYPE_STEP_DETECTOR (สร้างเหตุการณ์ในแต่ละก้าว) TYPE_STEP_COUNTER ไม่ต้องการการปรับเทียบและไม่ใช้พลังงานโปรเซสเซอร์ — ข้อมูลได้รับการอัปเดตในระดับฮาร์ดแวร์ของเซ็นเซอร์ฮับ สำหรับการเข้าถึงสถิติก้าวสะสมรายวัน จะใช้ Google Fit API กับบันทึก DataType.TYPE_STEP_COUNT_DELTA
import android.hardware.Sensor
import android.hardware.SensorEvent
import android.hardware.SensorEventListener
import android.hardware.SensorManager
class StepCounter(
private val sensorManager: SensorManager
) : SensorEventListener {
private var totalSteps = 0
private var previousSteps = -1
fun startListening() {
val sensor = sensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER)
sensor?.let {
sensorManager.registerListener(this, it, SensorManager.SENSOR_DELAY_NORMAL)
}
}
override fun onSensorChanged(event: SensorEvent) {
if (previousSteps < 0) {
previousSteps = event.values[0].toInt()
}
val currentSteps = event.values[0].toInt()
totalSteps = currentSteps - previousSteps
}
fun getStepCount(): Int = totalSteps
override fun onAccuracyChanged(sensor: Sensor?, accuracy: Int) {}
}
ความแม่นยำของ pedometer ขึ้นอยู่กับหลายปัจจัย: ตำแหน่งของสมาร์ทโฟน (ในมือ กระเป๋า หรือกระเป๋า) ประเภทกิจกรรม (เดิน วิ่ง ขึ้นบันได) และคุณภาพของเซ็นเซอร์ เมื่อสมาร์ทโฟนอยู่ในกระเป๋ากางเกง ความแม่นยำสูงถึง 93–97%; ในกระเป๋าหรือเป้สะพายหลัง ลดลงเหลือ 70–85% รูปแบบการเดินของผู้ใช้ก็มีผลต่อความแม่นยำเช่นกัน: การเดินลากเท้า ที่มีแอมพลิจูดความเร่งต่ำทำให้เกิดข้อผิดพลาดมากกว่าก้าวที่มั่นคง
ข้อจำกัด หลักของ pedometer มือถือรวมถึง: ไม่สามารถนับก้าวระหว่างการเคลื่อนที่ช้ามาก (<1.5 กม./ชม.) ผลบวกลวงจากการเดินทางในยานพาหนะ ความแม่นยำลดลงระหว่างการวิ่งความเร็วต่ำ (การวิ่งเหยาะ) และอิทธิพลของท่าทางระหว่างการสนทนา เพื่อลดข้อผิดพลาด แอปพลิเคชันสมัยใหม่ใช้การรวมกันของเซ็นเซอร์ (มาตรความเร่ง + ไจโรสโคป + บารอมิเตอร์) และ การเรียนรู้ของเครื่อง เพื่อกรองสิ่งรบกวน บารอมิเตอร์ ช่วยตรวจจับการขึ้นบันไดและการเปลี่ยนแปลงระดับความสูง โดยไม่รวมก้าวปลอมในลิฟต์
คำถามที่พบบ่อย
Pedometer ในโทรศัพท์ใช้มาตรความเร่ง ซึ่งบันทึกความเร่งในแต่ละก้าว อัลกอริทึมวิเคราะห์จุดสูงสุดของความเร่งบนสามแกน กรองสัญญาณรบกวน และกำหนดจำนวนก้าว โมเดลสมัยใหม่ยังใช้ไจโรสโคปและการเรียนรู้ของเครื่องเพื่อปรับปรุงความแม่นยำและจำแนกกิจกรรม
เมื่อถือสมาร์ทโฟนใน กระเป๋ากางเกง ความแม่นยำสูงถึง 95–97% ในการเดินปกติ ในกระเป๋าหรือเป้สะพายหลัง ความแม่นยำลดลงเหลือ 70–85% รูปแบบการเดินและประเภทพื้นผิวก็มีผลต่อความแม่นยำเช่นกัน — พื้นที่ไม่เรียบ อาจทำให้เกิดข้อผิดพลาดสูงถึง 10–15%
ใช่ pedometer ทำงาน ได้แบบออฟไลน์โดยไม่ต้องเชื่อมต่ออินเทอร์เน็ต การคำนวณทั้งหมดดำเนินการบนอุปกรณ์โดยใช้เซ็นเซอร์ในตัว อินเทอร์เน็ตอาจจำเป็นสำหรับการซิงค์ข้อมูลกับบริการคลาวด์ของแอปฟิตเนสหรือแสดงแผนที่เส้นทางเท่านั้น
แอปต่างๆ ใช้ อัลกอริทึมต่างกัน ในการประมวลผลข้อมูลเซ็นเซอร์ เกณฑ์การตรวจจับ และวิธีการกรอง บางแอปนับก้าวจากข้อมูลมาตรความเร่งดิบ ในขณะที่บางแอปใช้ API ของระบบ (TYPE_STEP_COUNTER) และความแตกต่างในการนับอาจสูงถึง 10–15%
บน Android เพื่อเข้าถึง pedometer ให้ใช้เซ็นเซอร์ TYPE_STEP_COUNTER ผ่าน Sensor API — ซึ่งให้จำนวนก้าวสะสมตั้งแต่การรีบูตอุปกรณ์ครั้งล่าสุด หากต้องการเข้าถึงก้าวของวันที่ระบุ ให้บูรณาการ Google Fit API กับประเภทข้อมูล TYPE_STEP_COUNT_DELTA
สรุป
เราจะพัฒนาแอปพลิเคชันบนมือถือแบบครบวงจร
IT Sectr สร้างแอปพลิเคชัน iOS และ Android สำหรับสตาร์ทอัพและธุรกิจตั้งแต่ปี 2017 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ
อ่านเพิ่มเติม