Compass în smartphone-uri — esența, principiul de funcționare și aplicare

Autor: IT Sectr Publicat: 2026-03-25 Timp de citire: 8 min

Compass (busola) în smartphone este un senzor digital bazat pe magnetometru, care determină direcția către polii magnetici ai Pământului. Tehnologia permite aplicațiilor de navigație, cartografie și realitate augmentată să determine cu precizie orientarea dispozitivului în spațiu. Conform datelor STMicroelectronics, 2025, MEMS-magnetometrele moderne asigură o precizie de determinare a direcției de până la 1–2 grade.

Principalele aspecte

  • Compass în smartphone — busolă digitală bazată pe MEMS-magnetometru care măsoară câmpul magnetic al Pământului.
  • Magnetometrele moderne utilizează efectul Hall sau efectul magnetorezistiv pentru determinarea direcției câmpului magnetic.
  • Pentru funcționarea precisă a busolei digitale este necesară calibrarea — compensarea câmpurilor magnetice parazite de la difuzoare și alte componente.
  • Magnetometrul din smartphone măsoară câmpul magnetic pe trei axe (X, Y, Z), ceea ce permite determinarea direcției în orice poziție a dispozitivului.
  • Busola digitală este utilizată în aplicații de navigație, realitate augmentată, servicii de geolocație și programe astronomice.

Ce este busola digitală în smartphone?

Busola digitală (compass) în smartphone este un senzor bazat pe magnetometru care măsoară intensitatea câmpului magnetic al Pământului și determină azimutul (unghiul față de nordul magnetic). Spre deosebire de busola mecanică, busola digitală utilizează sisteme microelectromecanice (MEMS) pentru înregistrarea câmpului magnetic. Magnetometrul măsoară câmpul pe trei axe, ceea ce permite determinarea corectă a direcției la orice înclinare a smartphone-ului.

Cum este construit senzorul

MEMS-magnetometrul modern este un microcip de 2×2×1 mm, integrat în carcasa smartphone-ului împreună cu accelerometrul și giroscopul (în componența IMU cu 9 axe). Senzorul măsoară nu doar direcția, ci și intensitatea câmpului magnetic al Pământului (25–65 µT în funcție de latitudine). Prezența obiectelor metalice și a câmpurilor magnetice parazite de la difuzoare, motorul de vibrații și cameră creează distorsiuni, prin urmare pentru o funcționare precisă este necesară corectarea software a citirilor.

Primele busole digitale în telefoanele mobile au apărut în 2009 odată cu lansarea iPhone 3GS — primul smartphone cu magnetometru încorporat. Astăzi, magnetometrul este instalat în marea majoritate a smartphone-urilor, inclusiv în modelele bugetare. Conform datelor Yole Group, piața MEMS-magnetometrelor pentru dispozitive mobile depășește 1,5 miliarde de unități pe an, ceea ce confirmă cererea pentru această tehnologie.

Principiul de funcționare a magnetometrului

Baza MEMS-magnetometrului o constituie un element sensibil care își modifică caracteristicile electrice sub acțiunea câmpului magnetic extern. În smartphone-urile moderne se utilizează efectul Hall sau efectul magnetorezistiv (AMR — Anisotropic Magneto-Resistance). Principiul se bazează pe faptul că materialul conductor își modifică rezistența sub influența câmpului magnetic, iar prin variația tensiunii se calculează vectorul câmpului magnetic.

Efectul Hall și AMR

Senorii bazați pe efectul Hall înregistrează modificarea tensiunii la marginile plăcii semiconductoare, apărută sub acțiunea forței Lorentz asupra sarcinilor în mișcare. Senzorii magnetorezistivi (AMR) utilizează un strat de permalloy (NiFe), a cărui rezistență depinde de direcția câmpului magnetic. Senzorii AMR asigură o dimensiune mai mică și o sensibilitate mai mare comparativ cu cei Hall, de aceea predomină în smartphone-urile moderne.

TipSensibilitateConsum energeticDimensiune
HallMedieRedusMedie
AMRRidicatăRedusMică
GMRFoarte ridicatăMediuMică

Datele de la magnetometru sunt combinate cu citirile accelerometrului pentru corectarea înclinării și determinarea direcției nordului în plan orizontal. Algoritmul de fuziune a senzorilor (sensor fusion) utilizează filtrul Madgwick sau filtrul Kalman pentru combinarea datelor de la magnetometru, giroscop și accelerometru. Acest lucru permite obținerea unui azimut stabil și precis chiar și în cazul rotațiilor rapide și al scuturării dispozitivului.

Tipuri de magnetometre în dispozitivele mobile

În industria mobilă se utilizează trei tipuri principale de MEMS-magnetometre: bazate pe efectul Hall, magnetorezistive anizotrope (AMR) și magnetorezistive gigant (GMR). Magnetometrele AMR au cea mai mare răspândire în smartphone-uri datorită combinației optime de sensibilitate, consum energetic și cost. Producători de top — AKM (Asahi Kasei Microdevices), STMicroelectronics și Bosch Sensortec.

Sensibilitatea AMR-magnetometrului unui smartphone tipic este de 0,3–1 µT cu un domeniu dinamic de ±1000 µT (±8 Gauss), suficient pentru măsurarea precisă a câmpului terestru (30–65 µT) și compensarea câmpurilor parazite. Frecvența de interogare a senzorului poate ajunge la 100–200 Hz, dar majoritatea aplicațiilor utilizează 10–50 Hz pentru economisirea energiei. Compensarea automată a temperaturii și a deformațiilor de tensiune ale carcasei este implementată la nivelul driverului senzorului.

Calibrarea busolei digitale

Calibrarea busolei este procesul de compensare a câmpurilor magnetice parazite generate de componentele smartphone-ului: difuzoare, motorul de vibrații, cameră și acumulator. Fără calibrare, citirile magnetometrului pot devia de la direcția reală cu 10–30 de grade. Sistemul de calibrare determină matricea de deplasări (hard-iron bias) pe trei axe și o aplică pentru corectarea tuturor măsurătorilor ulterioare.

Algoritmi și metode de calibrare

Metoda standard de calibrare a busolei — desenarea „cifrei 8”: utilizatorul rotește smartphone-ul pe o traiectorie care amintește de cifra 8. În timpul mișcării, senzorul înregistrează câmpul magnetic în toate orientările posibile, iar algoritmul acumulează puncte și aproximează o sferă cu centrul deplasat față de zero. Raza sferei corespunde valorii câmpului magnetic terestru, iar centrul — vectorului de deplasare parazită. După aproximare, sistemul calculează coeficienții de corecție pentru fiecare axă.

Algoritmii moderni de calibrare de la Qualcomm și MediaTek efectuează o calibrare continuă în fundal fără participarea utilizatorului. Ei analizează modificările câmpului magnetic la rotirea dispozitivului și actualizează automat parametrii de corecție. Dacă senzorul detectează un nou câmp parazit (de exemplu, la montarea unei huse magnetice), sistemul inițiază recalibrarea în 1–2 secunde de mișcare continuă a dispozitivului.

Aplicarea busolei în aplicațiile mobile

Busola digitală este utilizată într-o gamă largă de aplicații mobile. Aplicația principală — servicii de navigație și cartografiere (Google Maps, Yandex.Maps, 2GIS), care determină orientarea dispozitivului pe hartă pentru afișarea corectă a direcției de deplasare a utilizatorului. În aplicațiile de realitate augmentată (AR), busola asigură poziționarea corectă a obiectelor virtuale față de punctele cardinale.

În aplicațiile astronomice (Star Walk, SkySafari) busola împreună cu accelerometrul determină direcția în care este orientat smartphone-ul și arată zona corespunzătoare a cerului înstelat. Aplicațiile de pescuit și turism utilizează busola pentru marcarea punctelor de interes pe hartă cu referire la azimut. Urmărirea fitness-ului cu GPS folosește citirile busolei pentru determinarea direcției de alergare sau ciclism, ceea ce crește precizia afișării traseului.

Utilizarea busolei prin Android API

Pentru accesul la busola digitală pe Android se utilizează senzorul TYPE_MAGNETIC_FIELD din Sensor API. Dezvoltatorii înregistrează un ascultător pentru modificările citirilor magnetometrului și primesc un tablou de valori ale intensității câmpului magnetic pe trei axe în microTesla. Pentru determinarea azimutului, datele magnetometrului sunt combinate cu datele accelerometrului prin matricea de rotație sensor fusion.

kotlin
import android.hardware.Sensor
import android.hardware.SensorEvent
import android.hardware.SensorEventListener
import android.hardware.SensorManager

class CompassManager(
    private val sensorManager: SensorManager
) : SensorEventListener {

    private val magnetometer = FloatArray(3)
    private val accelerometer = FloatArray(3)
    private val rotationMatrix = FloatArray(9)
    private val orientation = FloatArray(3)

    override fun onSensorChanged(event: SensorEvent) {
        if (event.sensor.type == Sensor.TYPE_MAGNETIC_FIELD) {
            event.values.copyInto(magnetometer)
        } else if (event.sensor.type == Sensor.TYPE_ACCELEROMETER) {
            event.values.copyInto(accelerometer)
        }
        
        SensorManager.getRotationMatrix(
            rotationMatrix, null,
            accelerometer, magnetometer
        )
        SensorManager.getOrientation(rotationMatrix, orientation)
        
        val azimuth = Math.toDegrees(orientation[0].toDouble())
        // azimut: 0 = nord, 90 = est, 180 = sud, 270 = vest
    }

    fun start() {
        sensorManager.registerListener(this,
            sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD),
            SensorManager.SENSOR_DELAY_UI)
        sensorManager.registerListener(this,
            sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
            SensorManager.SENSOR_DELAY_UI)
    }

    override fun onAccuracyChanged(sensor: Sensor?, accuracy: Int) {}
}

Azimutul obținut prin getOrientation se măsoară în radiani și poate lua valori de la -π la π, unde 0 corespunde nordului magnetic. Pentru afișarea pe ecran, valorile sunt convertite în grade (Math.toDegrees) cu normalizare la intervalul 0–360. Este important să se țină cont de declinația magnetică — unghiul dintre nordul magnetic și cel adevărat (geografic), care depinde de poziția geografică și se modifică în timp. Google Maps corectează automat declinația prin intermediul API-ului GeomagneticField.

Întrebări frecvente

Cum funcționează busola digitală în smartphone?

Busola digitală utilizează un MEMS-magnetometru — un cip de 2×2 mm care măsoară câmpul magnetic al Pământului pe trei axe. Datele magnetometrului sunt combinate cu citirile accelerometrului pentru determinarea azimutului — unghiului dintre direcția nordului și orientarea dispozitivului.

De ce busola de pe telefon arată incorect?

Citirile incorecte ale busolei sunt cel mai adesea cauzate de lipsa calibrării, interferențe magnetice de la difuzoare sau motorul de vibrații, precum și de husele magnetice. Soluția — efectuați o calibrare prin mișcarea „cifrei 8” sau îndepărtați accesoriile magnetice. La erori constante poate fi necesară verificarea senzorului.

Are busola nevoie de calibrare și cum se face?

Da, calibrarea busolei este necesară pentru compensarea câmpurilor magnetice parazite din interiorul smartphone-ului. În majoritatea dispozitivelor moderne, calibrarea se efectuează automat în fundal. Pentru calibrarea manuală, desenați cu smartphone-ul o „cifră 8” în aer — sistemul va colecta date din toate unghiurile și va corecta citirile.

Cum se obține accesul la busolă într-o aplicație Android?

Pe Android accesul la busolă se realizează prin Sensor API cu senzorul TYPE_MAGNETIC_FIELD. Azimutul se calculează prin SensorManager.getRotationMatrix() și getOrientation(), care combină datele magnetometrului și accelerometrului. Azimutul obținut poate fi adaptat pentru afișarea pe ecran.

Care modele de smartphone-uri au cea mai precisă busolă?

Cele mai precise busole sunt instalate în smartphone-urile cu senzor IMU triplu (magnetometru + giroscop + accelerometru) și sistem activ de calibrare. Liderii sunt flagship-urile Google Pixel, Samsung Galaxy seria S și iPhone Pro — acestea utilizează magnetometre AKM și Bosch cu sensibilitate de 0,3 µT și corecție automată.

Concluzii

  • Compass (busola digitală) în smartphone este un MEMS-magnetometru care măsoară câmpul magnetic al Pământului pentru determinarea azimutului și orientării dispozitivului.
  • Magnetometrele moderne utilizează efectul AMR (magnetorezistență anizotropă), asigurând o sensibilitate de 0,3 µT și o dimensiune compactă de 2×2 mm.
  • Citirile precise ale busolei necesită calibrare pentru compensarea câmpurilor magnetice ale difuzoarelor, motorului de vibrații și camerei smartphone-ului.
  • Direcția nordului se calculează prin sensor fusion — combinarea datelor magnetometrului cu accelerometrul și giroscopul pentru corectarea înclinării.
  • Busola digitală se aplică în navigație, cartografie, realitate augmentată, astronomie și urmărirea fitness-ului pentru determinarea orientării și direcției de mișcare.
  • Pe Android accesul la busolă se realizează prin TYPE_MAGNETIC_FIELD cu calcularea azimutului prin getRotationMatrix și getOrientation.
  • Declinația magnetică (unghiul dintre nordul magnetic și cel geografic) se corectează automat în API-urile de navigație Google și Apple.

Vom dezvolta o aplicație mobilă la cheie

IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.

Discutați proiectul

Citiți și