Conhecimento
Existem aplicações onde se faz necessário medir a pressão atmosférica local, como porexemplo em drones e estações meteorológicas. Além disso, caso você saiba a pressão
atmosférica atual, a nível do mar é possível calcular a altitude local com certa precisão.
Por isso hoje trago um artigo sobre a utilização do sensor de pressão atmosférica BMP180 da
Bosch. Faremos interface do mesmo com um microcontrolador ESP32 programado via software
(IDE) do Arduino.
Este pequeno sensor se comunica com qualquer microcontrolador via porta i2c, utilizando
apenas dois fios (SDA e SCL), além de alimentação 3,3V e GND. Ele é capaz de medir
pressões atmosféricas entre 300 e 1100 hPa (hectopascal), o que significa altitudes entre
-500m e +9000m em relação ao nível do mar.
Seu datasheet está neste link [https://cdn-shop.adafruit.com/datasheets/BST-BMP180-DS000-09.pdf]. Ele é alimentado com tensões entre 1,8V e 3,6V, portanto não suporta 5V. A tecnologia de detecção utilizada é piezo-resistiva, garantindo precisão e repetibilidade.
Conexão elétrica/diagrama esquemático
Conforme comentado acima, são necessários apenas quatro fios para comunicar o BMP180com o ESP32: SDA, SCL, 3V3 e GND. A placa que estou utilizando é baseada no ESP32-C6 e
foi feita por mim mesmo [https://fritzenlab.com.br/fritzenlab-esp32-c6-dev-board/], mas você
pode utilizar qualquer ESP32, ESP8266, Arduino ou Raspberry Pi Pico que tiver disponível.
A montagem em protoboard ficou conforme imagem abaixo, um tanto cheia de fios porém ainda simples.
O código
A beleza do ecossistema Arduíno é que qualquer pessoa ou empresa pode contribuir comcódigo, assim como qualquer um pode utilizar o que estiver disponível. No nosso caso
utilizaremos uma biblioteca para BMP085/BMP180 desenvolvida pela empresa Adafruit.
Para instalá-la, no software IDE do Arduino vá em “Rascunho > Adicionar biblioteca >
Gerenciar bibliotecas” e digite “BMP085”; instale a biblioteca “Adafruit BMP085 library” da
Adafruit.
Junto à biblioteca vem um exemplo de código, acessível na IDE do Arduino via “Arquivo >
Exemplos > Adafruit BMP085 Library > BMP085Test”. O código completo é visto abaixo.
Observe que a interface com o sensor é feita através de funções, como
bmp.readTemperature(), bmp.readAltitude() e bmp.readSealevelPressure(). Isso facilita
bastante nossa vida, basta chamar a função correta que o valor nos é apresentado.
Apresentamos então os valores no monitor serial do software IDE do Arduino, através de uma
comunicação serial/USB chamada por Serial.println().
O resultado
Conectando-se o ESP32 via cabo USB ao computador e selecionando a porta correta na IDEdo Arduino (Ferramentas > Porta COM), abra o monitor serial (Ferramentas > Monitor Serial ou
Ctrl + Shift + m).
O resultado é visto como na imagem abaixo, mostrando (em Inglês) temperatura, pressão
atmosférica lida, altitude calculada, pressão atmosférica ao nível do mar (calculada) e altitude
real.
Observe que a altitude está mostrando -55.63 metros, o que não representa a realidade do
meu local (Moro em uma cidade a 60 metros acima do nível do mar). Isso tudo porque o código
nos pede para inserir a pressão atmosférica ao nível do mar atual, do momento. Porém esse
valor pode variar e é difícil encontrar valores reais na internet.
Já a medição de temperatura é bem precisa (24,90ºC), tenho outros sensores aqui comigo e o
valor está bem próximo. Observe também que o código faz uma medição completa a cada
500ms (meio segundo), porém este valor pode ser alterado para mais ou para menos,
conforme sua necessidade.
Vídeo do teste do sensor: https://youtu.be/G4F0teGQtgQ
Resultados e discussões
Sensores de pressão atmosférica são muito úteis em sistemas físicos como drones e estaçõesmeteorológicas. São responsáveis por por exemplo calcular altitude baseados na pressão
atmosférica atual a nível do mar.
O sensor BMP180 da Bosch é bem preciso, rápido de ler e fácil de interfacear, ainda mais com
a biblioteca para Arduino feita pela Adafruit. Considere inseri-lo em seus projetos futuros, é
uma mão na roda.
0