Sensore Adafruit BMP280

In genere quando si ha bisogno di un sensore barometrico, capace cioè di misurare la pressione atmosferica, si ricorre al classico BMP180, reperibile presso alcuni fornitori cinesi intorno ai 3 euro. Ci sono però in commercio versioni più precise e flessibili, come ad esempio il BMP280 messo in commercio da Adafruit, a circa 10 dollari. Se poi vogliamo anche che il modulo misuri l’umidità relativa sia Adafruit che Sparkfun hanno in catalogo il BME280, in entrambi i casi quotato sui 20 dollari. Quello Adafruit può essere alimentato sia a 5 che a 3.3V mentre lo Sparkfun solo a 3.3V. Personalmente non spenderei 20$ per avere anche la misura di umidità, ma a questo punto userei un BMP280 affiancato da un DHT22 (3-4€) risparmiando un pò ed ottenendo anche un’altra lettura di temperatura per controllo.

Comunque: cos’ha in più il BMP280 rispetto al suo predecessore BMP180? Innanzitutto è più preciso, specialmente nella lettura barometrica. Nel datasheet Bosch del BMP280, reperibile QUI, c’è anche una breve comparativa dei valori tra i due sensori, e poi nel caso del BMP280 possiamo usare sia l’interfaccia I2C che SPI.

bmp280-1

Come si nota in figura la scheda Adafruit espone ben 6 pin così indirizzati:

Volendo quindi utilizzare il BMP con il bus I2C è sufficiente collegare i pin SCK e SDI oltre all’alimentazione, mentre in SPI servono 4 connessioni più l’alimentazione. Quindi direi proprio nessun problema di convivenza anche con molti sensori di vario tipo sullo stesso controller.

E mettiamoci poi alla fine anche la qualità costruttiva e l’affidabilità dei prodotti assemblati da Adafruit.

Passiamo alla libreria di gestione: ovviamente Adafruit mette a disposizione sul suo sito una LIBRERIA per questo sensore che va utilizzata oltre a quella generica comune a tutti i sensori Adafruit.

Sugli articoli di qualche mese fa riguardanti il BMP180 avevo fatto uso della libreria Sparkfun, perché ritengo abbastanza inutile avere una funzione per l’altimetro se non si ha la possibilità di prendere una misura di pressione a 0 mt. sul livello del mare. L’altezza precisa del punto di misura (sempre fissa se costruiamo una Stazione Meteo) la possiamo ricavare meglio dal GPS di un cellulare ed usarla poi per ricavare la pressione S.L.D.M. che è direttamente confrontabile con i dati meteo pubblicati dalle fonti ufficiali. Quindi stavolta va bene la libreria di Adafruit e quest’ultima quantità ce la calcoliamo da soli.

bmp280-2

Ecco un breve sketch di esempio per Arduino utilizzabile, con le opportune modifiche di collegamenti ai pin,  anche su schede ESP8266:

Nella funzione utente leggi_BMP280() ho quindi ignorato la readAltitude() messa a disposizione dalla libreria a favore del calcolo della pressione SLDM. E’ possibile usare l’altimetro ma ricordiamoci che il parametro di input 1013.25 mBar è un valore assolutamente teorico e non garantisce precisione nel calcolo dell’altitudine. Sarebbe necessaria contemporaneamente e nello stesso luogo un’altra lettura di pressione sul livello del mare con cui “entrare” nella funzione readAltitude().

Un’ultima cosa: mi raccomando di non dimenticare la bmp.begin() dentro la funzione setup. Il sensore è calibrato in fabbrica e questa funzione ne chiama un’altra interna alla libreria, readCoefficients(), che acquisisce i dati di calibrazione inseriti dal produttore e memorizzati in alcuni registri interni del chip Bosch.

 

 

3 pensieri riguardo “Sensore Adafruit BMP280”

  1. Ho realizzato un sistema con ESP8266 che si interfaccia con il BME280 (LANMU CJMCU-280) i cui risultati sono visibili al sito http://www.fivezetatech.it/ELITE_IoT/page.php?pageid=1.
    Purtroppo ho notato che quando l’umidità sale intorno al 75% il sensore restituisce dei valori fuori norma. Questo è dovuto forse alla formazione di condensa nel sensore stesso. Per evitare la condensa ho provato ad installare una piccola ventola sul sensore, ma il problema purtroppo si è ripresentato.

    Hai qualche indicazione da fornirmi?
    Grazie
    Giuseppe

  2. Ciao Giuseppe,
    andando qua e là per i forum ho trovato proprio qualche lamentela riguardo le letture di umidità di questo sensore, che se confrontato con altri (DHT22 per esempio) tende a “partire per la tangente” sull’estremo superiore e comunque a sottostimare la lettura un pò su tutta la scala. Io ho preferito affiancare ad un BMP280 (che non ha la lettura igrometrica) proprio un DHT22, che conosco molto bene in quanto lo uso a regime da quasi 2 anni e ho notato che mantiene una buona linearità anche quando, in presenza di forti temporali, rimane a fondo scala per parecchie ore esposto all’esterno. In un solo caso ho avuto un DHT22, che dopo qualche mese di funzionamento, è rimasto bloccato alla lettura del 100% e non si è più ripreso. Ti consiglio perciò di affiancare al BME un DHT22, leggere l’umidità da questo ed usare la sua lettura di temperatura come controllo per quella che già avrai dal BME.

Lascia un commento