print("Hello, ESP32!")
# Importar bibliotecas
from machine import Pin, PWM
from utime import sleep
import network # Biblioteca para conexão em rede
import time # Biblioteca para utilização da função sleep
import machine # Biblioteca para geração do ID único do cliente MQTT
import ubinascii # Biblioteca para geração do ID único do cliente MQTT
from umqtt.simple import MQTTClient # Biblioteca para comunicação MQTT
from machine import Pin, PWM
import time
servo = PWM (Pin(22))
servo.freq (50)
# Parâmetros para conexão MQTT
MQTT_CLIENT_ID = ubinascii.hexlify(machine.unique_id()).decode() # Gera ID único
MQTT_BROKER = "broker.mqttdashboard.com" # Endereço do broker
MQTT_USER = "" # Usuário (caso possua)
MQTT_PASSWORD = "" # Senha (caso possua)
# Variável que armazena o nome do tópico que atenderá a requisição
MQTT_TOPIC = "servo"
# Função que será chamada quando o ESP receber uma mensagem
def obter_mensagem(topico, mensagem):
print("\n")
print("Tópico recebido: %s" % (topico))
print("Mensagem recebida: %s" % (mensagem))
print("\n")
if mensagem == b'abrir':
while True:
servo.duty_ns (500000)
time.sleep_ms (500)
servo.duty_ns (1500000)
time.sleep_ms (500)
servo.duty_ns (2500000)
time.sleep_ms (500)
servo.duty_ns (1500000)
time.sleep_ms (500)
elif mensagem == b'fechar':
print("Fechando Porta")
else:
print("Mensagem não reconhecida")
# Conecta ao WiFi
print("Conectando ao WiFi", end="")
estacao = network.WLAN(network.STA_IF)
estacao.active(True)
estacao.connect('Wokwi-GUEST', '')
while not estacao.isconnected():
print(".", end="")
time.sleep(0.1)
print(" Conectado!")
# Conecta ao broker MQTT
print("Conectando ao servidor MQTT... ", end="")
cliente = MQTTClient(MQTT_CLIENT_ID, MQTT_BROKER, user=MQTT_USER, password=MQTT_PASSWORD)
cliente.set_callback(obter_mensagem)
cliente.connect()
cliente.subscribe(MQTT_TOPIC)
print(" Conectado!")
# Aguarda mensagens enviadas via MQTT
try:
while True:
cliente.check_msg() # Use check_msg() para não bloquear a execução
time.sleep(1) # Adicione um pequeno delay para evitar uso excessivo da CPU
# Caso algum erro aconteça, desconecta do broker e do WiFi
finally:
cliente.disconnect()
estacao.disconnect()
estacao.active(False)
print("Fim.")