Compass (компас) у паметном телефону је дигитални сензор заснован на магнетометру који одређује смер ка магнетним половима Земље. Технологија омогућава апликацијама за навигацију, картографију и проширену реалност да прецизно одређују оријентацију уређаја у простору. Према подацима STMicroelectronics, 2025, савремени MEMS-магнетометри обезбеђују тачност одређивања смера до 1–2 степена.
Главно
Дигитални компас (compass) у паметном телефону је сензор заснован на магнетометру који мери јачину магнетног поља Земље и одређује азимут (угао у односу на магнетни север). За разлику од механичког компаса, дигитални компас користи микроелектромеханичке системе (MEMS) за регистрацију магнетног поља. Магнетометар мери поље по три осе, што омогућава правилно одређивање смера при било ком нагибу паметног телефона.
Савремени MEMS-магнетометар је микрочип величине 2×2×1 mm, интегрисан у кућиште паметног телефона заједно са акцелерометром и жироскопом (у саставу 9-осног IMU). Сензор мери не само смер већ и интензитет магнетног поља Земље (25–65 µT у зависности од географске ширине). Присуство металних предмета и паразитних магнетних поља од звучника, вибромотора и камере ствара изобличења, па је за прецизан рад потребна софтверска корекција очитавања.
Први дигитални компаси у мобилним телефонима појавили су се 2009. године са изласком iPhone 3GS — првог паметног телефона са уграђеним магнетометром. Данас се магнетометар уграђује у огромној већини паметних телефона, укључујући буџетске моделе. Према подацима Yole Group, тржиште MEMS-магнетометара за мобилне уређаје премашује 1,5 милијарди јединица годишње, што потврђује потражњу за овом технологијом.
Основу MEMS-магнетометра чини осетљиви елемент који мења своје електричне карактеристике под дејством спољашњег магнетног поља. У савременим паметним телефонима користи се Холов ефекат или магнеторезистивни ефекат (AMR — Anisotropic Magneto-Resistance). Принцип се заснива на томе да материјал са струјом мења отпор под утицајем магнетног поља, а по промени напона израчунава се вектор магнетног поља.
Сензори на Холовом ефекту региструју промену напона на ивицама полупроводничке плочице која настаје под дејством Лоренцове силе на покретна наелектрисања. Магнеторезистивни сензори (AMR) користе слој пермалоја (NiFe), чији отпор зависи од смера магнетног поља. AMR сензори обезбеђују мању величину и већу осетљивост у поређењу са Холовим, па доминирају у савременим паметним телефонима.
| Тип | Осетљивост | Потрошња енергије | Величина |
|---|---|---|---|
| Холов | Средња | Ниска | Средња |
| AMR | Висока | Ниска | Мала |
| GMR | Веома висока | Средња | Мала |
Подаци са магнетометра се комбинују са очитавањима акцелерометра за корекцију нагиба и одређивање смера севера у хоризонталној равни. Алгоритам сензор фузије (sensor fusion) користи Маџвиков филтер или Калманов филтер за обједињавање података магнетометра, жироскопа и акцелерометра. Ово омогућава добијање стабилног и прецизног азимута чак и при брзим окретима и трешењу уређаја.
У мобилној индустрији користе се три основна типа MEMS-магнетометара: на Холовом ефекту, анизотропни магнеторезистивни (AMR) и гигантски магнеторезистивни (GMR). AMR магнетометри су најзаступљенији у паметним телефонима захваљујући оптималној комбинацији осетљивости, потрошње енергије и цене. Водећи произвођачи — AKM (Asahi Kasei Microdevices), STMicroelectronics и Bosch Sensortec.
Осетљивост AMR-магнетометра типичног паметног телефона износи 0,3–1 µT при динамичком опсегу од ±1000 µT (±8 Гауса), што је довољно за прецизно мерење Земљиног поља (30–65 µT) и компензацију паразитних поља. Фреквенција очитавања сензора може достићи 100–200 Hz, али већина апликација користи 10–50 Hz ради уштеде енергије. Аутоматска компензација температуре и стресних деформација кућишта реализована је на нивоу драјвера сензора.
Калибрација компаса је процес компензације паразитних магнетних поља која стварају компоненте паметног телефона: звучници, вибромотор, камера и акумулатор. Без калибрације очитавања магнетометра могу одступати од реалног смера за 10–30 степени. Систем калибрације одређује матрицу помераја (hard-iron bias) по три осе и примењује је за корекцију свих наредних мерења.
Стандардна метода калибрације компаса — цртање „осмице”: корисник ротира паметни телефон по путањи која подсећа на цифру 8. Током покрета сензор региструје магнетно поље у свим могућим оријентацијама, а алгоритам акумулира тачке и апроксимира сферу са центром помереним у односу на нулу. Полупречник сфере одговара величини магнетног поља Земље, а центар — вектору паразитног помераја. Након апроксимације систем израчунава корекционе коефицијенте за сваку осу.
Савремени алгоритми калибрације компанија Qualcomm и MediaTek обављају континуирану позадинску калибрацију без учешћа корисника. Они анализирају промене магнетног поља при окретању уређаја и аутоматски ажурирају параметре корекције. Ако сензор открије ново паразитно поље (нпр. при постављању магнетне футроле), систем покреће рекалибрацију у року од 1–2 секунде непрекидног покрета уређаја.
Дигитални компас се користи у широком спектру мобилних апликација. Основна примена — навигациони и картографски сервиси (Google Maps, Yandex.Maps, 2GIS) који одређују оријентацију уређаја на мапи за коректно приказивање смера кретања корисника. У апликацијама проширене реалности (AR) компас обезбеђује правилно позиционирање виртуелних објеката у односу на стране света.
У астрономским апликацијама (Star Walk, SkySafari) компас у комбинацији са акцелерометром одређује смер у ком је усмерен паметни телефон и приказује одговарајућу област звезданог неба. Риболовачке и туристичке апликације користе компас за обележавање тачака интереса на мапи са везом на азимут. Фитнес-трекинг са GPS-ом користи очитавања компаса за одређивање смера трчања или вожње бицикла, што повећава прецизност приказа руте.
За приступ дигиталном компасу на Android-у користи се сензор TYPE_MAGNETIC_FIELD из Sensor API-ја. Програмери региструју ослушкивач промена очитавања магнетометра и добијају низ вредности јачине магнетног поља по три осе у микротеслама. За одређивање азимута подаци магнетометра се комбинују са подацима акцелерометра кроз матрицу ротације 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())
// азимут: 0 = север, 90 = исток, 180 = југ, 270 = запад
}
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) {}
}
Азимут добијен кроз getOrientation мери се у радијанима и може узимати вредности од -π до π, где 0 одговара магнетном северу. За приказ на екрану вредности се претварају у степене (Math.toDegrees) са нормализацијом на опсег 0–360. Важно је узети у обзир магнетну деклинацију — угао између магнетног и стварног (географског) севера, који зависи од географског положаја и мења се током времена. Google мапе аутоматски коригују деклинацију кроз GeomagneticField API.
Често постављана питања
Дигитални компас користи MEMS-магнетометар — чип величине 2×2 mm који мери магнетно поље Земље по три осе. Подаци магнетометра се комбинују са очитавањима акцелерометра за одређивање азимута — угла између смера ка северу и оријентације уређаја.
Нетачна очитавања компаса најчешће су узрокована недостатком калибрације, магнетним сметњама од звучника или вибромотора, као и магнетним футролама. Решење — извршите калибрацију покретом „осмице” или уклоните магнетне додатке. При сталним грешкама може бити потребна провера сензора.
Да, калибрација компаса је неопходна за компензацију паразитних магнетних поља унутар паметног телефона. У већини савремених уређаја калибрација се обавља аутоматски у позадини. За ручну калибрацију нацртајте паметним телефоном „осмицу” у ваздуху — систем ће прикупити податке из свих углова и кориговати очитавања.
На Android-у приступ компасу се остварује кроз Sensor API са сензором TYPE_MAGNETIC_FIELD. Азимут се израчунава кроз SensorManager.getRotationMatrix() и getOrientation(), који комбинују податке магнетометра и акцелерометра. Добијени азимут се може прилагодити за приказ на екрану.
Најпрецизнији компаси су уграђени у паметне телефоне са троструким IMU сензором (магнетометар + жироскоп + акцелерометар) и активним системом калибрације. Предњаче флагмански модели Google Pixel, Samsung Galaxy S-серије и iPhone Pro — користе магнетометре AKM и Bosch са осетљивошћу од 0,3 µT и аутоматском корекцијом.
Резиме
Развићемо мобилну апликацију под кључ
IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође