ÍNDICE DE CONTEÚDO
- Raspberry Pi Pico: Timer Periódico com MicroPython
- Introdução ao MicroPython no Raspberry Pi Pico
- MicroPython: Revisão da Linguagem Python — Parte 1
- MicroPython: Programando com a IDE Thonny
- MicroPython: Revisão da Linguagem Python – Parte 2
- GPIO | Entendendo as Saídas Digitais da Raspberry Pi Pico
- GPIO | Entendendo as Entradas Digitais da Raspberry Pi Pico
- Raspberry Pi Pico: Timer One Shot com MicroPython
- Projeto | Controlador de Semáforo com Micropython
- Projeto | Medidor de temperatura com MicroPython
- Projeto | Registro de dados de temperatura
- Projeto | Acendimento automático de LED com Sensor LDR
- Projeto | Monitorando temperatura e umidade com o sensor DHT11
- Projeto | Monitoramento da Pressão Atmosférica Com Sensor BMP180
- Projeto | Monitoramento da Qualidade do Ar com Sensor MQ135
- Projeto | Monitoramento com Sensor de Detecção de Chuva
- Projeto | Estação Meteorológica
Introdução
Coletar e interpretar dados ambientais com precisão desempenha um papel fundamental em uma variedade de aplicações. Entre esses dados, a pressão atmosférica e a altitude têm um papel de destaque, influenciando desde a previsão do tempo até a navegação de dispositivos autônomos.
Nesse contexto, desenvolveremos um projeto que utiliza o sensor BMP180 de pressão e altitude para conhecer como é feita a coleta desses dados na prática.
Medir Pressão Atmosférica
Sensor BMP180
O barômetro BMP180 é um sensor capaz de medir a pressão atmosférica e a temperatura do ambiente, além de permitir determinar a altitude e realizar previsões do tempo. O componente possui uma faixa de medições entre 30.000 e 110.000 Pa, conta com uma precisão absoluta de 2,5 hPa e uma medição de temperatura na faixa entre -45ºC e 85ºC, com precisão de ± 2ºC.
O princípio de funcionamento do BMP180 baseia-se na variação da pressão atmosférica à medida que a altitude muda. Ele utiliza um sensor de pressão piezo-resistivo para converter essa variação de pressão em um sinal elétrico, que pode ser então interpretado para determinar tanto a pressão atmosférica quanto a altitude.
O sensor é muito utilizado em projetos que envolver aperfeiçoamento da navegação GPS, cálculo de posição e detecção de inclinação, pequenas estações meteorológicas, entre
outras.
Montagem da placa
Para esse projeto vamos precisar de:
- 1 x Raspberry Pi Pico
- 1 x Protoboard
- 1 x Cabo micro USB
- 1 x Sensor de pressão atmosférica – barômetro BMP180
- Jumpers
Utilizando a protoboard, conecte o pino GND do Raspberry Pi Pico à linha de terra da protoboard usando um jumper a partir do pino 38 da placa Pico. Da mesma forma, alimente a proto conectando o pino VCC do Pico à linha de alimentação da protoboard através de um jumper a partir do pino 36.
Para realizar a montagem correta, confira o mapa de pinos da Pico na Figura 1.
O BMP180 possui 4 pinos: VCC, GND, SCL (Serial Clock) e SDA (Dados seriais), em que os dois últimos são utilizados na comunicação I2C. A identificação de cada um deles está impressa na parte inferior do sensor. Assim:
- Os pinos VCC e GND devem ser conectados ao 3,3 V e GND da protoboard, respectivamente;
- O pino SCL do sensor BMP180 deve ser conectado ao pino SCL da Raspberry Pi Pico, aqui optamos por utilizar o GP1;
- O SDA deve ser conectado ao pino SDA da Raspberry Pi Pico, aqui optamos por utilizar o GP0.
Na Figura 2 temos a montagem da protoboard.
Programa para captar dados
Utilizando o Thonny IDE, vamos iniciar importando as bibliotecas “machine” e “utime”, que nós já conhecemos, para poder acessar os pinos da placa e para adicionar atrasos ao programa. Da biblioteca “machine” utilizaremos apenas “Pin” e “I2C” então não há necessidade de importar a biblioteca completa.
Além delas, vamos importar a biblioteca “bmp180” que permite realizar a leitura do sensor BMP180:
1 2 3 |
from machine import I2C, Pin from bmp180 import BMP180 import utime |
É preciso dar um destaque especial à biblioteca bmp180, isso porque ela não é uma biblioteca do Micropython e para utilizá-la foi preciso pegar o código fonte no github:
micropython-bmp180/bmp180.py at master · micropython-IMU/micropython-bmp180 · GitHub
Com o código-fonte copiado, eu o salvei no Raspberry Pi Pico e criei um novo arquivo para ser o main desse projeto. Conforme mostrado abaixo:
Assim foi possível utilizar a biblioteca que permite lê os dados que o sensor captura.
As primeiras definições do código são para configurar o I2C e o sensor. Começando pela configuração do I2C ao chamar a função precisamos fazer as seguintes definições dos parâmetros:
- “id” irá identificar o periférico I2C, esse valor pode ser 0 ou 1 e depende da porta/placa específica. A porta utilizada é I2C0, mas se – por exemplo – a conexão fosse feita no GP2 e GP3 o id seria 1;
- “scl” deve conter o pino conectado ao SCL do sensor. Nesse caso é o GP1;
- “sda” deve conter o pino conectado ao SDA do sensor. Nesse caso é o GP0;
- e “freq” deve ser um número inteiro que define a frequência máxima do SCL.
Após isso realizamos a conexão do I2C com a biblioteca do sensor. E definimos a precisão do dado lido pelo sensor (oversample_sett) e a referência da pressão no nível do mar (baseline).:
1 2 3 4 |
i2c =I2C(id=0, scl=Pin(1), sda=Pin(0), freq=100000) bmp180 = BMP180(i2c) bmp180.oversample_sett = 2 bmp180.baseline = 101325 |
Com as configurações definidas, podemos criar o ciclo principal do projeto:
1. Chame as funções do sensor para obter temperatura, pressão e altitude;
2. Imprima os valores coletados;
3. Insira um atraso de 5 segundos (ou mais) antes de realizar uma nova coleta de dados.
Abaixo temos o código completo para realizar o teste:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
from machine import I2C, Pin from bmp180 import BMP180 import utime i2c =I2C(id=0, scl=Pin(1), sda=Pin(0), freq=100000) bmp180 = BMP180(i2c) bmp180.oversample_sett = 2 bmp180.baseline = 101325 while True: temp = bmp180.temperature p = bmp180.pressure altitude = bmp180.altitude print("Temperatura:", temp, "ºC") print ("Pressao:", p,"Pa" ) print ("Altitude:", altitude, "m") utime.sleep(5) |
O resultado exibido, de acordo com sua localização, será algo semelhante a isto:
Conclusão
O sensor BMP180 e o protocolo I2C representam uma combinação poderosa no mundo da eletrônica e da medição de dados ambientais. O BMP180 desempenha um papel fundamental em diversas aplicações, desde a meteorologia até a navegação por satélite e sistemas autônomos.
Em adição, o protocolo I2C oferece uma solução simples para conectar dispositivos eletrônicos, com apenas duas linhas de comunicação, SDA e SCL, o I2C simplifica a interconexão de dispositivos, economizando recursos e agilizando a implementação de sistemas complexos.