El sensor BH1750 retorna mesures d'il·luminació en lux (unitat d'il·luminació del SI).
La sensibilitat d'aquest sensor és molt similar a la de l'ull humà: només funciona en l'espectre visible (390-700 nm), així que els raigs infrarojos, ultraviolats o qualsevol altra llum no tindran gairebé cap efecte sobre el sensor.
Rang de mesura: pot mesurar des d'1 lx fins a 65535 lx.
Precissió: +/- 20%
MAGNITUDS FOTOMÈTRIQUES
Lumen (lm): mesura el flux lluminós, quantitat de llum emesa per una font (en totes direccions).
Lux (lx): mesura del nivell d'il·luminació, la quantitat de llum (lm) que il·lumina una superfície (1 lx = 1 lm/ m²)
Depén de l'angle d'incidència de la llum sobre la superfície.
Candela (cd): mesura la intensitat lluminosa en una direcció donada. Expressa la distribució del flux lluminós en l'espai.
Radiació solar: es mesura en W/m²
685 lx= 1W/m² o 1 lx = 0,0079 W/m²
Alguns valors de referència:
0.01 lx cel nocturn despejat
1 lx cel nocturn amb lluna plena
300 lx oficina ben enllumenada
1000 lx plató de televisió
32000 - 100000 lx llum solar en un dia mitjà
PAUTES DE CONNEXIÓ
El BH1750 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)
El pin ADDR del sensor serveix per definir la seva adreça I2C. Si no el connectem, l'adreça serà 0x23, i si el connectem a 3.3V serà 0x5C.
Els pins I2C de l'ESP32:
GPIO 22 (SCL, rellotge)
GPIO 21 (SDA, dades)
PAUTES DE PROGRAMACIÓ
La llibreria bh1750
Per treballar amb el BH1750 cal una llibreria que no forma part de la biblioteca estàndard de MicroPython.
Utilitzarem el programa init.py de la carpeta bh1750 d'aquest repositori GitHub, que desarem dins la carpeta lib del nsotre dispositiu, amb el nom bh1750.py
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 executarem la funció luminance definida a la classe BH1750 de la llibreria bh1750 que hem desat a la carpeta lib del nostre dispositiu.
Aquesta funció, a la que hem de definir la resolució de la lectura, retorna els valors directament en lux (lx)
Modes de mesura que podem utilitzar per definir la resolució del sensor: 👇
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 luxometre.py
PAUTES DE COMPROVACIÓ
Proveu diferents modes de mesura i decidiu quin és el que més s'ajusta a les nostres necessitats.
Compareu els valors retornats pel sensor amb els d'un luxímetre comercial.
Comproveu, per les mateixes condicions lumíniques, si les mesures (lux) varien en funció de la inclinacio del sensor (haurien de variar)