import machine
import time
from time import sleep
import network
from umqtt.simple import MQTTClient
# Constantes para conexión con el cliente MQTT
MQTT_CLIENT_ID = ""
MQTT_BROKER = "broker.emqx.io"
MQTT_USER = ""
MQTT_PASSWORD = ""
MQTT_TOPIC = 'topico/ldr_value'
MQTT_PORT = 1883
# Configuración del ADC (Lectura del potenciómetro)
adc = machine.ADC(machine.Pin(34))
adc.width(machine.ADC.WIDTH_10BIT) # Rango de 0-1023
adc.atten(machine.ADC.ATTN_11DB) # Atenuación máxima
# Función para conectar a la red WiFi
def conectar_wifi():
sta_if = network.WLAN(network.STA_IF)
sta_if.active(True)
sta_if.connect("Wokwi-GUEST", "")
while not sta_if.isconnected():
print(".", end="")
sleep(0.1)
print("Conectado a WiFi!")
# Función para conectar al broker MQTT
def conectar_broker():
print("Conectando al broker: ", MQTT_BROKER)
cliente = MQTTClient(MQTT_CLIENT_ID, MQTT_BROKER, user=MQTT_USER, password=MQTT_PASSWORD, port=MQTT_PORT)
cliente.connect()
print("Conectado al broker MQTT!")
return cliente
# Conectar a WiFi y al broker MQTT antes de iniciar el ciclo
conectar_wifi()
cliente = conectar_broker()
# Publicar los valores del potenciómetro solo si cambian significativamente
ultimo_valor = None
UMBRAL = 5 # Definir un umbral para cambios significativos
while True:
valor_actual = adc.read()
if ultimo_valor is None or abs(valor_actual - ultimo_valor) >= UMBRAL:
print('Nuevo valor del potenciómetro: {}'.format(valor_actual))
cliente.publish(MQTT_TOPIC, str(valor_actual))
ultimo_valor = valor_actual
time.sleep(1)