Il pedometer (contapassi) nelle applicazioni mobili è un meccanismo software-hardware per il conteggio dei passi dell'utente basato sui dati dell'accelerometro e del giroscopio. Gli smartphone moderni utilizzano algoritmi di apprendimento automatico in combinazione con sensori per rilevare con precisione camminata, corsa e altri tipi di attività fisica. Secondo la documentazione Apple HealthKit, 2025, la precisione del conteggio dei passi sui dispositivi moderni raggiunge il 95–97% durante la camminata normale.
Punti chiave
Il pedometer (contapassi) nelle applicazioni mobili è una funzione che determina il numero di passi dell'utente in base ai dati dei sensori di movimento integrati dello smartphone. A differenza dei pedometri meccanici del passato, il pedometer mobile utilizza sensori microelettromeccanici (MEMS) e algoritmi di elaborazione digitale del segnale per un conteggio preciso della locomozione. Le implementazioni moderne non si limitano a contare i passi, ma classificano anche l'attività: camminata, corsa, salita scale.
L'integrazione del pedometer nei dispositivi mobili è diventata possibile grazie all'introduzione del coprocessore di movimento M7 nell'iPhone 5s nel 2013, che raccoglieva continuamente dati dai sensori con un consumo energetico minimo. Oggi, tutti gli smartphone moderni dispongono di supporto hardware per il conteggio dei passi a livello di sensor hub — un chip dedicato che elabora i dati dei sensori inerziali senza risvegliare il processore principale.
Il conteggio dei passi su uno smartphone si basa sull'analisi dei segnali dell'accelerometro, che misura l'accelerazione del dispositivo lungo tre assi perpendicolari (X, Y, Z). Durante la camminata, ogni passo crea un pattern di accelerazione caratteristico: prima un picco verso l'alto quando si solleva la gamba, poi un picco verso il basso all'atterraggio. La cadenza dei passi è di 100–130 passi/min per la camminata e 150–180 passi/min per la corsa, mentre l'ampiezza dell'accelerazione varia tra 2–6 m/s².
Il segnale grezzo dell'accelerometro contiene rumore e interferenze ad alta frequenza, quindi la prima fase di elaborazione è il filtraggio passa-basso con una frequenza di taglio di 3–5 Hz. Dopo il filtraggio, viene calcolato il vettore di accelerazione: a = sqrt(x² + y² + z²), isolando l'accelerazione legata al movimento indipendentemente dall'orientamento del dispositivo. Successivamente, l'algoritmo rileva i massimi locali nel segnale — ogni massimo corrisponde a un passo.
Per ridurre i falsi positivi (ad esempio, vibrazioni durante il trasporto), vengono applicati criteri aggiuntivi: ampiezza minima del passo (generalmente >1,2 m/s²), intervallo minimo tra i passi (300–400 ms per la camminata) e verifica della periodicità del segnale tramite autocorrelazione. Se gli intervalli di tempo tra i picchi sono irregolari, la sequenza viene marcata come movimento casuale e non conteggiata come passi.
L'algoritmo di base per il rilevamento dei passi utilizza il metodo di rilevamento a soglia: il sistema cerca i momenti in cui il segnale dell'accelerometro supera una soglia impostata e poi ritorna al livello di riposo. Ciascuno di questi eventi è considerato un passo potenziale. Esistono due approcci: rilevamento dei picchi (peak detection) e attraversamento dello zero (zero-crossing). Il rilevamento dei picchi cattura i massimi del segnale, mentre l'attraversamento dello zero rileva i momenti in cui il segnale incrocia il valore medio, che dipende meno dall'ampiezza del passo.
Gli algoritmi moderni di conteggio dei passi utilizzano una soglia adattiva che si regola automaticamente allo stile di camminata dell'utente. Il sistema analizza la varianza del segnale negli ultimi 2–3 secondi e calcola una soglia dinamica come radice quadrata media (RMS) moltiplicata per un coefficiente. Ciò consente un conteggio corretto dei passi sia durante una passeggiata lenta che durante una corsa vigorosa, senza calibrazione incrociata tra tipi di attività.
Le implementazioni moderne del pedometer utilizzano non solo il rilevamento dei picchi, ma anche l'apprendimento automatico per classificare i pattern di movimento. I modelli di reti neurali vengono addestrati su migliaia di ore di registrazioni di movimenti reali provenienti da vari scenari: camminata su superfici piane, salita scale, corsa, spostamenti in veicoli. Le caratteristiche di input includono serie temporali dell'accelerometro e del giroscopio, e l'output è la probabilità che il segmento di segnale corrente corrisponda a locomozione umana.
Secondo la ricerca Google Activity Recognition, i modelli basati su reti neurali convoluzionali (CNN) raggiungono una precisione di riconoscimento della camminata del 98% sui set di dati di riferimento. Sui dispositivi Apple, viene utilizzato Core ML con un modello di classificazione dell'attività addestrato sui dati di oltre 100.000 volontari. I modelli ottimizzati vengono eseguiti direttamente sul dispositivo (inferenza sul dispositivo), garantendo elaborazione istantanea e preservando la privacy dell'utente.
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
// Aggiornamento dell'interfaccia con il numero di passi
DispatchQueue.main.async {
// self.stepsLabel.text = "\(steps) passi"
}
}
}
func stopTracking() {
pedometer.stopUpdates()
}
}
Su iOS, per accedere al pedometer viene utilizzata la classe CMPedometer del framework Core Motion. CMPedometer fornisce non solo il numero di passi, ma anche la distanza percorsa, il numero di piani (salite), il ritmo di camminata e la durata dell'attività. I dati sono disponibili sia in tempo reale (startUpdates) che per qualsiasi periodo passato (queryPedometerData). Il coprocessore di movimento (serie M) elabora i dati dei sensori a livello hardware, riducendo il consumo energetico dell'80% rispetto all'elaborazione software.
Su Android, la funzionalità del pedometer è implementata tramite due sensori hardware: TYPE_STEP_COUNTER (contatore cumulativo di passi dall'avvio) e TYPE_STEP_DETECTOR (generazione di evento a ogni passo). TYPE_STEP_COUNTER non richiede calibrazione e non consuma energia del processore — i dati vengono aggiornati a livello hardware del sensor hub. Per accedere alle statistiche accumulate dei passi giornalieri, viene utilizzata l'API Google Fit con il record 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) {}
}
La precisione del pedometer dipende da diversi fattori: posizione dello smartphone (in mano, tasca o borsa), tipo di attività (camminata, corsa, salita scale) e qualità dei sensori. Quando lo smartphone è portato nella tasca dei pantaloni, la precisione raggiunge il 93–97%; in una borsa o zaino, scende al 70–85%. La precisione è influenzata anche dallo stile di camminata dell'utente: un'andatura strascicata con bassa ampiezza di accelerazione produce più errori di una falcata regolare.
Le principali limitazioni dei pedometri mobili includono: incapacità di contare i passi durante movimenti molto lenti (<1,5 km/h), falsi positivi da viaggi in veicoli, precisione ridotta durante la corsa a bassa velocità (jogging) e l'influenza della gestualità durante le conversazioni. Per minimizzare gli errori, le applicazioni moderne utilizzano una combinazione di sensori (accelerometro + giroscopio + barometro) e l'apprendimento automatico per filtrare gli artefatti. Il barometro, ad esempio, aiuta a rilevare la salita scale e i cambiamenti di altitudine, escludendo i falsi passi in ascensore.
Domande frequenti
Un contapassi nel telefono utilizza l'accelerometro, che registra l'accelerazione a ogni passo. L'algoritmo analizza i picchi di accelerazione su tre assi, filtra il rumore e determina il numero di passi. I modelli moderni utilizzano anche il giroscopio e l'apprendimento automatico per migliorare la precisione e classificare l'attività.
Quando lo smartphone è portato nella tasca dei pantaloni, la precisione raggiunge il 95–97% durante la camminata normale. In una borsa o zaino, la precisione scende al 70–85%. Lo stile di camminata e il tipo di superficie influenzano anche la precisione — il terreno irregolare può introdurre errori fino al 10–15%.
Sì, il contapassi funziona completamente offline senza connessione internet. Tutti i calcoli vengono eseguiti sul dispositivo utilizzando i sensori integrati. Internet può essere necessario solo per sincronizzare i dati con i servizi cloud delle app di fitness o per visualizzare una mappa del percorso.
App diverse utilizzano algoritmi diversi per elaborare i dati dei sensori, soglie di rilevamento e metodi di filtraggio. Alcune app contano i passi basandosi sui dati grezzi dell'accelerometro, mentre altre utilizzano API di sistema (TYPE_STEP_COUNTER), e la differenza nei conteggi può raggiungere il 10–15%.
Su Android, per accedere al contapassi, utilizzare il sensore TYPE_STEP_COUNTER tramite Sensor API — fornisce il numero cumulativo di passi dall'ultimo riavvio del dispositivo. Per accedere ai passi di un giorno specifico, integrare Google Fit API con il tipo di dati TYPE_STEP_COUNT_DELTA.
Riepilogo
Svilupperemo un'applicazione mobile chiavi in mano
IT Sectr crea applicazioni iOS e Android per startup e aziende dal 2017. Ti consulteremo e ti proporremo la soluzione migliore.
Leggi anche