import network
import time
from machine import Pin, ADC, PWM
import dht
import ujson
from umqtt.simple import MQTTClient
# Configura o pino do potenciômetro (entrada analógica)
pot = ADC(Pin(34))
pot.atten(ADC.ATTN_11DB) # Atenuação para ler até ~3.3V
pot.width(ADC.WIDTH_10BIT) # Resolução de 10 bits (0 a 1023)
# MQTT SERVER
SERVIDOR = "broker.hivemq.com"
MQTT_TOPICOT = "temperaturaJ"
MQTT_TOPICOU = "umidadeJ"
MQTT_TOPICOP = "potJ"
sensor = dht.DHT22(Pin(15))
print("Conectando-se ao WiFi", end="")
sta_if = network.WLAN(network.STA_IF)
sta_if.active(True)
sta_if.connect('Wokwi-GUEST', '')
while not sta_if.isconnected():
print(".", end="")
time.sleep(0.1)
print(" Conectado!")
print("Conectando-se ao servidor MQTT... ", end="")
client = MQTTClient("ESP32Juliano", SERVIDOR, 1883)
client.connect()
print("Conectado!")
prev_weather = ""
while True:
valor = pot.read() # Lê o valor do potenciômetro (0 a 1023)
print("Medindo sensores... ", end="")
sensor.measure()
mensagem = ujson.dumps({
"temperatura": sensor.temperature(),
"umidade": sensor.humidity(),
"pot": valor,
})
if mensagem != prev_weather:
print("Atualizado!")
print("Enviando ao tópico MQTT {}: {}".format(MQTT_TOPICO, mensagem))
client.publish(MQTT_TOPICOT, sensor.temperature())
client.publish(MQTT_TOPICOU, sensor.humidity())
client.publish(MQTT_TOPICOP, valor)
prev_weather = mensagem
else:
print("Sem atualizações!")
time.sleep(1)