El BME280 és un sensor digital que llegeix la pressió, la temperatura i la humitat de l'aire.
Amb les seves mesures també podem estimar l'altitud (la pressió canvia amb l'altitud).
Els pins s'han de soldar.
Presteu atenció i seguiu aquests passos per fer-ho.
Si volem un sensor una mica més complert (i més car) podem utilitzar el BME680, que mesura també qualitat de l'aire interior
Segons aquesta comparativa el BME280 dona valors lleugerament més alts que altres sensors de temperatura. Aquest comportament és normal i es descriu al full de dades: el mòdul s'autoescalfa lleugerament i els mesuraments de temperatura poden ser 1 o 2 graus superiors al valor de temperatura real.
Tot i això sembla que és el sensor que proporciona lectures de temperatura més estables sense grans fluctuacions entre mesuraments. Això està relacionat amb la resolució del sensor (pot detectar canvis de fins a 0,01ºC).
PAUTES DE CONNEXIÓ
El BM·280 es comunica amb el microcontrolador mitjançant el protocol de comunicació I2C.
I2C (Inter Integrated Circuit) utilitza un bus de comunicació que transmet la informació de diversos dispositius a través de només dues línies: una per les dades (SDA) i l’altre pel senyal del rellotge (SDL).
En el bus cada dispositiu té una adreça, que permet accedir a ell de manera individual (el bus I2C admet fins a 128 dispositius)
Els pins I2C de l'ESP32:
GPIO 22 (SCL, rellotge)
GPIO 21 (SDA, dades)
PAUTES DE PROGRAMACIÓ
La llibreria bme280
Per treballar amb el BME280 cal una llibreria que no forma part de la biblioteca estàndard de MicroPython.
Utilitzarem el programa bme280_float.py d'aquest repositori GitHub, que desarem dins la carpeta lib del nostre dispositiu, amb el nom bme280.py
La llibreria descarregada considera l'adreça I2C per defecte del sensor: 0x76. Si calgués canviar-la, fem-ho en definir l'objecte bme al programa.
Podem saber/comprovar l'adreça I2C del nostre sensor executant el programa I2C scan que podeu descarregar des d'aqui.
Recuperació dels valors
Per recuperar els valors mesurats pel sensor utilitzarem el mètode read_compensated_data () definit a la llibreria bme280 que hem desat a la carpeta lib del nostre dispositiu.
El que obtindrem és una llista amb els valors de temperatura (en ºC), pressió (en Pa) i humitat relativa (en %)
Separem els valors per tal de poder treballar amb cada un d'ells de manera independent.
Integració en programes complexos
Per integrar aquest sensor en un programa complex amb més sensors i/o comportaments val la pena definir la recuperació de les seves lectures en una funció i definir les variables com globals perquè puguin ser reconegudes fora d'aquesta funció.
Desem el programa de recuperació de valors dins el dispositiu microPython, amb el nom barometre.py
ALTRES PARÀMETRES AMBIENTALS
A partir de les dades d'humitat, temperatura i pressió es pot calcular altres paràmetres d'interès, com ara el punt de rosada, la temperatura de xafogor i l'altitud.
Punt de rosada
És el valor al qual ha de baixar la temperatura de l'aire perquè el vapor d'aigua que conté comenci a condensar-se en rosada.
Per obtenir-lo només cal llegir la propietat dew_point de l'objecte creat per al sensor, que el calcula (en ºC) en funció dels valors actuals de temperatura i humitat relativa de l'aire.
punt_rosada = bme.dew_point
Temperatura de xafogor i índex de calor
La temperatura de xafogor és la temperatura que percep el cos humà, que depèn de la temperatura de l'aire i la humitat relativa.
L'índex de xafugor planteja la relació entre la sensació tèrmica al sol i a l'ombra per a les mateixes condicions d'humitat i temperatura.
Altitud
Com que la pressió de l'aire disminueix a mesura que augmenta l'altitud, podem calcular-la comparant la pressió actual amb un valor de referència, normalment l'altitud sobre el nivell del mar. El valor de referència que utilitza la llibreria és la propietat sealevel i podem carregar qualsevol valor o el de la pressió al nivell del mar que és de 101.325 Pascals (si no el canviem, aquest és valor que té per defecte).
altitud = bme.altitude