Table des matières:

IBM Watson avec ESP32 comme point de terminaison : 11 étapes
IBM Watson avec ESP32 comme point de terminaison : 11 étapes

Vidéo: IBM Watson avec ESP32 comme point de terminaison : 11 étapes

Vidéo: IBM Watson avec ESP32 comme point de terminaison : 11 étapes
Vidéo: 35C3 – Укрощение хаоса: можем ли мы создать действительно работающие системы? 2024, Novembre
Anonim
Image
Image
Brochage ESP32
Brochage ESP32

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

Brochage NodeMCU
Brochage NodeMCU

Étape 3: MQTT

MQTT
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

Assemblée
Assemblée

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

Diagramme
Diagramme
Diagramme
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é

Bibliothèque de lecture de température et d'humidité
Bibliothèque de lecture de température et d'humidité

Étape 8: Bibliothèque MQTT

Bibliothèque MQTT
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

Graphique
Graphique
Graphique
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:

PDF

INO

Conseillé: