Utilisation de lESP-01 avec MQTT : comment connecter et contrôler les appareils IoT

Utilisation de lESP-01 avec MQTT : comment connecter et contrôler les appareils IoT

Avoir un budget ne signifie pas nécessairement que vous ne pouvez pas entreprendre des projets de bricolage avancés. Si vous recherchez un petit module WiFi abordable et pratique pour développer vos projets IoT, le module ESP-01 est un excellent choix. Cependant, intégrer un tel module avec un protocole léger comme MQTT peut être délicat, surtout si vous débutez dans le développement IoT.

La programmation de la carte ESP-01 seule peut être difficile par rapport aux autres modules de la série ESP8266. Mais passons en revue les bases de toute la configuration matérielle et logicielle dont vous avez besoin pour commencer à utiliser le module, ainsi que la configuration de MQTT de manière simple et procédurale.

Apprendre à connaître le conseil

ESP8266 ESP-01 est un module WiFi petit et compact livré avec une puce ESP8266EX, qui est un SoC hautement intégré conçu pour les applications IoT.

Utilisation de l'ESP-01 avec MQTT : comment connecter et contrôler les appareils IoT

Le module comprend un microcontrôleur sans fil monopuce avec une pile de protocoles TCP/IP et est capable de se connecter à un réseau sans fil ou d'agir comme un point d'accès. Le module ESP-01 dispose également d'un en-tête 2x4 broches qui permet d'accéder à ses broches GPIO, à l'alimentation et à la masse, et à l'interface UART.

Configuration du matériel

Le module n'est pas du tout compatible avec la planche à pain. Pour plus de commodité, vous pouvez acheter une carte d'extension pré-construite ou simplement suivre la méthode à l'ancienne, en utilisant des fils de connexion et une planche à pain.

Il existe un programmeur dédié, la carte de module série ESP8266, qui peut faciliter votre expérience de programmation. Si vous préférez emprunter cette voie, DIYHOBI propose un didacticiel pratique sur la façon de flasher un programme dans le module ESP-01 à l'aide d'un programmeur (y compris l'adaptateur de module de conversion USB vers TTL CH340G).

Mais, vous pouvez toujours programmer le module à l'aide d'une carte Arduino. Regardez le schéma de circuit ci-dessous pour référence.

Utilisation de l'ESP-01 avec MQTT : comment connecter et contrôler les appareils IoT

Bien que cela puisse sembler tentant, nous ne recommandons généralement pas de connecter le module directement à la broche 3,3 V de l'Arduino car il nécessite plus de courant que la broche n'en fournit. Au lieu de cela, connectez l'Arduino 5V à un régulateur de tension de 3,3 V comme LM1117/LD117, puis alimentez le module WiFi à partir du régulateur.

Ne connectez pas les broches VCC et CH_PD de l'ESP à la broche 5V de l'Arduino. Connecter le module à une alimentation 5V peut l'endommager.

Tous les condensateurs sont de 10uF et la résistance est une résistance de 1K .

Logiciels requis

Le module ESP-01 est couramment utilisé avec la plate-forme Arduino. En tant que tel, la configuration du logiciel est assez simple, surtout si vous êtes familier avec Arduino C. Cependant, si vous êtes plus familier avec Raspberry, il existe de nombreux projets Raspberry Pi IoT que vous pouvez essayer.

Voici les exigences de base :

  • Un courtier ou un serveur MQTT (tel que Mosquitto ou CloudMQTT).
  • Un IDE Arduino avec la bibliothèque principale ESP8266.
  • La bibliothèque PubSubClient pour Arduino.

Vous devez vous rappeler que le fait d'avoir votre propre serveur MQTT localement vous donne de la flexibilité dans vos projets.

Installation des bibliothèques nécessaires

Tout d'abord, téléchargez et installez l'IDE Arduino sur votre ordinateur. Une fois installé, ouvrez l'IDE Arduino et accédez à File > Preferences .

Utilisation de l'ESP-01 avec MQTT : comment connecter et contrôler les appareils IoT

Dans le champ URL supplémentaires du gestionnaire de tableaux , saisissez l'URL suivante :

http://arduino.esp8266.com/stable/package_esp8266com_index.json

Cliquez sur OK pour fermer la fenêtre Préférences.

Utilisation de l'ESP-01 avec MQTT : comment connecter et contrôler les appareils IoT

Ensuite, allez dans Outils > Tableau > Gestionnaire de tableaux .

Ensuite, recherchez esp8266 et installez le package de carte esp8266, qui inclut toutes les bibliothèques nécessaires pour le module ESP-01.

Utilisation de l'ESP-01 avec MQTT : comment connecter et contrôler les appareils IoT

Pour installer la bibliothèque PubSubClient, accédez à Sketch > Include Library > Manage Libraries .

Utilisation de l'ESP-01 avec MQTT : comment connecter et contrôler les appareils IoT

Recherchez PubSubClient et cliquez sur la bibliothèque pour l'installer.

Utilisation de l'ESP-01 avec MQTT : comment connecter et contrôler les appareils IoT

Une fois que vous avez installé toutes les bibliothèques nécessaires, vous pouvez commencer à programmer le module ESP-01. Une chose à noter cependant, c'est que vous pouvez utiliser le Wifi.h qui est inclus dans la bibliothèque, ou télécharger la bibliothèque ESPWifi.h et l'inclure dans votre croquis.

Établissement d'une connexion entre ESP-01 et le courtier MQTT

Un courtier MQTT est un serveur qui agit comme intermédiaire entre les clients MQTT. Il permet aux clients d'envoyer et de recevoir des messages entre eux via un modèle de publication-abonnement.

Pour connecter votre module ESP-01 à un courtier MQTT, vous devrez spécifier l'adresse IP et le numéro de port du courtier dans votre code. Vous devrez également fournir un identifiant client unique qui identifie votre module ESP-01 au courtier.

Tout d'abord, incluez les bibliothèques nécessaires en haut de votre croquis

#include ESP8266WiFi.h> #include PubSubClient.h>

Ensuite, définissez les détails de connexion WiFi et MQTT.

const char* ssid = "YOUR_SSID"; const char* password = "YOUR_PASSWORD"; const char* mqtt_server = "YOUR_MQTT_SERVER";

N'oubliez pas de remplacer les espaces réservés par vos propres détails de connexion WiFi et MQTT.

Après cela, créez un client WiFi et connectez-vous à votre réseau WiFi local :

WiFiClient espClient; void setup_wifi() {   delay(10);   WiFi.begin(ssid, password);   while (WiFi.status() != WL_CONNECTED) {     delay(500);   } }

Cette fonction doit être appelée dans la fonction setup() de votre sketch.

Ensuite, vous devrez créer un client MQTT et vous connecter à votre courtier MQTT :

PubSubClient client(espClient); void reconnect() {   while (!client.connected()) {     if (client.connect("ESP01", mqtt_user, mqtt_password)) {       // Subscribe to a topic       client.subscribe("test/topic");     } else {       delay(5000);     }   } }

Une fois que vous êtes connecté à votre courtier MQTT, vous pouvez commencer à publier et à vous abonner à des sujets.

Publication de données d'ESP-01 vers MQTT Broker

Maintenant que vous avez connecté avec succès votre module ESP01 au courtier MQTT, voyons comment vous pouvez publier des données de l'ESP-01 vers le courtier.

Pour publier des données, utilisez la fonction client.publish() pour publier un message dans le sujet inTopic .

client.publish("inTopic", "Hello from ESP-01");

Cela publiera le message "Hello from ESP-01" dans le sujet inTopic .

Vous pouvez également publier les données des capteurs de l'ESP-01 vers le courtier. Par exemple, si vous avez un capteur de température connecté à votre ESP-01, vous pouvez publier les données de température sur le courtier comme indiqué ci-dessous.

float temperature = 25.5; String temperatureString = String(temperature); char temperatureChar[5]; temperatureString.toCharArray(temperatureChar, 5); client.publish("Temp", temperatureChar);

Cela publiera les données de température dans le sujet Temp .

Les données peuvent être publiées en boucle ou à intervalles réguliers, selon les besoins de votre projet. Assurez-vous que vous n'inondez pas le courtier avec trop de données et que vous publiez à un intervalle raisonnable.

Abonnement aux rubriques MQTT et réception de données sur ESP-01

Pour vous abonner à un sujet, utilisez la fonction client.subscribe() . Pour notre cas ci-dessous, le client s'abonne au sujet outTopic .

client.subscribe("outTopic");

Une fois que vous vous êtes abonné à un sujet, vous pouvez recevoir des messages publiés sur ce sujet en utilisant la fonction client.loop() dans la fonction loop() dans l'esquisse ci-dessous :

void loop() {   if (!client.connected()) {     reconnect();   }   client.loop(); }

Cela vérifiera en permanence les nouveaux messages et exécutera la fonction de rappel lorsqu'un nouveau message a été reçu.

Pour gérer les messages reçus, définissez une fonction de rappel comme celle ci-dessous :

void callback(char* topic, byte* payload, unsigned int length) {   // Print the received message   Serial.print("Message received on topic: ");   Serial.print(topic);   Serial.print(". Message: ");   for (int i=0;i     Serial.print((char)payload[i]);   }   Serial.println(); }

Cette fonction sera appelée lors de la réception d'un nouveau message sur le sujet abonné. Il imprimera le message reçu sur le moniteur série.

Utilisation des niveaux QoS (Quality of Service) et des fonctions de sécurité

L'une des techniques les plus importantes utilisées dans le traitement des demandes consiste à utiliser les niveaux de QoS (Quality of Service) pour vos messages MQTT. Les niveaux de QoS définissent la façon dont le courtier et les abonnés doivent gérer vos messages. Il existe trois niveaux de QoS : 0, 1 et 2.

Le niveau de qualité de service 0 est le moins fiable, car les messages ne sont envoyés qu'une seule fois et ne sont pas garantis pour être livrés à l'abonné. Le niveau de qualité de service 1 est plus fiable, car les messages sont envoyés au moins une fois et sont garantis d'être livrés à l'abonné au moins une fois. Le niveau de qualité de service 2 est le plus fiable, car les messages sont envoyés exactement une fois et sont garantis d'être livrés à l'abonné exactement une fois. La façon dont vos appareils communiquent correspond aux autres problèmes de sécurité courants de l'Internet des objets (IoT) et aux correctifs que vous souhaitez maîtriser.

Pour utiliser les niveaux de QoS, vous pouvez spécifier le niveau souhaité lors de la publication des messages à l'aide de la fonction client.publish() :

client.publish("topic", "Hello, world!", 1);

Cela publiera le message Hello, world! au sujet sujet avec QoS niveau 1 .

Une autre technique avancée consiste à utiliser les messages Last Will and Testament (LWT) . Les messages LWT sont des messages envoyés par le courtier lorsqu'un client se déconnecte de manière inattendue. Nous pensons que cela est important pour détecter les appareils hors ligne ou pour déclencher des actions lorsqu'un appareil se déconnecte.

Pour utiliser les messages LWT, vous pouvez spécifier le message LWT lors de la connexion au courtier à l'aide de la fonction client.setWill() :

client.setWill("status", "offline", 1, true);

Cela définira le message LWT sur hors ligne sur le sujet d'état avec le niveau de qualité de service 1 et l'indicateur de conservation défini sur true .

Préparez-vous pour votre prochain projet IoT

Le module ESP-01 est une solution abordable et compacte pour les projets IoT, et son utilisation avec MQTT peut faire passer votre projet au niveau supérieur. Bien que la configuration initiale puisse être décourageante, les avantages de MQTT, tels qu'une communication légère et une grande évolutivité, en font un investissement rentable.