from machine import ADC, Pin, I2C
from time import sleep
import utime
import json
from i2c_lcd import I2cLcd
# --- Configuración LCD I2C ---
i2c = I2C(0, sda=Pin(21), scl=Pin(22), freq=400000)
lcd_addr = i2c.scan()[0]
lcd = I2cLcd(i2c, lcd_addr, 2, 16)
# --- Configuración ADC (potenciómetro simula sensor de temperatura) ---
sensor = ADC(Pin(34))
sensor.atten(ADC.ATTN_11DB)
sensor.width(ADC.WIDTH_10BIT)
# --- Función para leer temperatura ---
def leer_temperatura():
valor = sensor.read()
temp = (valor / 1023) * 50 # Simula 0-50°C
return round(temp, 2)
while True:
temperatura = leer_temperatura()
# Mostrar en LCD
lcd.clear()
lcd.putstr("Temp: {:.2f} C".format(temperatura))
# Verificar alerta
if temperatura > 30:
lcd.move_to(0,1)
lcd.putstr("!ALERTA CALOR!")
print("ALERTA MQTT: Temperatura alta detectada!")
print("Enviando a dispositivo: Temperatura =", temperatura, "°C")
# Crear registro JSON
t = utime.localtime()
timestamp = "{}-{:02d}-{:02d} {:02d}:{:02d}:{:02d}".format(t[0], t[1], t[2], t[3], t[4], t[5])
alerta = {
"timestamp": timestamp,
"temperatura": temperatura,
"alerta": "Temperatura alta"
}
print("Registro JSON:", json.dumps(alerta))
else:
lcd.move_to(0,1)
lcd.putstr("Estado: Normal")
print("Temperatura normal:", temperatura, "°C")
sleep(2)