Note

Bonjour et bienvenue dans la communauté SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts sur Facebook ! Plongez plus profondément dans le Raspberry Pi, Arduino et ESP32 avec d’autres passionnés.

Pourquoi nous rejoindre ?

  • Support d’experts : Résolvez les problèmes après-vente et les défis techniques avec l’aide de notre communauté et de notre équipe.

  • Apprenez & partagez : Échangez des astuces et des tutoriels pour améliorer vos compétences.

  • Aperçus exclusifs : Accédez en avant-première aux annonces de nouveaux produits.

  • Réductions spéciales : Profitez de réductions exclusives sur nos derniers produits.

  • Promotions festives et cadeaux : Participez à des tirages au sort et à des promotions de vacances.

👉 Prêt à explorer et créer avec nous ? Cliquez sur [ici] et rejoignez-nous dès aujourd’hui !

5. Système d’Appel avec @MQTT

Le Message Queuing Telemetry Transport (MQTT) est un protocole de messagerie simple. C’est également le protocole de messagerie le plus courant pour l’Internet des Objets (IoT).

Les protocoles MQTT définissent la manière dont les dispositifs IoT transfèrent les données. Ils sont pilotés par événements et interconnectés via le modèle Pub/Sub. L’expéditeur (Publisher) et le récepteur (Subscriber) communiquent via des Topics. Un appareil publie un message sur un sujet spécifique, et tous les appareils abonnés à ce sujet reçoivent le message.

Dans cette section, nous allons créer un système de sonnette de service en utilisant Pico W, HiveMQ (un service gratuit de courtier MQTT public), et quatre boutons. Les quatre boutons représentent quatre tables dans un restaurant, et vous pourrez voir sur HiveMQ quelle table a besoin de service lorsque le client appuie sur le bouton.

1. Composants nécessaires

Dans ce projet, nous aurons besoin des composants suivants.

Il est évidemment plus pratique d’acheter un kit complet, voici le lien :

Nom

ÉLÉMENTS DANS LE KIT

LIEN

Kepler Kit

450+

Kepler Ultimate Kit

Vous pouvez également les acheter séparément via les liens ci-dessous.

SN

COMPOSANT

QUANTITÉ

LIEN

1

Découvrir le Pico W

1

ACHETER

2

Câble Micro USB

1

3

Plaque d’essai (Breadboard)

1

ACHETER

4

Fils de connexion (Jumper Wires)

Plusieurs

ACHETER

5

Résistance

4(10KΩ)

ACHETER

6

Bouton

4

ACHETER

7

Module de chargeur Li-po

1

8

Batterie 18650

1

9

Support de Batterie

1

2. Monter le Circuit

Avertissement

Assurez-vous que votre module de chargeur Li-po est connecté comme indiqué sur le schéma. Sinon, un court-circuit pourrait endommager votre batterie et votre circuit.

../../_images/5.mqtt_pub.png

3. Visiter HiveMQ

HiveMQ est une plateforme de messagerie basée sur MQTT qui permet un transfert de données rapide, efficace et fiable vers les dispositifs IoT.

  1. Ouvrez HiveMQ Web Client dans votre navigateur.

  2. Connectez le client au proxy public par défaut.

    ../../_images/mqtt-1.png
  3. Cliquez sur Ajouter une nouvelle souscription à un sujet.

    ../../_images/mqtt-2.png
  4. Remplissez les sujets que vous souhaitez suivre et cliquez sur S’abonner. Les sujets définis ici doivent être plus personnels pour éviter de recevoir des messages d’autres utilisateurs, et faites attention à la sensibilité à la casse.

    ../../_images/mqtt-3.png

4. Installer le Module MQTT

Avant de commencer le projet, nous devons installer le module MQTT pour Pico W.

  1. Connectez-vous au réseau en exécutant do_connect() dans le Shell, que nous avons écrit précédemment.

    Note

    • Tapez les commandes suivantes dans le Shell et appuyez sur Entrée pour les exécuter.

    • Si vous n’avez pas les scripts do_connect.py et secrets.py dans votre Pico W, veuillez vous référer à 1. Accès au Réseau pour les créer.

    from do_connect import *
    do_connect()
    
  2. Après une connexion réseau réussie, importez le module mip dans le shell et utilisez mip pour installer le module umqtt.simple, un client MQTT simplifié pour MicroPython.

    import mip
    mip.install('umqtt.simple')
    
  3. Vous verrez que le module umqtt est installé sous le chemin /lib/ du Pico W après la fin de l’installation.

    ../../_images/5_calling_system1.png

5. Exécuter le Script

  1. Ouvrez le fichier 5_mqtt_publish.py dans le répertoire kepler-kit-main/iot.

  2. Cliquez sur le bouton Exécuter le script actuel ou appuyez sur F5 pour le lancer.

    ../../_images/5_calling_system2.png
  3. Retournez à HiveMQ Web Client et lorsque vous appuyez sur l’un des boutons de la plaque de prototypage, vous verrez une notification de message sur HiveMQ.

    ../../_images/mqtt-4.png
  4. Si vous souhaitez que ce script soit lancé au démarrage, vous pouvez l’enregistrer sur le Raspberry Pi Pico W sous le nom de main.py.

Comment ça marche ?

Le Raspberry Pi Pico W doit être connecté à Internet, comme décrit dans 1. Accès au Réseau. Utilisez simplement cette connexion pour ce projet.

from do_connect import *
do_connect()

Initialisez 4 broches pour les boutons.

sensor1 = Pin(16, Pin.IN)
sensor2 = Pin(17, Pin.IN)
sensor3 = Pin(18, Pin.IN)
sensor4 = Pin(19, Pin.IN)

Créez deux variables pour stocker l”URL et l”ID client du courtier MQTT avec lequel nous allons nous connecter. Étant donné que nous utilisons un courtier public, notre ID client ne sera pas utilisé, même si un est requis.

mqtt_server = 'broker.hivemq.com'
client_id = 'Jimmy'

Connectez-vous au courtier MQTT et maintenez la connexion pendant une heure. En cas d’échec, réinitialisez le Pico W.

try:
    client = MQTTClient(client_id, mqtt_server, keepalive=3600)
    client.connect()
    print('Connected to %s MQTT Broker'%(mqtt_server))
except OSError as e:
    print('Failed to connect to the MQTT Broker. Reconnecting...')
    time.sleep(5)
    machine.reset()

Créez une variable topic, qui est le sujet que l’abonné doit suivre. Elle doit correspondre au sujet défini à l’étape 4 de la section 2. Visiter HiveMQ ci-dessus. Par ailleurs, b ici convertit la chaîne en octet, car MQTT est un protocole binaire où les éléments de contrôle sont des octets binaires et non des chaînes de texte.

topic = b'SunFounder MQTT Test'

Définissez des interruptions pour chaque bouton. Lorsqu’un bouton est pressé, un message est publié sous le topic.

def press1(pin):
    message = b'button 1 is pressed'
    client.publish(topic, message)
    print(message)

sensor1.irq(trigger=machine.Pin.IRQ_RISING, handler=press1)