Les appareils IoT peuvent faire des choses intéressantes, mais une partie essentielle de l'équation est la façon dont ils communiquent. Vous pouvez gérer cela avec un module ESP-01.

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, l'intégration d'un tel module avec un protocole léger comme MQTT peut être délicate, 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.

instagram viewer

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 a un tutoriel 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.

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 le VCC et CH_PD broches de l'ESP au 5V broche de l'Arduino. Connexion du module à 5V le pouvoir peut l'endommager.

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

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 nombreuses Projets Raspberry Pi IdO tu peux 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 à Déposer > Préférences.

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

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

Cliquez sur D'ACCORD pour fermer la fenêtre Préférences.

Ensuite, allez à Outils > Conseil > Gestionnaire de tableaux.

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

Pour installer la bibliothèque PubSubClient, accédez à Esquisser > Inclure la bibliothèque > Gérer les bibliothèques.

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

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échargez le ESPWifi.h bibliothèque et incluez-le 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

#inclure <ESP8266Wi-Fi.h>
#inclure <PubSubClient.h>

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

constantecarboniser* ssid = "VOTRE_SSID";
constantecarboniser* mot de passe = "VOTRE MOT DE PASSE";
constantecarboniser* mqtt_server = "VOTRE_SERVEUR_MQTT";

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 ;
annulersetup_wifi(){
retard (10);
WiFi.begin (ssid, mot de passe);
alors que (WiFi.status() != WL_CONNECTED) {
retard (500);
}
}

Cette fonction doit être appelée dans le installation() fonction de votre croquis.

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

PubSubClient client(en particulier Client);
annulerse reconnecter(){
alors que (!client.connecté()) {
si (client.connect("ESP01", mqtt_user, mqtt_password)) {
// S'abonner à un sujet
client.abonnement("test/sujet");
} autre {
retard (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 le client.publier() fonction pour publier un message sur dans le sujet sujet.

client.publier("dans le sujet", "Bonjour de l'ESP-01");

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

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.

flotter température = 25.5;
Chaîne chaîne de température = Chaîne(température);
carboniser températureChar[5];
temperatureString.toCharArray(températureChar, 5);
client.publier("Temporaire", températureChar);

Ceci publiera les données de température sur le Temp sujet.

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 le client.subscribe() fonction. Pour notre cas ci-dessous, le client souscrit au outTopic sujet.

client.abonnement("horsSujet");

Une fois que vous êtes abonné à un sujet, vous pouvez recevoir les messages publiés sur ce sujet à l'aide de la client.boucle() fonction dans le boucle() fonction dans le croquis ci-dessous :

annulerboucle(){
si (!client.connecté()) {
reconnecter();
}
client.boucle();
}

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 :

annulerrappeler(carboniser* sujet, octet* charge utile, non signée entier longueur){
// Imprimer le message reçu
En série.imprimer("Message reçu sur le sujet: ");
En série.imprimer(sujet);
En série.imprimer(". Message: ");
pour (entier je=0;jeEn série.imprimer((carboniser)charge utile[je]);
}
En série.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é et correctifs courants liés à l'Internet des objets (IoT) vous voulez rester au top.

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

client.publier("sujet", "Bonjour le monde!", 1);

Cela publiera le message Bonjour le monde! au sujet sujet avec niveau QoS 1.

Une autre technique avancée utilise Dernières volontés et testament (LWT) messages. 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 du client.setWill() fonction:

client.setWill("statut", "hors ligne", 1, vrai);

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

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.