Programmiamo il sensore BME280 per misurare temperatura, umidità e pressione in una sola volta
Nell’articolo di oggi spiegheremo come utilizzare il sensore digitale BME280, in grado di leggere umidità relativa, temperatura e pressione. Questo sensore è tra i più piccoli e completi in commercio ed il prezzo è davvero molto conveniente. Il sensore è molto preciso e in grado di fornire dati molto affidabili.
Specifiche
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 è molto affidabile e conta su un range invidiabile; 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%.
Potete acquistare il sensore BME280 su Amazon: https://amzn.to/3kUlQ6o
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 5V o ai 3,3V, il pin GND al GROUND, il pin SDA al pin SDA di Arduino, mentre il pin SCL al pin SCL di Arduino. Possiamo inoltre usare i pin A4 e A5 per collegare il sensore ai rispettivi pin SDA e SCL.
Codice
Il sensore BME280 necessita di una specifica libreria che possiamo scaricare QUI. All’interno troverete alcuni sketch di prova, tuttavia abbiamo deciso di scriverne uno noi, più semplice e scaricabile QUI, per iniziare ad approcciare questo sensore. Partiamo come sempre dalla libreria specifica per il BME280 che è la BME280I2C.h e poi aggiungiamo la libreria Wire.h per l’interfaccia I2C. Creiamo poi l’oggetto bme per configurare il sensore.
#include <BME280I2C.h> #include <Wire.h> BME280I2C bme;
Nel VOID SETUP avviamo il monitor seriale, l’interfaccia I2C e il sensore BME280.
Serial.begin(9600); Wire.begin(); bme.begin();
Infine, nel VOID LOOP definiamo 3 variabili a virgola mobile temp, hum, pres per temperatura, umidità e pressione, poi comunichiamo al sensore che deve leggere per poi stamparle su monitor seriale.
float temp, hum, pres; bme.read(pres, temp, hum); Serial.print("Temperatura: "); Serial.print(temp); Serial.println ("°C"); Serial.print("Umidità: "); Serial.print (hum); Serial.println(" %"); Serial.print("Pressione: "); Serial.print (pres); Serial.println (" Pa"); Serial.println (" "); delay (3000);
Se tutto è stato impostato correttamente e non abbiamo dimenticato nulla, caricato lo sketch apriamo il monitor seriale e vedremo scorrere ad intervalli di 3 secondi i rilevamenti di temperatura, umidità e pressione.