A bússola (compass) em um smartphone é um sensor digital baseado em um magnetômetro que determina a direção para os polos magnéticos da Terra. A tecnologia permite que aplicativos de navegação, cartografia e realidade aumentada determinem com precisão a orientação do dispositivo no espaço. De acordo com STMicroelectronics, 2025, os magnetômetros MEMS modernos fornecem precisão de determinação de direção de até 1–2 graus.
Principais pontos
A bússola digital em um smartphone é um sensor baseado em um magnetômetro que mede a intensidade do campo magnético da Terra e determina o azimute (ângulo em relação ao norte magnético). Diferente de uma bússola mecânica, a bússola digital usa sistemas microeletromecânicos (MEMS) para detectar o campo magnético. O magnetômetro mede o campo em três eixos, permitindo determinar corretamente a direção em qualquer inclinação do smartphone.
Um magnetômetro MEMS moderno é um microchip de 2×2×1 mm integrado ao corpo do smartphone junto com um acelerômetro e giroscópio (como parte de uma IMU de 9 eixos). O sensor mede não apenas a direção, mas também a intensidade do campo magnético da Terra (25–65 µT dependendo da latitude). A presença de objetos metálicos e campos magnéticos parasitas dos alto-falantes, motor de vibração e câmera cria distorções, portanto, a correção por software das leituras é necessária para um funcionamento preciso.
As primeiras bússolas digitais em telefones celulares apareceram em 2009 com o lançamento do iPhone 3GS — o primeiro smartphone com magnetômetro integrado. Hoje, os magnetômetros são instalados na grande maioria dos smartphones, incluindo modelos de baixo custo. De acordo com Yole Group, o mercado de magnetômetros MEMS para dispositivos móveis ultrapassa 1,5 bilhão de unidades por ano, confirmando a demanda por esta tecnologia.
O núcleo de um magnetômetro MEMS é um elemento sensor que altera suas características elétricas sob a influência de um campo magnético externo. Smartphones modernos usam o efeito Hall ou o efeito magnetorresistivo (AMR — Anisotropic Magneto-Resistance). O princípio baseia-se no fato de que um material condutor de corrente muda sua resistência quando exposto a um campo magnético, e o vetor do campo magnético é calculado a partir da mudança de tensão.
Sensores de efeito Hall detectam mudanças de tensão nas bordas de uma placa semicondutora causadas pela força de Lorentz nas cargas em movimento. Sensores magnetorresistivos (AMR) usam uma película de permalloy (NiFe) cuja resistência depende da direção do campo magnético. Os sensores AMR fornecem tamanho menor e maior sensibilidade em comparação com sensores Hall, por isso dominam nos smartphones modernos.
| Tipo | Sensibilidade | Consumo de energia | Tamanho |
|---|---|---|---|
| Hall | Média | Baixo | Médio |
| AMR | Alta | Baixo | Pequeno |
| GMR | Muito alta | Médio | Pequeno |
Os dados do magnetômetro são combinados com as leituras do acelerômetro para corrigir a inclinação e determinar a direção ao norte no plano horizontal. O algoritmo de fusão de sensores usa o filtro Madgwick ou o filtro Kalman para combinar dados do magnetômetro, giroscópio e acelerômetro. Isso fornece um azimute estável e preciso mesmo durante rotações rápidas e tremores do dispositivo.
Na indústria móvel, três tipos principais de magnetômetros MEMS são usados: efeito Hall, magnetorresistivos anisotrópicos (AMR) e magnetorresistivos gigantes (GMR). Os magnetômetros AMR são os mais amplamente utilizados em smartphones devido ao seu equilíbrio ótimo entre sensibilidade, consumo de energia e custo. Os principais fabricantes são AKM (Asahi Kasei Microdevices), STMicroelectronics e Bosch Sensortec.
A sensibilidade de um magnetômetro AMR em um smartphone típico é de 0,3–1 µT com faixa dinâmica de ±1000 µT (±8 Gauss), suficiente para medir com precisão o campo terrestre (30–65 µT) e compensar campos parasitas. A taxa de amostragem do sensor pode atingir 100–200 Hz, mas a maioria dos aplicativos usa 10–50 Hz para economizar energia. A compensação automática de temperatura e deformações do invólucro é implementada no nível do driver do sensor.
Calibração da bússola é o processo de compensação dos campos magnéticos parasitas criados pelos componentes do smartphone: alto-falantes, motor de vibração, câmera e bateria. Sem calibração, as leituras do magnetômetro podem desviar-se da direção real em 10–30 graus. O sistema de calibração determina a matriz de deslocamento (hard-iron bias) em três eixos e a aplica para corrigir todas as medições subsequentes.
O método padrão de calibração da bússola é desenhar um “8”: o usuário gira o smartphone em uma trajetória semelhante ao número 8. Durante o movimento, o sensor registra o campo magnético em todas as orientações possíveis, e o algoritmo acumula pontos e aproxima uma esfera com centro deslocado do zero. O raio da esfera corresponde à magnitude do campo magnético terrestre, e o centro representa o vetor de deslocamento parasita. Após a aproximação, o sistema calcula coeficientes de correção para cada eixo.
Os algoritmos de calibração modernos da Qualcomm e MediaTek realizam calibração contínua em segundo plano sem intervenção do usuário. Eles analisam as mudanças do campo magnético durante as rotações do dispositivo e atualizam automaticamente os parâmetros de correção. Se o sensor detectar um novo campo parasita (por exemplo, ao colocar uma capa magnética), o sistema inicia a recalibração em 1–2 segundos de movimento contínuo do dispositivo.
A bússola digital é usada em uma ampla gama de aplicativos móveis. O uso principal é em serviços de navegação e cartografia (Google Maps, Yandex.Maps, 2GIS), que determinam a orientação do dispositivo no mapa para exibir corretamente a direção de deslocamento do usuário. Em aplicativos de realidade aumentada (AR), a bússola garante o posicionamento correto de objetos virtuais em relação aos pontos cardeais.
Em aplicativos de astronomia (Star Walk, SkySafari), a bússola combinada com um acelerômetro determina a direção para a qual o smartphone está apontando e mostra a área correspondente do céu noturno. Aplicativos de pesca e turismo usam a bússola para marcar pontos de interesse no mapa com referência ao azimute. O rastreamento de fitness com GPS usa as leituras da bússola para determinar a direção de corrida ou ciclismo, melhorando a precisão da exibição da rota.
Para acessar a bússola digital no Android, o sensor TYPE_MAGNETIC_FIELD da Sensor API é usado. Os desenvolvedores registram um listener para mudanças nas leituras do magnetômetro e recebem uma matriz de valores de intensidade do campo magnético em três eixos em microteslas. Para determinar o azimute, os dados do magnetômetro são combinados com os dados do acelerômetro através de uma matriz de rotação usando fusão de sensores.
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())
// azimute: 0 = norte, 90 = leste, 180 = sul, 270 = oeste
}
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) {}
}
O azimute obtido através de getOrientation é medido em radianos e pode assumir valores de -π a π, onde 0 corresponde ao norte magnético. Para exibição na tela, os valores são convertidos em graus (Math.toDegrees) normalizados para o intervalo 0–360. É importante considerar a declinação magnética — o ângulo entre o norte magnético e o verdadeiro (geográfico), que depende da localização geográfica e muda com o tempo. O Google Maps ajusta automaticamente a declinação através da API GeomagneticField.
Perguntas frequentes
A bússola digital usa um magnetômetro MEMS — um chip de 2×2 mm que mede o campo magnético da Terra em três eixos. Os dados do magnetômetro são combinados com as leituras do acelerômetro para determinar o azimute — o ângulo entre a direção ao norte e a orientação do dispositivo.
Leituras incorretas da bússola são mais frequentemente causadas por falta de calibração, interferência magnética dos alto-falantes ou motor de vibração, bem como capas magnéticas. A solução é realizar um movimento de calibração em forma de “8” ou remover acessórios magnéticos. Para erros persistentes, pode ser necessária verificação do sensor.
Sim, a calibração da bússola é necessária para compensar os campos magnéticos parasitas dentro do smartphone. Na maioria dos dispositivos modernos, a calibração é realizada automaticamente em segundo plano. Para calibração manual, desenhe um “8” com o smartphone no ar — o sistema coletará dados de todos os ângulos e corrigirá as leituras.
No Android, o acesso à bússola é fornecido através da Sensor API com o sensor TYPE_MAGNETIC_FIELD. O azimute é calculado através de SensorManager.getRotationMatrix() e getOrientation(), que combinam dados do magnetômetro e acelerômetro. O azimute resultante pode ser adaptado para exibição na tela.
As bússolas mais precisas estão instaladas em smartphones com sensor IMU triplo (magnetômetro + giroscópio + acelerômetro) e sistema de calibração ativo. Os líderes são os modelos topo de linha Google Pixel, Samsung Galaxy S-series e iPhone Pro — eles usam magnetômetros AKM e Bosch com sensibilidade de 0,3 µT e correção automática.
Resumo
Vamos desenvolver um aplicativo móvel chave na mão
A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.
Leia também