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

BMS 3S 25A Balanceador Carga de Baterias
Leonardo R3 MEGA32U4 + cable USB compatible con Arduino































Valoraciones
No hay valoraciones aún.