from machine import Pin, PWM, ADC
from utime import sleep
# Configuración de hardware
led = Pin(2, Pin.OUT) # LED indicador
buzzer = PWM(Pin(25)) # Buzzer pasivo con PWM
ntc = ADC(Pin(32)) # Sensor NTC conectado a ADC
ntc.atten(ADC.ATTN_11DB) # Rango de 0 a 3.3V
# Parámetros del NTC
R25 = 10000 # Resistencia a 25°C (10 kΩ)
BETA = 3950 # Coeficiente Beta
SERIE_RESISTOR = 10000 # Resistencia del divisor de tensión (10 kΩ)
# Función para calcular la temperatura desde el NTC
def calcular_temperatura(valor_adc):
if valor_adc == 0: # Evitar división por cero
return None
# Convertir valor ADC a voltaje
voltaje = valor_adc * 3.3 / 4095
# Calcular resistencia del NTC
resistencia_ntc = SERIE_RESISTOR * (voltaje / (3.3 - voltaje))
# Usar la ecuación simplificada de Steinhart-Hart
temperatura_kelvin = 1 / (1 / (25 + 273.15) + (1 / BETA) * (resistencia_ntc / R25 - 1))
temperatura_celsius = temperatura_kelvin - 273.15
return round(temperatura_celsius, 2)
# Loop principal
while True:
led.on() # Indicar que el sistema está activo
valor_ntc = ntc.read() # Leer NTC
temperatura = calcular_temperatura(valor_ntc)
if temperatura is not None:
print(f"Temperatura: {temperatura} C")
# Verificar si la temperatura es igual o mayor a 38 °C
if temperatura >= 38.0:
buzzer.freq(1000) # Configurar frecuencia del tono
buzzer.duty(512) # Tono continuo (50% del ciclo de trabajo)
print("¡Temperatura objetivo alcanzada! Buzzer encendido.")
else:
buzzer.duty(0) # Apagar buzzer si la temperatura es menor
print("Temperatura por debajo del objetivo. Buzzer apagado.")
else:
print("Error en la lectura del sensor.")
sleep(1)