Sobre o BMP180

O sensor barométrico BMP180 [1] foi desenvolvido pela Bosh para substituir outro sensor criado por eles mesmos, o sensor BPM085.
Este sensor coleta 3 tipos de grandezas, temperatura, pressão e altitude, sendo que a altitude é baseada nos valores obtidos no sensor de pressão. A faixa do sensor de pressão está entre 300-1100 hPa, o que resulta na faixa de altitude de -500 metros a 9 mil metros do nível do mar. A faixa do sensor de temperatura está entre -40 a 85 ° C, com uma precisão de +/- 2°C. Sua alimentação pode ser de 3.3 V ou 5 V seu protocolo de comunicação é o I2C de 7-bit.

 

A Montagem

Como podemos ver pelo esquema da figura 1, utilizaremos os pinos de alimentação da Pi Pico para alimentar o sensor, e vamos utilizar os pinos 16 e 17 para a comunicação I2C [3]. Vale a pena notar que existem diversos tipos de fabricantes e nem sempre os pinos são iguais entre si, então antes de conectar os pinos, verifique os pinos.


Figura 1 - Esquema elétrico

 

O Código

Aqui utilizaremos o Micropython e a IDE do Thonny.
Como de costume, para qualquer shield ou componente que utilizamos extra nas montagens com a Raspberry Pi Pico, precisamos da biblioteca deste fornecido pelo fabricante ou de alguém que precisou montar uma biblioteca para um componente que o fabricante não se preocupou com isso. 
A biblioteca do BMP180 que utilizaremos é o BMP180.py [2].
O código principal está descrito abaixo o qual deixei as linhas comentadas.

 

from bmp180 import BMP180     # importa a classe BMP180 da biblioteca bmp180
from machine import I2C, Pin     # importa as classes I2C e PIN da biblioteca machine
from time import sleep        # importa a classe sleep da biblioteca time

i2c = I2C(0, sda=Pin(16), scl=Pin(17))    #Cria a variável i2c com os parâmetros de conexão
bmp180 = BMP180(i2c)        # cria a variável bmp180, conectando o sensor com os parâmetros da classe I2C
bmp180.oversample_sett = 3 # precisão da leitura
                                  # 0- Bem Baixa 1-Baixa
                                   # 2-Intermediaria 3-Alta .
bmp180.baseline = 101325      # pressão nível do Mar em Pa

print ('ID = {}'.format(hex(bmp180.chip_id[0]))) # exibe o ID do BMP180

while True:
    temperatura = bmp180.temperature    # captura o valor da temperatura
    pressao = bmp180.pressure        # captura o valor da pressão
    altitude = bmp180.altitude            # captura o valor da altitude
    print('Temperatura {:.1f}C  Pressao {:.0f}Pa  Altitude {:.2f}m'.format(
        temperatura, pressao, altitude))        # exibe no shell os valor
    sleep(2)        # espera 2 segundos

 

Nota

No código bmp180.py é preciso informar o ID do I2C do componente, como podemos ter diversos fabricantes, nem sempre é o padrão fornecido pelo datasheet, logo é possível fazer uma varredura pelos dispositivos conectados em busca do endereço correto.

 

from machine import I2C

sda = machine.Pin(16) #define pino SDA
scl = machine.Pin(17) #define pino SCL

i2c = machine.I2C(0,sda=sda,scl=scl, freq=400000)
#define I2C, pinos e frequência do colck (SCL)

print('I2C address:')
print(i2c.scan(),' (decimal)') 
#função de escanear endereços.

 

Conclusão

Neste exemplo usamos apenas um sensor para puxar as medidas de pressão, altitude e temperatura, onde pode ser utilizados em diversos tipos de aplicações. Se você estiver usando uma Pi Pico 2W, que tem conexão bluetooth e WiFi, você poderá enviar estes dados para as nuvens.


Referências

[1] - Datasheet do BMP180 - https://cdn-shop.adafruit.com/datasheets/BST-BMP180-DS000-09.pdf 
[2] - bmp180.py - https://github.com/micropython-IMU/micropython-bmp180  
[3] - Usando Sensores com a Raspberry Pi Pico https://clubedeautores.com.br/livro/usando-sensores-com-a-raspberry-pi-pico  
[4] - A saga da Pi Pico - https://www.youtube.com/watch?v=BlkrwoXfiJs&list=PLUg1G7GdWdJxOumCzW3H2cqWJY3a1-kVM

NO YOUTUBE


NOSSO PODCAST