Rileviamo temperature, umidità e pressione in MicroPython con il sensore digitale BME280

Il BME280, dotato dell’omonimo chip Bosch, misura circa 13 mm x 10 mm e pesa circa 1g, inoltre è dotato di solo 4 pin, 2 dei quali per sfruttare l’interfaccia I2C. Il sensore sfrutta una tensione di lavoro di 3,3V, ma possiamo alimentarlo senza problemi con i 5V, consumando fino a 3,6 μA. Come detto sopra, il sensore BME280 è discretamente affidabile; abbiamo un’accuratezza dello 0,25% per la pressione con un range compreso tra i 300hPa e i 1100hPa, mentre la temperatura registrabile va da un minimo di -40°C a un massimo di 85°C. L’umidità relativa possiede invece una tolleranza del 3%.

Collegamenti

Il sensore BME280 è collegabile al nostro Arduino tramite interfaccia I2C, ma in alcune varianti è possibile collegarlo anche tramite SPI. Ad ogni modo, la versione in nostro possesso sfrutterà solo la prima interfaccia, adoperando solo 2 pin per la comunicazione e altri 2 per l’alimentazione. Il pin VIN va collegato ai 3,3V, il pin GND al GROUND, il pin SDA al pin 15, mentre il pin SCL al pin 22.

BME280



Codice

Il BME280 necessita di un’apposita libreria per essere programmato in MicroPython, quindi sarà necessario caricarla tramite Thonny sulla nostra Lolin32 LTE. La libreria in questione è la BME280.py scaricabile a questo LINK. Per salvarla sulla scheda, apriamo la libreria con Thonny, poi andiamo sulla barra dei menu->File->Salva con nome->Dispositivo MicroPython, poi salviamolo.

Iniziamo, come sempre, inserendo le librerie machine e time, la prima per la gestione del PIN, mentre la seconda per la gestione dei timer bloccanti, rammentandovi che sono espressi in secondi. Inseriamo poi la libreria I2C per configurare l’omonima interfaccia e la libreria BME280 per la gestione del sensore. Potete scaricare il codice da questo LINK.


from machine import Pin, I2C
from time import sleep
import BME280

Creiamo l’oggetto i2c per la gestione dell’omonima interfaccia, indicando il pin SDA, SCL e la frequenza di comunicazione.


i2c = I2C(scl=Pin(22), sda=Pin(15), freq=10000)



Apriamo, successivamente, il ciclo while True, creiamo l’oggetto bme per utilizzare il sensore BME280 con l’interfaccia I2C.


bme = BME280.BME280(i2c=i2c)

Dichiariamo 3 variabili dove rilevare rispettivamente temperatura (t), umidità (h) e pressione (p).


t = bme.temperature
h = bme.humidity
p = bme.pressure

Concludiamo stampando i valori rilevati ogni secondo sulla shell di Thonny.


print('Temperatura: ', t)
print('Umidità: ', h)
print('Pressione: ', p)

sleep(1)

BME280