INFORMACIÓN
El módulo sensor de luz TSL2591 permite medir con precisión la iluminación ambiental mediante comunicación I2C. Es compatible con conectores DevLab, Qwiic y STEMMA QT. Incluye 4 header macho y un arnés JST 1mm para conexión Qwiic.
Es ideal para proyectos educativos, sistemas de iluminación inteligente, monitoreo ambiental y aplicaciones con microcontroladores. Gracias a su interfaz de comunicación I²C, puede conectarse fácilmente a microcontroladores y tarjetas de desarrollo como Arduino, ESP32, Raspberry Pi, STM32 y otras plataformas compatibles.
ESPECIFICACIONES Y CARACTERÍSTICAS
- Marca: UNIT Electronics
- País de origen: Hecho en México
- IC: TSL2591
-
Voltaje de suministro: 3.3V a 5 V
-
Interfaz: I2C (0x29)
- Temperatura de funcionamiento: -40°C a +85°C
-
Tipo de conector: JST 1,0 mm 4 pines
- Dimensiones:22.86 mm x 13.97 mm
- Peso: 3.22 g
DOCUMENTACIÓN Y RECURSOS
INFORMACIÓN ADICIONAL
Test de prueba
En el siguiente test de prueba, será para comprobar la conexión y comunicación vía I2C por el conector Qwiic y procesando las lecturas por medio de la tarjeta Pulsar C6.

Previamente, tendremos que descargar la librería en el Arduino IDE para el uso del sensor TSL2591. Esta tiene el nombre de Devlab_TDL2591 (también es compatible con la librería de Adafruit_TSL2591).

El siguiente código nos ayudara a visualizar en el monitor serial la lectura del sensor, desde la confirmación en el uso de la dirección 0x29, posteriormente convirtiendo los datos en hexadecimal para asociar el valor a la iluminación percibida.
#include <Devlab_TSL2591.h>
#include <Wire.h>
#define SDA_PIN 6
#define SCL_PIN 7
#define INT_PIN 17
Devlab_TSL2591 tsl = Devlab_TSL2591(1);
void initDevice(){
Serial.println("╔══════════════════════════════════════╗");
Serial.println("║ Iniciando ID del TSL2591 ║");
Serial.println("╚══════════════════════════════════════╝");
//Inicializamos el dispositivo para verificar si hay transmisión
bool found = tsl.begin();
if(found){
Serial.println("Dispositivo encontrado en la dirección 0x29");
}else{
Serial.println("Dispositivo no encontrado");
}
}
void advancedRead(void)
{
// More advanced data read example. Read 32 bits with top 16 bits IR, bottom 16 bits full spectrum
// That way you can do whatever math and comparisons you want!
uint32_t lum = tsl.getFullLuminosity();
uint16_t ir, full;
ir = lum >> 16;
full = lum & 0xFFFF;
Serial.print(F("[ ")); Serial.print(millis()); Serial.print(F(" ms ] "));
Serial.print(F("IR: ")); Serial.print(ir); Serial.print(F(" "));
Serial.print(F("Full: ")); Serial.print(full); Serial.print(F(" "));
Serial.print(F("Visible: ")); Serial.print(full - ir); Serial.print(F(" "));
Serial.print(F("Lux: ")); Serial.println(tsl.calculateLux(full, ir), 6);
}
uint16_t readFull(){
uint16_t full;
uint32_t lum = tsl.getFullLuminosity();
full = lum & 0xFFFF;
Serial.print(F("Full: ")); Serial.print(full); Serial.println(F(" "));
return full;
}
void getStatus(void)
{
uint8_t x = tsl.getStatus();
// bit 4: ALS Interrupt occured
// bit 5: No-persist Interrupt occurence
if (x & 0x10) {
Serial.print("[ "); Serial.print(millis()); Serial.print(" ms ] ");
Serial.println("ALS Interrupt occured");
}
if (x & 0x20) {
Serial.print("[ "); Serial.print(millis()); Serial.print(" ms ] ");
Serial.println("No-persist Interrupt occured");
}
// Serial.print("[ "); Serial.print(millis()); Serial.print(" ms ] ");
Serial.print("Status: ");
Serial.println(x, BIN);
tsl.clearInterrupt();
}
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
delay(1000);
Wire.begin(SDA_PIN,SCL_PIN);
Wire.setClock(400000);
initDevice();
tsl.setGain(TSL2591_GAIN_MED);
tsl.setTiming(TSL2591_INTEGRATIONTIME_100MS);
tsl.registerInterrupt(500,3300,TSL2591_PERSIST_10);
pinMode(INT_PIN,INPUT_PULLUP);
}
void loop() {
// put your main code here, to run repeatedly:
//advancedRead();
uint16_t full = readFull();
Serial.print("FULL: ");
Serial.print(full);
Serial.print(" STATUS: 0x");
Serial.print(tsl.getStatus(), HEX);
if(digitalRead(INT_PIN) == HIGH){
if(tsl.getStatus() & 0x20){ // este valor puede ser 0x10 según sea el status
if(full <= 600){
Serial.println("Luz baja — sensor en oscuridad");
}else if(full < 1000 ){
Serial.println("Luz natural — iluminación del día");
}else if(full > 2000 ){
Serial.println("Luz alta — exceso de iluminación");
}
tsl.clearInterrupt();
}
}else{
Serial.println("No hubo interrupción");
}
delay(5000);
}
Para visualizar la información en el monitor serial tendrás que habilitar USB CDC On Boot : ENABLE (Barra de herramientas >Tools) y los bauds para visualizar la información son a 115200 bauds. El resultado será el siguiente:

Aplicaciones
-
Detección de luz ambiental
-
Ajuste automático del brillo de pantallas
-
Sistemas de iluminación inteligente
-
Dispositivos IoT alimentados por batería
-
Monitoreo ambiental
-
Automatización industrial
-
Registro de datos de intensidad luminosa
-
Detección de presencia humana y exposición a la luz
-
Dispositivos electrónicos portátiles
-
Sistemas de visualización energéticamente eficientes

PJ-301M Jack 3.5mm N.C Conector de Audio
Relevador 5V de 1 Canal
Medidor de Voltaje Lipo/Li-ion/Fe RC 1-8S
FPGA Altera Cyclone IV EP4CE6 + Carcasa Kit Desarrollo
MaixCAM Placa de Desarrollo AI RISCV
Bambu Lab A1 Impresora 3D
502L Amplificador Bluetooth Estereo 50W
XIAO Grove Starter Kit 7 sensores y placa de expansión
Panel de Iluminación LED Micro USB 5V 430mA - 470mA
Kit Protoboard 830 Puntos + Fuente MB102 + 65 Cables Dupont M-M
SN-03BM Prensa para Terminales ZH1.5mm SH1.0mm
Adaptador de Audio Jack 3.5mm a Plug 6.3mm Estéreo
Fuente Conmutada 5V 2A
XIAO ESP32-S3 Wi-Fi y BLE
Módulo de Detección de Rotura de Filamento de Impresora 3D
Flux en Pasta UV35 en Jeringa de 5CC































Valoraciones
No hay valoraciones aún.