El sensor BH1750 convierte la intensidad de la luz en un valor digital y lo deja disponible en el bus I2C. Su rango de medición va de 1 a 65.535 lux. En el módulo GY-302 el sensor viene listo para usar con Arduino, ESP32 y otras placas. AdriRobot lo probó con un Arduino UNO y lo documentó en su blog, según publicó Open Electronics el 14 de octubre de 2026.
¿Qué mide el BH1750?
El lux es la unidad de iluminancia y equivale a un lumen por metro cuadrado. Describe la luz que cae sobre una superficie, ponderada según la percibe el ojo humano. Como referencia, la luz que refleja la Luna llena ronda 1 lx, una oficina bien iluminada anda cerca de 400 lx y la luz del sol va entre 32.000 y 100.000 lx.
Modos de medición y resolución
El BH1750 trabaja en seis modos, divididos en dos grupos, medición continua y medición única. En modo continuo el sensor detecta luz sin parar. En modo único toma una lectura y se apaga, así que hay que volver a configurarlo antes de la siguiente. La biblioteca usada en la prueba lo hace sola.
Cada modo ofrece tres niveles de precisión.
- Baja resolución, con precisión de 4 lx y 16 ms de medición.
- Alta resolución, con 1 lx y 120 ms.
- Alta resolución 2, con 0,5 lx y 120 ms.
Por defecto, la biblioteca elige alta resolución continua. En baja y alta resolución el valor máximo es 54.612,5 lx, y en alta resolución 2 se detiene en 27.306,25 lx. En la práctica el sensor devuelve un entero de 16 bits, que la biblioteca convierte a lux dividiéndolo por 1,2. Un resultado de -1 indica que no llegó un dato válido, y -2 avisa que el dispositivo no está configurado.
También se puede cambiar el intervalo durante el cual el sensor cuenta la luz, con el registro MTreg. Su valor va de 32 a 254, y el de fábrica es 69.
El módulo GY-302, alimentación, pines y dirección
En el GY-302 el sensor va acompañado de un regulador LDO de 3,3 V, marcado 662K, y sus condensadores. Por eso el módulo acepta en el pin VCC los 5 V de Arduino. El regulador entrega hasta 250 mA y soporta un máximo de 6,5 V en la entrada. En las líneas SCL y SDA hay además dos resistencias de pull-up de 4,7 kΩ.
El conector tiene cinco pines, que son VCC, GND, SCL, SDA y ADDR. El último sirve para elegir la dirección I2C y entra en juego cuando varios BH1750 comparten el mismo bus. Con ADDR en nivel bajo la dirección es 0x23, y con ADDR en alto pasa a 0x5C. En el módulo probado el pin está conectado a tierra a través de una resistencia de 4,7 kΩ, así que el sensor responde en 0x23.
Las especificaciones del módulo son estas.
- Rango de medición de 1 a 65.535 lux.
- Alimentación de 3 a 5 V.
- Temperatura de operación de -40 a +85 °C.
- Dimensiones de 18,5 × 13,9 × 2,5 mm, sin contar los conectores.
¿Cómo se conecta a un Arduino UNO y una pantalla OLED?
Para la primera prueba basta una placa Arduino UNO, el módulo GY-302 y algunos cables jumper macho-hembra. VCC y GND van a la alimentación, y SDA y SCL a los pines I2C de Arduino. Antes de cargar el sketch conviene correr el ejemplo i2c_scanner del IDE. Si el cableado está bien, el monitor serie reporta un dispositivo en la dirección 0x23.
La lectura usa la biblioteca BH1750 de Christopher Laws, que se instala desde el gestor de bibliotecas junto con Wire, ya incluida en el IDE. El sketch lee el valor cada segundo y también lo escribe en el monitor serie.
El proyecto se completa con una pantalla OLED de 0,96 pulgadas, de 128×64 píxeles, con controlador SSD1306 e interfaz I2C. La pantalla responde en la dirección 0x3C, así que comparte el bus con el sensor. Se necesitan las bibliotecas Adafruit SSD1306 y Adafruit GFX, y el luxómetro muestra los lux directo en pantalla.
Quien quiera ver el BH1750 trabajando en un proyecto más grande puede revisar la estación meteorológica con ESP32 y panel web en vivo que publicó Open Electronics, donde se combina con un DHT22 y un BMP280.
El artículo original de AdriRobot incluye además el esquema completo, los sketches y el video de la prueba.






