Depois de todas as dificuldades com as placas suspeitas, vamos ver dois exemplos simples de uso do BMP280 com a Raspberry Pi Pico. Em ambos vou usar o MicroPython e a Pi Pico ligada ao BMP280 e a um display OLED I2C. A diferença entre os exemplos está na biblioteca usada para ler o BMP280.
A montagem é simples, tanto o display como o sensor são ligados a +3,3V, GND, SDA e SCK:
Para rodar os exemplos, você precisa instalar o interpretador e copiar para a placa as bibliotecas que serão usadas. Uma explicação da parte de controle do display pode ser vista no meu post no Maker Hero: https://www.filipeflop.com/blog/display-oled-i2c-raspberry-pi-pico/.
A primeira biblioteca que vou usar com o MicroPython é de David Stenwall e pode ser baixada de https://github.com/dafvid/micropython-bmp280. É uma biblioteca bastante completa no que diz respeito à configuração do sensor, inclusive implementando os "casos de uso" descritos no datasheet.
O programa de teste foi este aqui:
from machine import Pin,I2C from bmp280 import * from time import sleep import framebuf import ssd1306 # Configura I2C i2c = I2C(0, scl=Pin(17), sda=Pin(16)) # Inicia o display display = ssd1306.SSD1306_I2C(128, 64, i2c) display.fill(0) display.show() # Inicia sensor bmp = BMP280(i2c) bmp.use_case(BMP280_CASE_INDOOR) # Fica em loop mostrando temperatura e pressão while True: display.fill(0) display.text( " Temp: "+str(bmp.temperature), 0, 0) display.text( "Pressao: "+str(bmp.pressure), 0, 20) display.show() sleep(1)
A segunda biblioteca para uso com o MicroPython é da "MicroPython Chinese Community" e está em https://github.com/micropython-Chinese-Community/mpy-lib/tree/master/sensor/bmp280. É uma biblioteca mais simples, mas que inclui o cálculo da altitude a partir da pressão.
O programa com esta biblioteca ficou assim:
from machine import Pin,I2C from bmp280c import * from time import sleep import framebuf import ssd1306 # Configura I2C i2c = I2C(0, scl=Pin(17), sda=Pin(16)) # Inicia o display display = ssd1306.SSD1306_I2C(128, 64, i2c) display.fill(0) display.show() # Inicia sensor bmp = BMP280(i2c) # Fica em loop mostrando temperatura e pressão while True: display.fill(0) temperature, pressure = bmp.get() display.text( " Temp: "+str(temperature), 0, 0) display.text( "Pressao: "+str(pressure), 0, 20) display.show() sleep(1)
Notar que neste caso estamos usando as configurações padrão da biblioteca. Não temos métodos específicos para mudar isso, teríamos que usar o método setReg() para acessar diretamente os registradores.
Nenhum comentário:
Postar um comentário