from machine import ADC, Pin
import time
import math
# Configuración de pines
ntc = ADC(Pin(28)) # asignacion del pin de lectura de temperatura
ldr = ADC(Pin(27)) # asignacion del pin de lectura de sensor de luminosidad
led = Pin(15, Pin.OUT) # asignacion de pin de salida de led
# Definir los umbrales de temperatura y luz
TEMP_UMBRAL = 30 # Temperatura en grados Celsius para el umbral alto
LUZ_UMBRAL = 30000 # Umbral alto de luz en lux
# Parámetros de calibración sensor de luminosidad
RL10 = 50.0 # Resistencia a 1 lux
GAMMA = 0.7 # Valor del exponente GAMMA (ajustable según el tipo de LDR)
VREF = 3.3 # Voltaje de referencia (en este caso 3.3V)
# Bucle principal de monitoreo
while True:
# Leer valor del ADC del NTC (temperatura)
valor_adc_ntc = ntc.read_u16()
# Convertir valor ADC a voltaje
voltaje_ntc = valor_adc_ntc * 3.3 / 65535
# Calcular resistencia del NTC
resistencia_ntc = 10000 * (3.3 / voltaje_ntc - 1)
# Calcular temperatura en Celsius usando la ecuación aproximada
temperatura_c = 1 / (1 / (25 + 273.15) - (1 / 3950) * math.log(resistencia_ntc / 10000)) - 273.15
# Leer valor del ADC del LDR (luminosidad)
valor_adc_ldr = ldr.read_u16()
#convertimos el valor ADC a voltaje
voltage_ldr = valor_adc_ldr * VREF / 65535
#calculamos la resistencia del LRD
resistencia_ldr = (voltage_ldr * 10000) / (VREF - voltage_ldr)
#calculamos los lux de acuerdo a ecuacion aproximidad
lux = math.pow(RL10 * 1e3 * math.pow(10, GAMMA) / resistencia_ldr, (1 / GAMMA))
# Mostrar lecturas
print("Temperatura: {:.2f} °C, Luz: {}".format(temperatura_c, lux))
# Evaluar condiciones y activar alerta
if temperatura_c > TEMP_UMBRAL or lux > LUZ_UMBRAL:
led.value(1) # encendido de led al momento de pasar el umbral de temperatura o luminosidad
else:
led.value(0) # apagado de led al momento de bajar el umbral de temperatura o luminosidad
# Esperar antes de la siguiente lectura
time.sleep(1)