import network
from machine import ADC, Pin
from time import sleep
from umqtt.simple import MQTTClient
# Configurações do MQTT
mqtt_server = "127.0.0.1" # Substitua pelo seu endereço IP Mosquitto
mqtt_port = 1883 # Porta padrão do Mosquitto
topic = "detector/gas"
client_id = "Eddu25"
# Configurações de rede
sta_if = network.WLAN(network.STA_IF)
# Pinos
LED_green = Pin(16, Pin.OUT)
LED_red = Pin(17, Pin.OUT)
buzzer = Pin(18, Pin.OUT)
# Conectar à rede WiFi
def connect_wifi():
sta_if.active(True)
if not sta_if.isconnected():
print("Conectando à rede WiFi...")
sta_if.connect("Wokwi-Guest", "")
while not sta_if.isconnected():
pass
print("Conectado à rede WiFi.")
# Função para conectar ao MQTT
def connect_mqtt():
print(f"Conectando ao broker MQTT em {mqtt_server} na porta {mqtt_port}")
client.connect(mqtt_server, port=mqtt_port)
# Loop principal
while True:
try:
# Conectar à rede WiFi
connect_wifi()
# Tenta conectar ao MQTT (se ainda não estiver conectado)
if not client.isconnected():
connect_mqtt()
# Realiza a leitura do sensor
sensor_value = AnalogIn.read_u16()
gas_value = sensor_value * Conv
# Publica o valor do sensor no tópico MQTT
client.publish(topic, str(gas_value))
# Imprime o valor no console
print(gas_value)
# Realiza as ações com base no valor do gás
if gas_value < 1:
buzzer.off()
LED_green.on()
LED_red.off()
elif 1 < gas_value < 3:
buzzer.off()
LED_green.off()
LED_red.on()
elif gas_value > 3:
buzzer.on()
LED_red.on()
# Aguarda antes da próxima leitura
sleep(0.5)
except Exception as e:
# Em caso de erro, imprime o erro no console
print("Erro:", e)
# Desconecta do MQTT e aguarda antes de tentar novamente
client.disconnect()
sleep(1)