from time import sleep
import machine
import mqtt.client as mqtt
# Informations de connexion MQTT
MQTT_SERVER = "broker.emqx.io"
MQTT_TOPIC = "topic/motion"
#MQTT_CLIENT_ID = "pico_client"
#MQTT_USER = ""
#MQTT_PASSWORD = ""
# Broches GPIO pour le moteur pas à pas
STEP_PIN = machine.Pin(18, machine.Pin.OUT)
DIR_PIN = machine.Pin(19, machine.Pin.OUT)
ENABLE_PIN = machine.Pin(20, machine.Pin.OUT)
# Broches GPIO pour les LEDs
GREEN_LED_PIN = machine.Pin(10, machine.Pin.OUT)
RED_LED_PIN = machine.Pin(9, machine.Pin.OUT)
# Initialisation du moteur pas à pas
ENABLE_PIN.off()
def sub_cb(topic, msg):
"""Callback pour le message reçu."""
message = msg.decode('utf-8')
print("Message reçu: {}, Payload: {}".format(topic, message))
if message == "start_motor":
# Faire tourner le moteur pas à pas dans un sens
DIR_PIN.on() # Sens horaire
for _ in range(500): # Nombre de pas
STEP_PIN.on()
sleep(0.001) # Pause pour contrôler la vitesse
STEP_PIN.off()
sleep(0.001)
# Allumer la LED verte et éteindre la LED rouge
GREEN_LED_PIN.on()
RED_LED_PIN.off()
else:
# Arrêter le moteur pas à pas
STEP_PIN.off()
DIR_PIN.off()
# Éteindre les LEDs
GREEN_LED_PIN.off()
RED_LED_PIN.on()
def on_connect(client, userdata, flags, rc):
"""Callback pour la connexion au serveur MQTT."""
print("Connexion au serveur MQTT avec le code de résultat: " + str(rc))
client.subscribe(MQTT_TOPIC)
def on_message(client, userdata, msg):
"""Callback pour la réception de messages MQTT."""
sub_cb(msg.topic, msg.payload)
def main():
client = mqtt.Client(MQTT_CLIENT_ID)
client.username_pw_set(MQTT_USER, MQTT_PASSWORD)
client.on_connect = on_connect
client.on_message = on_message
client.connect(MQTT_SERVER)
while True:
client.loop()
if __name__ == "__main__":
main()