Table des matières:
- Étape 1: brochage ESP32
- Étape 2: Brochage NodeMCU
- Étape 3: MQTT
- Étape 4: Assemblage
- Étape 5: Diagramme
- Étape 6: Bibliothèques
- Étape 7: Bibliothèque de lecture de température et d'humidité
- Étape 8: Bibliothèque MQTT
- Étape 9: MQTT.ino
- Étape 10: Graphique
- Étape 11: Fichiers
Vidéo: IBM Watson avec ESP32 comme point de terminaison : 11 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:09
Je publie ici aujourd'hui la première vidéo d'une série sur la façon de monter un appareil Endpoint avec ESP32, puis de l'envoyer à un service cloud. Dans cet épisode spécifique, je vais vous montrer comment envoyer des informations à partir d'un capteur DHT22 en utilisant le protocole MQTT pour IBM Watson.
Nous présenterons d'abord le MQTT, qui est un protocole de machine à machine utilisé dans l'IoT (Internet des objets). Nous enverrons également les données du capteur de température et d'humidité à l'aide de ce protocole, puis vérifierons le graphique avec ces données sur une page Web.
Étape 1: brochage ESP32
J'ai placé ici le Pinout de l'ESP32, que nous utilisons dans notre exemple. Cependant, je tiens à préciser que le projet fonctionne également avec ESP8266, et même avec le même code source.
Étape 2: Brochage NodeMCU
Étape 3: MQTT
MQTT est un protocole de machine à machine utilisé dans l'IoT. Il a été conçu pour être léger et rapide. Il utilise un système d'abonnement/publication, où un appareil "s'abonne" à un sujet avec les informations spécifiques de votre intérêt, puis reçoit les informations chaque fois qu'un appareil publie des données concernant ce sujet.
Comme un programme serveur, MQTT a besoin d'un logiciel. C'est ce qu'on appelle un courtier. Dans ce cas précis, nous utiliserons le service Bluemix IoT d'IBM. Ce service est gratuit pour les tests de points de terminaison.
Ensuite, nous devons avoir un téléphone portable ou une tablette avec le côté Application, c'est-à-dire en tant que client MQTT. Nous avons également le côté Device, qui est le côté ESP avec un thermomètre. Cela envoie les données de température et d'humidité au Bluemix, qui envoie ensuite ces informations au côté application.
Étape 4: Assemblage
Notre circuit se compose d'une résistance de 4,7k Ohms entre le 3,3v et la broche de données, plus un DHT22 connecté au GPIO4 d'un ESP32 ou NodeMCU. C'est donc notre point de terminaison.
Étape 5: Diagramme
Je montre ici les différentes manières de travailler avec le courtier local MQTT. J'ai placé deux modèles de diagramme. Dans la vidéo, je parle d'une situation utilisant un Raspberry Pi pour ouvrir un portail, par exemple.
Dans l'image ci-dessus, nous avons la première architecture qui utilise un courtier local avec persistance, et une deuxième architecture ci-dessous qui communique uniquement avec le courtier dans le cloud.
Comme le montre le diagramme, notre capteur envoie ensuite les données de température et d'humidité à IBM Watson. Il est important de souligner qu'IBM Watson n'écrit pas les données dans ce cas, car elles ne sont affichées que dans des graphiques. En effet, nous n'aborderons aucune opération de base de données dans l'exemple d'aujourd'hui, mais indiquerons uniquement l'accès à la page Quickstart (https://quickstart.internetofthings.ibmcloud.com/), qui affichera l'état du point de terminaison. Le schéma est simple et utilise le WiFi pour envoyer des données.
Étape 6: Bibliothèques
Dans l'IDE Arduino, allez dans le menu Sketch -> Inclure la bibliothèque -> Gérer les bibliothèques…
Sur l'écran qui s'ouvre, entrez dans la recherche "DHT" et installez la lib "DHT sensor library"
Ensuite, tapez "PubSubClient" et installez la bibliothèque "PubSubClient".
Étape 7: Bibliothèque de lecture de température et d'humidité
Étape 8: Bibliothèque MQTT
Étape 9: MQTT.ino
Nous commençons le code source en vérifiant quel ESP est utilisé et en important la bibliothèque et le WiFi correspondants. Nous incluons toujours les bibliothèques MQTT et le capteur de température et d'humidité.
//Verifica qual ESP está sendo utilizado//e importa a lib e wifi correspondante #ifdefined(ESP8266) #include #else #include #endif //Lib de MQTT #include //Lib do sensor de temperature e umidade #include
Ensuite, nous définissons les éléments suivants: l'intervalle entre les soumissions de données, le serveur MQTT qui sera utilisé, les informations d'impression sur le graphique et l'ID. Nous avons également indiqué comment la chaîne QUICK_START devrait être.
//Intervalo entre os envios#define INTERVAL 1000 //Substitua pelo SSID da sua rede #define SSID "TesteESP" //Substitua pela senha da sua rede #define PASSWORD "87654321" //Server MQTT que iremos utlizar #define MQTT_SERVER "quickstart.messaging.internetofthings.ibmcloud.com" //Nome do tópico que devemos enviar os dados //para que eles apareçam nos gráficos #define TOPIC_NAME "iot-2/evt/status/fmt/json" //ID que usaremos para conectar //QUICK_START deve permanecer como está const String QUICK_START = "d:quickstart:arduino:";
Dans cette étape, nous définissons un identifiant unique. Dans cet exemple, nous utilisons l'adresse MAC de l'appareil que nous utilisons. Celui-ci servira d'identification sur le site QuickStart. Ici, nous connectons également l'ID de démarrage rapide avec l'ID de notre appareil.
//No DEVICE_ID você deve mudar para um id único//Aqui nesse exemplo utilizamos o MAC Address //do dispositivo que estamos utilizando //Servirá como identificação no site //https://quickstart.internetofthings.ibmcloud.com const String DEVICE_ID = "240ac40e3fd0"; //Concatémos o id do quickstart com o id do nosso //dispositivo const String CLIENT_ID = QUICK_START + DEVICE_ID;
Nous configurons ensuite le MQTT et le WiFi, ainsi que les objets et variables impliqués dans les valeurs de température et d'humidité.
//Client WiFi que o MQTT utilisera pour connecterWiFiClient wifiClient; //Cliente MQTT, passamos une url do server, un porta //e o cliente WiFi PubSubClient client(MQTT_SERVER, 1883, wifiClient); //Tempo em que o ultimo envio fo feito long lastPublishTime = 0; //Objeto que realiza a leitura da temperature e da umidade DHT dht(4, DHT22); //Variável para guardarmos o valor da temperature float temperature = 0; //Variável para guardarmos o valor da umidade float humidité = 0;
MQTT.ino - configuration
Dans la configuration, nous allons initialiser le DHT et nous connecter au réseau WiFi et au serveur MQTT.
void setup() { Serial.begin(115200); //Incitation à dht dht.begin(); //Conectamos à rede configuration WiFiWiFi(); //Conectamos sur le serveur MQTT connectMQTTServer(); }
MQTT.ino - boucle
Dans la boucle, nous collectons les données du capteur pour créer le Json qui sera publié dans la rubrique qu'IBM Watson s'attend à générer le graphique.
void loop() { //Temps agora em milisegundos long now = millis(); //Se o tempo desde o último envio for maior que o intervalo de envio if (now - lastPublishTime > INTERVAL) { //Atualizamos o tempo em que ocorreu o último envio lastPublishTime = now; //Fazemos a leitura da temperature and umidade readSensor(); Serial.print("Publier le message: "); //Criamos o json que enviaremos para o server mqtt String msg = createJsonString(); Serial.println(msg); //Publicamos no topico onde o servidor espera para receber //e gerar o gráfico client.publish(TOPIC_NAME, msg.c_str()); } }
MQTT.ino - configurationWiFi
Ici, nous avons la fonction chargée de se connecter au réseau WiFi.
//Função responsável por conectar to rede WiFivoid setupWiFi() { Serial.println(); Serial.print("Connexion à "); Serial.print(SSID); //Manda o esp se connecter à rede atraves //do ssid e senha WiFi.begin(SSID, PASSWORD); //Espera até que a conexão com a rede seja estabelecida while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } //Se chegou aqui é porque conectou Serial.println(""); Serial.println("WiFi connecté"); }
MQTT.ino - connectMQTTServer
Dans cette étape, nous utilisons la fonction chargée de se connecter au serveur MQTT.
//Função responsável por conectar ao server MQTTvoid connectMQTTServer() { Serial.println("Connexion au serveur MQTT…"); //Se conecta ao id que definimos if (client.connect(CLIENT_ID.c_str())) { //Se connecte a bem successed Serial.println("connected"); } else { //Se ocorreu algum erro Serial.print("error = "); Serial.println(client.state()); } }
MQTT.ino - readSensor
La lecture des données de température et d'humidité est définie dans cette fonction.
//Função responsável por realizar a leitura //da temperatura e umidade void readSensor(){ float value; //Faz a leitura da temperature value = dht.readTemperature(); //Se o valor lido é válido if(!isnan(value)){ //Armazena o novo valor da temperature temperature = value; } //Faz a leitura da umidade value = dht.readHumidity(); //Se o valor for válido if(!isnan(value)){ //Armazena o novo valor da umidade humidade = value; } }
MQTT.ino - createJsonString
Ici, nous avons la fonction responsable de la création d'un Json avec les données lues.
//Função responsável por criar//um Json com os dados lidos String createJsonString() { String data = "{"; data+= "\"d\": {"; data+="\"température\":"; data+=Chaîne(température); données+=", "; data+="\"humidité\":"; data+=String(humidité); données+="}"; données+="}"; renvoyer des données; }
Étape 10: Graphique
Pour afficher le graphique du capteur, allez
vers
Dans le champ Device ID, saisissez le DEVICE_ID que vous avez défini dans le code.
- Il est important de remplacer cet identifiant d'appareil par un identifiant unique, utilisé uniquement pour éviter tout conflit avec les données envoyées par une autre personne.
Enfin, acceptez les conditions et cliquez sur OK.
Dans ce projet, nous avons testé notre Endpoint sur le serveur IBM Watson. Cela garantit que notre programme Arduino communique correctement avec la plate-forme et que les données que nous envoyons seront reçues en douceur par un service cloud si nous créons un compte.
Dans une prochaine vidéo de cette série, je vais vous montrer comment vous connecter à IBM Watson, ainsi qu'écrire dans la banque de données de ce service cloud ou d'un autre, comme Google, Amazon, entre autres.
Étape 11: Fichiers
Téléchargez les fichiers:
INO
Conseillé:
Visuino Comment utiliser un bouton comme entrée pour contrôler des choses comme la LED : 6 étapes
Visuino Comment utiliser un bouton comme entrée pour contrôler des choses comme la LED : Dans ce didacticiel, nous apprendrons comment allumer et éteindre la LED à l'aide d'un simple bouton et Visuino.Regardez une vidéo de démonstration
IoT Hydroponics - Utilisation de Watson d'IBM pour les mesures PH et EC : 7 étapes (avec photos)
IoT Hydroponics - Utilisation de Watson d'IBM pour les mesures PH et EC : Cette instruction montrera comment surveiller l'EC, le pH et la température d'une configuration hydroponique et télécharger les données sur le service Watson d'IBM. Watson est libre de commencer. Il existe des plans payants, mais le plan gratuit est plus que suffisant pour ce projet
Modèle de chemin de fer automatisé point à point avec voie de garage : 10 étapes (avec photos)
Chemin de fer modélisé point à point automatisé avec voie de garage : les microcontrôleurs Arduino ouvrent de grandes possibilités dans le modélisme ferroviaire, en particulier en ce qui concerne l'automatisation. Ce projet est un exemple d'une telle application. C'est la continuation d'un des projets précédents. Ce projet comprend un point
Comment utiliser la Wiimote comme souris d'ordinateur en utilisant des bougies comme capteur !! : 3 étapes
Comment utiliser la Wiimote comme souris d'ordinateur en utilisant des bougies comme capteur !! : Ce guide vous montrera comment connecter votre télécommande Wii (Wiimote) à votre PC et l'utiliser comme souris
Support multimètre bon marché (comme dans Free [comme dans la bière]) : 4 étapes
Support multimètre bon marché (comme dans Free [comme dans la bière]) : j'ai été ennuyé de devoir me tendre le cou ou d'équilibrer de manière précaire mon multimètre bon marché à 4 $ quelque part où je peux réellement LIRE l'affichage. J'ai donc décidé de prendre les choses en main ! C'est aussi mon premier « structable, donc si quelqu'un a des commentaires utiles