Table des matières:

UbiDots-Connecter un ESP32 et publier des données de capteurs multiples : 6 étapes
UbiDots-Connecter un ESP32 et publier des données de capteurs multiples : 6 étapes

Vidéo: UbiDots-Connecter un ESP32 et publier des données de capteurs multiples : 6 étapes

Vidéo: UbiDots-Connecter un ESP32 et publier des données de capteurs multiples : 6 étapes
Vidéo: Storing ESP8266 data into Amazon DynamoDB using AWS IoT Core(MQTT) & Arduino 2024, Juillet
Anonim
UbiDots-Connecter un ESP32 et publier des données de capteurs multiples
UbiDots-Connecter un ESP32 et publier des données de capteurs multiples

ESP32 et ESP 8266 sont des SoC très familiers dans le domaine de l'IoT. Ce sont en quelque sorte une aubaine pour les projets IoT. ESP 32 est un appareil avec WiFi et BLE intégrés. Donnez simplement votre SSID, mot de passe et configurations IP et intégrez les choses dans le cloud. Ici, dans ce instructable, nous réfléchirons à certains des termes de base de l'IoT comme la plate-forme IoT, MQTT, les portails captifs, etc. Alors, passons en revue

  • L'architecture IoT en termes très simples consiste en un appareil intégré et une plate-forme IoT pour mettre l'appareil dans le cloud. Ici, nous utilisons la plate-forme UbiDots IoT pour visualiser les données des capteurs.
  • La gestion des paramètres IP et des informations d'identification de l'utilisateur peut être un casse-tête pour l'utilisateur. Que faire si l'utilisateur souhaite modifier les informations d'identification WiFi ? Que faire si l'utilisateur souhaite changer les paramètres DHCP/IP statique ? Flasher l'ESP32 à chaque fois n'est pas fiable et même pas la solution à ces problèmes. Nous allons donc passer par le portail captif pour enregistrer les identifiants WiFi et autres configurations.
  • MQTT est en train de devenir un terme très courant dans le monde de l'IoT. il a dépassé les demandes et les réponses (HTTP) par Publier et S'abonner en raison de l'architecture rapide, robuste et allégée.

Ici, dans ce instructable, nous allons démontrer.

  • Donner des informations d'identification WiFi et MQTT à l'aide du portail captif.
  • Publication et abonnement de plusieurs données de capteurs à UbiDots.
  • Lecture des données du capteur à partir des capteurs de température et d'humidité sans fil.
  • Hébergement d'un formulaire Web à partir de l'ESP32.
  • Lecture et écriture à partir de SPIFFS ESP32.

Étape 1: Spécification matérielle et logicielle

Spécification matérielle et logicielle
Spécification matérielle et logicielle
  • ESP32 Wi-Fi/BLE
  • Capteur de température et d'humidité sans fil

Spécification du logiciel

IDE Arduino

Étape 2: Création d'un portail captif

Création d'un portail ca-t.webp
Création d'un portail ca-t.webp
Création d'un portail ca-t.webp
Création d'un portail ca-t.webp
Création d'un portail ca-t.webp
Création d'un portail ca-t.webp

Un portail captif est une page Web qui s'affiche pour les utilisateurs nouvellement connectés avant qu'ils ne bénéficient d'un accès plus large aux ressources du réseau. Ici, nous servons trois pages Web pour choisir entre les paramètres DHCP et IP statique. nous pouvons définir l'adresse IP à ESP de deux manières.

  • Adresse IP DHCP - c'est un moyen d'attribuer dynamiquement l'adresse IP à l'appareil. L'adresse IP par défaut de l'ESP est 192.168.4.1
  • L'adresse IP statique - attribuant une adresse IP permanente à notre périphérique réseau. pour fournir l'adresse IP statique à l'appareil, nous devons définir l'adresse IP, l'adresse de la passerelle et le masque de sous-réseau.

La première page Web est hébergée au 192.168.1.77. Ici, l'utilisateur dispose des boutons radio pour choisir entre les paramètres DHCP et IP statique. Dans la page Web suivante, nous devons fournir les informations relatives à l'IP pour continuer.

Code HTML

Le code HTML des pages Web se trouve dans ce référentiel Github. Vous pouvez utiliser n'importe quel IDE ou éditeur de texte comme Sublime ou notepad++ pour créer des pages Web HTML.

  • Créez d'abord une page Web HTML contenant deux boutons radio pour choisir entre DHCP et Static IP Settings.
  • Créez maintenant le bouton pour soumettre votre réponse
  • Donnez un nom aux boutons radio.
  • La classe du serveur Web ESP prendra ces noms comme arguments et obtiendra la réponse des boutons radio en utilisant ces arguments
  • Insérez maintenant un bouton « ENVOYER » pour envoyer la réponse à l'appareil. Dans les autres pages Web, nous avons des zones de texte.
  • Donnez la valeur du nom et le type d'entrée à la zone de texte et ajoutez un bouton d'envoi pour « ENVOYER » soumettre la réponse.
  • Créez un bouton 'RESET' pour réinitialiser le contenu du champ de texte.

Étape 3: Fournir les identifiants WiFi et UbiDots

Fournir des identifiants WiFi et UbiDots
Fournir des identifiants WiFi et UbiDots

Le principal problème se produit lors de la gestion des informations d'identification WiFi. Même si nous avons la bibliothèque WiFiMulti pour cela, nous pouvons donner plusieurs SSID et mots de passe à l'appareil et l'appareil se connectera au réseau disponible. Mais que faire si le réseau disponible n'est pas dans la liste WiFiMulti. Flasher l'appareil ESP32 en permanence n'est pas une solution fiable.

Pour résoudre ce problème, nous hébergeons une page Web où l'utilisateur peut soumettre le SSID et le mot de passe du réseau disponible. Cela fonctionne comme suit.

  • La page Web est hébergée sur l'adresse IP statique ou l'adresse IP DHCP choisie par l'utilisateur à partir du portail captif
  • Cette page Web contient des champs de texte pour saisir le SSID, le mot de passe et l'ID de jeton UBIDOTS pour connecter l'appareil à UbiDots.
  • Entrez le SSID et le mot de passe de votre WiFi local dans les champs de saisie, entrez l'identifiant du jeton UbiDot et entrez SOUMETTRE
  • Ces informations d'identification sont enregistrées dans l'EEPROM d'ESP32
  • Après 60 secondes, l'appareil se déconnectera automatiquement du point d'accès
  • La prochaine fois que vous allumerez l'appareil, l'utilisateur n'aura pas à suivre cette procédure, l'appareil récupérera automatiquement les informations d'identification de l'utilisateur dans l'EEPROM et continuera à publier les lectures du capteur sur UbiDots.

Étape 4: Publication des lectures des capteurs sur UbiDots

Ici, nous utilisons des capteurs de température et d'humidité sans fil avec l'appareil ESP 32 pour obtenir les données de température et d'humidité. Nous envoyons les données à UbiDots en utilisant le protocole MQTT. MQTT suit un mécanisme de publication et d'abonnement plutôt qu'une demande et une réponse. Il est plus rapide et fiable que HTTP. Cela fonctionne comme suit.

  • Nous utilisons le planificateur de tâches pour planifier la tâche, comme récupérer les données des capteurs, publier les lectures des capteurs, s'abonner au sujet MQTT.
  • Tout d'abord, incluez les fichiers d'en-tête du planificateur de tâches, son instance et planifie les tâches.
  • Nous avons programmé deux tâches faisant référence à deux opérations de contrôle différentes.

#define _TASK_TIMEOUT#include

Planificateur ts;

//---------Tâches------------//Tâche tSensor(4 * TASK_SECOND, TASK_FOREVER, &taskSensorCallback, &ts, false, NULL, &taskSensorDisable); Tâche tWiFi(10* TASK_SECOND, TASK_FOREVER, &taskWiFiCallback, &ts, false, NULL, &taskWiFiDisable);

La tâche 1 sert à lire la valeur du capteur, cette tâche s'exécute pendant 1 seconde jusqu'à ce qu'elle atteigne un délai d'attente de 10 secondes

  • Lorsque la tâche1 atteint son délai d'expiration, nous nous connectons au courtier Wifi et MQTT local.
  • Maintenant, la tâche 2 est activée et nous désactivons la tâche 1
  • La tâche 2 sert à publier les données du capteur sur le courtier UbiDots MQTT, cette tâche s'exécute pendant 20 secondes jusqu'à ce qu'elle atteigne un délai d'attente de 20 secondes
  • Lorsque la tâche 2 atteint son délai d'expiration, la tâche 1 est à nouveau activée et la tâche 2 est désactivée. Ici encore, nous obtenons la valeur mise à jour et le processus continue.

Lecture des données du capteur I2C

Nous obtenons une trame de 29 octets des capteurs de température et d'humidité sans fil. Ce cadre est manipulé pour obtenir des données de température et d'humidité réelles

uint8_t données[29];

data[0] = Serial1.read(); retard(k); //chck for start byte if(data[0]==0x7E) { while (!Serial1.available()); for (i = 1; i< 29; i++) { data = Serial1.read(); retard(1); } if(data[15]==0x7F) /////// pour vérifier si les données reçues sont correctes { if(data[22]==1) //////// assurez-vous que le type de capteur est correct {

humidité = ((((données[24]) * 256) + données[25]) /100,0); humidité /=10,0; cTempint = (((uint16_t)(data[26])<<8)| data[27]); cTemp = (float)cTempint /100,0; cTemp /= 10,0; fTemp = cTemp * 1,8 + 32; fTemp /= 10,0; batterie = aléatoire (100, 327); tension = batterie/100; nodeId = données[16];}

Connexion à l'API UbiDots MQTT

Incluez le fichier d'en-tête du processus MQTT

#comprendre

définir d'autres variables pour MQTT comme le nom du client, l'adresse du courtier, l'ID du jeton (nous récupérons l'ID du jeton à partir de l'EEPROM)

#define MQTT_CLIENT_NAME "ClientVBShightime123"

char mqttBroker = "things.ubidots.com";

char payload[100];char topic[150];

//créer une variable pour stocker l'ID du jeton

Id de jeton de chaîne;

Créez des variables pour stocker différentes données de capteur et créez une variable char pour stocker le sujet

#define VARIABLE_LABEL_TEMPF "tempF" // Assertion du libellé de la variable#define VARIABLE_LABEL_TEMPC "tempC" // Assinger le libellé de la variable #define VARIABLE_LABEL_BAT "bat" #define VARIABLE_LABEL_HUMID "humid" // Assumer le libellé de la variable

char topic1[100]; char topic2[100]; char topic3[100];

publier les données dans le sujet MQTT mentionné, la charge utile ressemblera à { "tempc": {value: "tempData"}}

sprintf(sujet1, "%s", ""); sprintf(topic1, "%s%s", "/v1.6/devices/", DEVICE_LABEL); sprintf(charge utile, "%s", ""); // Nettoie la charge utile sprintf(payload, "{"%s\":", VARIABLE_LABEL_TEMPC); // Ajoute la valeur sprintf(payload, "%s{"value\":%s}", payload, str_cTemp); // Ajoute la valeur sprintf(payload, "%s}", payload); // Ferme les crochets du dictionnaire Serial.println(payload); Serial.println(client.publish(topic1, payload) ? "published": "notpublished");

//Faire de même pour les autres sujets

client.publish() publie les données sur UbiDots

Étape 5: Visualiser les données

Visualiser les données
Visualiser les données
Visualiser les données
Visualiser les données
Visualiser les données
Visualiser les données
  • Allez sur Ubidots et connectez-vous à votre compte.
  • Accédez au tableau de bord à partir de l'onglet Données répertorié en haut.
  • Cliquez maintenant sur l'icône "+" pour ajouter les nouveaux widgets.
  • Sélectionnez un widget dans la liste et ajoutez une variable et des appareils.
  • Les données des capteurs peuvent être visualisées sur le tableau de bord à l'aide de différents widgets.

Étape 6: Code général

Le code Over pour HTML et ESP32 se trouve dans ce référentiel GitHub.

Crédits

  • Carte de dérivation ncd ESP32.
  • Capteurs de température et d'humidité sans fil ncd.
  • pubsubclient
  • UbiDots
  • Planificateur de tâches

Conseillé: