Compass (kompas) sa smartphone ay isang digital sensor batay sa magnetometer na tumutukoy sa direksyon patungo sa magnetic poles ng Daigdig. Ang teknolohiya ay nagbibigay-daan sa mga aplikasyon ng nabigasyon, kartograpiya at augmented reality na tumpak na matukoy ang oryentasyon ng aparato sa espasyo. Ayon sa datos ng STMicroelectronics, 2025, ang mga modernong MEMS-magnetometer ay nagbibigay ng katumpakan sa pagtukoy ng direksyon hanggang 1–2 digri.
Mga Pangunahing Punto
Digital compass (compass) sa smartphone ay isang sensor batay sa magnetometer na sumusukat sa lakas ng magnetic field ng Daigdig at tumutukoy sa azimuth (anggulo relatibo sa magnetic north). Hindi tulad ng mechanical compass, ang digital compass ay gumagamit ng micro-electromechanical system (MEMS) para irehistro ang magnetic field. Sinusukat ng magnetometer ang field sa tatlong aksis, na nagbibigay-daan upang matukoy nang tama ang direksyon sa anumang pagtagilid ng smartphone.
Ang modernong MEMS-magnetometer ay isang microchip na may sukat na 2×2×1 mm, isinama sa katawan ng smartphone kasama ng accelerometer at gyroscope (bahagi ng 9-aksis na IMU). Sinusukat ng sensor hindi lamang ang direksyon kundi pati na rin ang intensity ng magnetic field ng Daigdig (25–65 µT depende sa latitude). Ang pagkakaroon ng mga metal na bagay at parasitic magnetic field mula sa mga speaker, vibration motor at camera ay dulot ng pagbaluktot, kaya para sa tumpak na paggana kinakailangan ang software correction ng mga pagbasa.
Ang unang digital compass sa mga mobile phone ay lumitaw noong 2009 sa paglabas ng iPhone 3GS — ang unang smartphone na may built-in na magnetometer. Ngayon, ang magnetometer ay naka-install sa karamihan ng mga smartphone, kabilang ang mga budget model. Ayon sa Yole Group, ang merkado ng MEMS-magnetometer para sa mga mobile device ay lumalampas sa 1.5 bilyong unit bawat taon, na nagpapatunay sa pangangailangan para sa teknolohiyang ito.
Ang batayan ng MEMS-magnetometer ay isang sensitibong elemento na nagbabago ng mga electrical characteristics nito sa ilalim ng impluwensya ng external magnetic field. Sa mga modernong smartphone ginagamit ang Hall effect o magnetoresistive effect (AMR — Anisotropic Magneto-Resistance). Ang prinsipyo ay batay sa katotohanan na ang materyal na nagdadala ng kuryente ay nagbabago ng resistensya nito kapag naapektuhan ng magnetic field, at sa pamamagitan ng pagbabago ng boltahe ay kinakalkula ang vector ng magnetic field.
Ang mga sensor batay sa Hall effect ay nagrerehistro ng pagbabago ng boltahe sa mga gilid ng semiconductor plate, na lumilitaw sa ilalim ng impluwensya ng Lorentz force sa gumagalaw na mga charge. Ang mga magnetoresistive sensor (AMR) ay gumagamit ng layer ng permalloy (NiFe), na ang resistensya ay depende sa direksyon ng magnetic field. Ang mga AMR sensor ay nagbibigay ng mas maliit na sukat at mas mataas na sensitividad kumpara sa Hall sensor, kaya nangingibabaw ang mga ito sa mga modernong smartphone.
| Uri | Sensitividad | Pagkonsumo ng Enerhiya | Sukat |
|---|---|---|---|
| Hall | Katamtaman | Mababa | Katamtaman |
| AMR | Mataas | Mababa | Maliit |
| GMR | Napakataas | Katamtaman | Maliit |
Ang data mula sa magnetometer ay pinagsama sa mga pagbasa ng accelerometer para sa correction ng pagtagilid at pagtukoy ng direksyon ng north sa horizontal plane. Ang algorithm ng sensor fusion ay gumagamit ng Madgwick filter o Kalman filter para pagsamahin ang data ng magnetometer, gyroscope at accelerometer. Ito ay nagbibigay-daan upang makakuha ng stable at tumpak na azimuth kahit sa mabilis na pag-ikot at pag-alog ng aparato.
Sa industriya ng mobile, tatlong pangunahing uri ng MEMS-magnetometer ang ginagamit: batay sa Hall effect, anisotropic magnetoresistive (AMR) at giant magnetoresistive (GMR). Ang mga AMR magnetometer ay pinakalaganap sa smartphone dahil sa optimal na kombinasyon ng sensitividad, pagkonsumo ng enerhiya at gastos. Mga nangungunang manufacturer — AKM (Asahi Kasei Microdevices), STMicroelectronics at Bosch Sensortec.
Ang sensitividad ng AMR-magnetometer ng isang tipikal na smartphone ay 0.3–1 µT na may dynamic range na ±1000 µT (±8 Gauss), sapat para sa tumpak na pagsukat ng field ng Daigdig (30–65 µT) at kompensasyon ng parasitic field. Ang polling frequency ng sensor ay maaaring umabot ng 100–200 Hz, ngunit karamihan ng mga aplikasyon ay gumagamit ng 10–50 Hz para makatipid ng enerhiya. Ang automatic compensation ng temperatura at stress deformation ng katawan ay implementado sa level ng sensor driver.
Kalibrasyon ng compass ay ang proseso ng kompensasyon ng mga parasitic magnetic field na nalilikha ng mga komponente ng smartphone: mga speaker, vibration motor, camera at baterya. Kung walang kalibrasyon, ang mga pagbasa ng magnetometer ay maaaring lumihis mula sa totoong direksyon ng 10–30 digri. Ang sistema ng kalibrasyon ay tumutukoy sa matrix ng displacement (hard-iron bias) sa tatlong aksis at inilalapat ito para sa correction ng lahat ng kasunod na pagsukat.
Ang standard na paraan ng kalibrasyon ng compass — pagguhit ng figure eight: iniikot ng user ang smartphone sa trajectory na kahawig ng numero 8. Sa panahon ng paggalaw, nirerehistro ng sensor ang magnetic field sa lahat ng posibleng oryentasyon, at ang algorithm ay nag-iipon ng mga punto at nag-aaproksima ng sphere na ang sentro ay inilipat relatibo sa zero. Ang radius ng sphere ay tumutugma sa laki ng magnetic field ng Daigdig, at ang sentro — sa vector ng parasitic displacement. Pagkatapos ng aproksimasyon, kinakalkula ng sistema ang correction coefficient para sa bawat aksis.
Ang mga modernong algorithm ng kalibrasyon mula sa Qualcomm at MediaTek ay nagsasagawa ng tuloy-tuloy na background calibration nang walang partisipasyon ng user. Sila ay nagsusuri ng mga pagbabago sa magnetic field sa pag-ikot ng aparato at awtomatikong ina-update ang mga parameter ng correction. Kung ang sensor ay nakakita ng bagong parasitic field (halimbawa sa paglalagay ng magnetic case), ang sistema ay magsisimula ng recalibration sa loob ng 1–2 segundo ng tuloy-tuloy na paggalaw ng aparato.
Digital compass ay ginagamit sa malawak na spectrum ng mga mobile application. Ang pangunahing gamit — mga serbisyo ng nabigasyon at pagmamapa (Google Maps, Yandex.Maps, 2GIS) na tumutukoy sa oryentasyon ng aparato sa mapa para sa tamang pagpapakita ng direksyon ng paggalaw ng user. Sa mga aplikasyon ng augmented reality (AR) tinitiyak ng compass ang tamang pagkakalagay ng mga virtual object relatibo sa mga direksyon ng mundo.
Sa mga aplikasyon ng astronomiya (Star Walk, SkySafari) ang compass kasama ng accelerometer ay tumutukoy sa direksyon kung saan nakaturo ang smartphone at nagpapakita ng kaukulang lugar ng starry sky. Ang mga aplikasyon ng pangingisda at turismo ay gumagamit ng compass para markahan ang mga punto ng interes sa mapa na may reference sa azimuth. Ang fitness tracking na may GPS ay gumagamit ng mga pagbasa ng compass para matukoy ang direksyon ng pagtakbo o pagbibisikleta, na nagpapataas ng katumpakan ng pagpapakita ng ruta.
Para sa access sa digital compass sa Android ginagamit ang sensor TYPE_MAGNETIC_FIELD mula sa Sensor API. Ang mga developer ay nagrerehistro ng listener ng mga pagbabago sa pagbasa ng magnetometer at tumatanggap ng array ng mga halaga ng lakas ng magnetic field sa tatlong aksis sa microTesla. Para sa pagtukoy ng azimuth, ang data ng magnetometer ay pinagsama sa data ng accelerometer sa pamamagitan ng rotation matrix ng sensor fusion.
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())
// azimuth: 0 = hilaga, 90 = silangan, 180 = timog, 270 = kanluran
}
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) {}
}
Ang azimuth na nakuha sa pamamagitan ng getOrientation ay sinusukat sa radians at maaaring kumuha ng mga halaga mula -π hanggang π, kung saan ang 0 ay tumutugma sa magnetic north. Para sa pagpapakita sa screen, ang mga halaga ay kino-convert sa digri (Math.toDegrees) na may normalisasyon sa range 0–360. Mahalagang isaalang-alang ang magnetic declination — ang anggulo sa pagitan ng magnetic at true (geographic) north, na depende sa geographic na posisyon at nagbabago sa paglipas ng panahon. Ang Google Maps ay awtomatikong nagko-correct ng declination sa pamamagitan ng GeomagneticField API.
Mga Madalas Itanong
Digital compass ay gumagamit ng MEMS-magnetometer — isang chip na 2×2 mm na sumusukat ng magnetic field ng Daigdig sa tatlong aksis. Ang data ng magnetometer ay pinagsama sa mga pagbasa ng accelerometer para matukoy ang azimuth — ang anggulo sa pagitan ng direksyon ng north at oryentasyon ng aparato.
Ang hindi tumpak na pagbasa ng compass ay kadalasang sanhi ng kakulangan ng kalibrasyon, magnetic interference mula sa mga speaker o vibration motor, pati na rin ng mga magnetic case. Solusyon — magsagawa ng kalibrasyon gamit ang figure eight movement o tanggalin ang magnetic accessories. Sa patuloy na error ay maaaring kailanganin ang pagsusuri ng sensor.
Oo, kalibrasyon ng compass ay kinakailangan para sa kompensasyon ng parasitic magnetic field sa loob ng smartphone. Sa karamihan ng modernong aparato, ang kalibrasyon ay awtomatikong ginagawa sa background. Para sa manual calibration, gumuhit ng figure eight gamit ang smartphone sa hangin — ang sistema ay mangongolekta ng data mula sa lahat ng anggulo at icocorrect ang mga pagbasa.
Sa Android ang access sa compass ay sa pamamagitan ng Sensor API na may sensor na TYPE_MAGNETIC_FIELD. Ang azimuth ay kinakalkula sa pamamagitan ng SensorManager.getRotationMatrix() at getOrientation(), na pinagsasama ang data ng magnetometer at accelerometer. Ang nakuha na azimuth ay maaaring i-adjust para sa pagpapakita sa screen.
Ang pinakatumpak na compass ay naka-install sa mga smartphone na may triple IMU sensor (magnetometer + gyroscope + accelerometer) at active calibration system. Ang nangunguna ay ang mga flagship na Google Pixel, Samsung Galaxy S-series at iPhone Pro — gumagamit sila ng AKM at Bosch magnetometer na may sensitividad na 0.3 µT at automatic correction.
Buod
Gagawa kami ng mobile application na turnkey
Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.
Basahin din