Um barómetro num smartphone é um sensor MEMS que mede a pressão atmosférica para determinação de altitude e previsão meteorológica. Os barómetros modernos registam pressão no intervalo de 300 a 1100 hPa com uma precisão de 1 hPa, o que corresponde a um erro de altitude inferior a 1 metro. Segundo Bosch Sensortec BMP580, 2024, a precisão absoluta dos sensores de pressão modernos é de ±0.5 hPa, permitindo determinar a altitude com uma precisão de 0.4 metros.
Pontos principais
Um barómetro num telemóvel é um sensor de pressão absoluta em miniatura baseado em tecnologia MEMS (Micro-Electro-Mechanical Systems). Mede a pressão atmosférica em hectopascais (hPa), equivalente a milibares. O primeiro smartphone de massa com barómetro — Samsung Galaxy Note 2 (2012) — iniciou a tendência de integrar o sensor em dispositivos topo de gama.
Os líderes de mercado são Bosch Sensortec (série BMP) e STMicroelectronics (série LPS). Um sensor BMP580 típico mede 2.0×2.0×0.7 mm, consome 1.3 µA em modo de baixo consumo e tem um intervalo de 300–1250 hPa. A precisão relativa é de ±0.08 hPa, permitindo detetar alterações de altitude de 0.7 metros. Segundo a folha de dados BMP580 (2024), o nível de ruído não excede 0.2 Pa.
| Parâmetro | Valor |
|---|---|
| Intervalo | 300–1250 hPa |
| Precisão absoluta | ±0.5 hPa |
| Precisão relativa | ±0.08 hPa |
| Consumo | 1.3 µA (baixo consumo) |
| Tamanho | 2.0×2.0×0.7 mm |
| Interface | I²C / SPI |
A função principal é refinar a altitude na navegação. Nos EUA, a Comissão Federal de Comunicações (FCC) recomenda desde 2015 que os smartphones sejam equipados com barómetros para melhorar a precisão da localização durante chamadas de emergência 911 — a precisão vertical salva vidas em edifícios de vários andares.
No coração de um barómetro MEMS está um diafragma de silício com 1–3 mícrons de espessura que se flexiona sob pressão atmosférica. O diafragma está integrado com uma cavidade de vácuo — uma pressão de referência. Para medir a deflexão, são utilizados métodos capacitivos ou piezorresistivos.
Nos sensores capacitivos (Bosch BMP), o diafragma atua como elétrodo móvel do condensador. Quando a pressão muda, o espaçamento entre o diafragma e o elétrodo fixo varia 0.1–1 nm, causando uma alteração de capacitância de 5–50 fF. Um circuito de conversão C/V (capacitância-tensão) amplifica o sinal para um nível suficiente para um ADC de 24 bits.
Os barómetros MEMS contêm um sensor de temperatura integrado, pois a pressão do gás depende diretamente da temperatura segundo a lei P = ρRT. Sem compensação, uma alteração de temperatura de 1 °C causa um erro de 0.1 hPa — equivalente a 0.8 metros de altitude. Os sensores modernos utilizam coeficientes de calibração armazenados em memória OTP (One-Time Programmable) para correção digital no intervalo de -40 a +85 °C.
O GPS determina a altitude com base em trilateração de sinais de satélite — o erro vertical é de 10 a 30 metros devido à geometria dos satélites e atrasos ionosféricos. O barómetro fornece altitude com uma precisão de 0.5 a 1 metro usando a fórmula barométrica. Em cenários com visibilidade limitada do céu (cânions urbanos, interiores), o GPS pode não estar disponível — o barómetro funciona sempre.
A altitude é calculada usando a fórmula: h = (T₀ / L) × (1 − (P / P₀)^(R×L / g)), onde T₀ é a temperatura ao nível do mar, L é o gradiente de temperatura, P é a pressão medida, P₀ é a pressão ao nível do mar. Simplificadamente: uma alteração de pressão de 1 hPa corresponde a aproximadamente 8.4 metros em altitudes baixas. O cálculo preciso requer dados de estações meteorológicas para P₀.
Os sistemas de navegação modernos (Google Maps, Yandex Maps) usam um algoritmo híbrido: o GPS fornece altitude absoluta com um erro de 15 metros, o barómetro fornece alteração relativa com uma precisão de 0.5 metros. Um filtro de Kalman combina ambos os sinais, fornecendo altitude com uma precisão de 1 a 3 metros em tempo real.
data class BaroReading(
val pressure: Float,
val altitude: Float
)
private val P0_SEA_LEVEL = 1013.25f
fun calculateAltitude(pressure: Float): Float {
return SensorManager.getAltitude(
P0_SEA_LEVEL, pressure
)
}
fun calibratePressure(
gpsAltitude: Float, baroPressure: Float
): Float {
// Calibração de P0 por altitude GPS
val expectedPressure = P0_SEA_LEVEL *
Math.pow(1f - (0.0065f * gpsAltitude) / 288.15f, 5.255f)
.toFloat()
return P0_SEA_LEVEL * baroPressure / expectedPressure
}
O Android fornece acesso ao barómetro através de Sensor.TYPE_PRESSURE. Os dados são devolvidos em hectopascais (hPa), equivalente a milibares. Um valor típico ao nível do mar é cerca de 1013.25 hPa. O sensor pertence à categoria de Sensores Ambientais — não requer calibração do utilizador e funciona imediatamente após a inicialização.
O barómetro não requer uma alta taxa de amostragem — SENSOR_DELAY_UI (67 ms) ou SENSOR_DELAY_NORMAL (200 ms) são perfeitamente suficientes. A pressão atmosférica muda lentamente, no máximo 0.5–1 hPa por hora com alterações meteorológicas ou 1–2 hPa por minuto ao mover-se num elevador. A frequência excessiva apenas esgota a bateria.
class BarometerActivity : AppCompatActivity() {
private val sensorManager by lazy {
getSystemService(SENSOR_SERVICE) as SensorManager
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val barometer = sensorManager
.getDefaultSensor(Sensor.TYPE_PRESSURE)
barometer?.let { sensor ->
sensorManager.registerListener(
this, sensor,
SensorManager.SENSOR_DELAY_NORMAL
)
}
}
override fun onSensorChanged(event: SensorEvent) {
val pressure = event.values[0]
val altitude = SensorManager
.getAltitude(1013.25f, pressure)
updateUI(pressure, altitude)
}
}
Nem todos os dispositivos Android têm barómetro — o sensor está ausente em modelos económicos e muitos dispositivos de gama média. Antes de usar, verifique a disponibilidade através de PackageManager.hasSystemFeature(PackageManager.FEATURE_SENSOR_BAROMETER) ou através de sensorManager.getDefaultSensor(Sensor.TYPE_PRESSURE) — retornar null significa que o sensor está ausente.
O barómetro é utilizado numa vasta gama de aplicações — desde a meteorologia até rastreadores desportivos e navegação em interiores. A aplicação WeatherPro utiliza dados do barómetro para construir um gráfico de pressão de 24 horas, permitindo prever alterações meteorológicas com 6 a 12 horas de antecedência com uma precisão de até 80%.
Durante alterações climáticas, a pressão atmosférica muda entre 1 e 3 hPa em 6 a 12 horas. Um anticiclone (área de alta pressão) dá leituras de 1020 a 1040 hPa, um ciclone (baixa pressão) — 970 a 1010 hPa. Estas alterações devem ser consideradas ao calcular a altitude: se ontem a pressão ao nível do mar era 1013 hPa e hoje é 1025 hPa, o erro de determinação de altitude sem correção de P₀ será de aproximadamente menos 100 metros. As aplicações de navegação modernas obtêm a pressão de referência P₀ através da internet a partir da estação meteorológica mais próxima.
Em centros comerciais e aeroportos, o barómetro é utilizado para determinar em que piso o utilizador se encontra. A diferença de pressão entre pisos de um edifício típico (altura do piso 3 a 4 metros) é de 0.35 a 0.5 hPa — suficiente para uma deteção fiável. Combinando o barómetro com trilateração Wi-Fi, a navegação em interiores determina a localização com uma precisão de até 5 metros.
Uma nova geração de barómetros à prova de água (Infineon DPS368, 2024) suporta imersão até 10 metros e tem uma precisão de ±0.05 hPa. O desenvolvimento da tecnologia MEMS está a aproximar os barómetros da precisão dos padrões de quartzo — espera-se que até 2027 o erro típico diminua para ±0.2 hPa.
Perguntas frequentes
Pode verificar usando aplicações Sensor Test da Google Play. Há barómetro em todos os smartphones topo de gama Samsung Galaxy S e Note (desde S3), Google Pixel (todos os modelos), iPhone 6 e posteriores. Nos modelos económicos, o sensor geralmente está ausente.
Usando a fórmula barométrica: a pressão atmosférica diminui com a altitude. Ao nível do mar, a pressão é de 1013.25 hPa, a 500 metros de altitude — cerca de 955 hPa. Cada 8.4 metros de subida reduzem a pressão em aproximadamente 1 hPa. Para precisão, é necessária calibração pela estação meteorológica mais próxima.
Sim, em aplicações de estação meteorológica. Uma queda acentuada de pressão de 3 a 5 hPa em 3 horas indica a aproximação de um ciclone e deterioração do tempo. O aumento da pressão é sinal de melhoria. No entanto, para uma previsão precisa são necessários dados dos serviços meteorológicos.
Não — a calibração ocorre automaticamente. Os fabricantes programam os coeficientes de calibração na fábrica. No entanto, se viver a uma altitude de mais de 1000 metros acima do nível do mar, vale a pena definir a pressão de referência na aplicação de navegação para maior precisão.
SENSOR_DELAY_NORMAL (200 ms) é o ideal — a pressão atmosférica muda lentamente. Para monitorizar o movimento num elevador, 200 ms é suficiente. A frequência excessiva (FASTEST) não oferece vantagem mas aumenta o consumo de energia em 20 a 30%.
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