Création de Capteur température et hygrométrie reliée à un broker MQTT

De MediaWiki UOF
Aller à la navigation Aller à la recherche

Objectif

Réaliser un capteur de température et d'hygrométrie à partir d'un Firebeetle ESP32 (version 4) et d'un DHT22. Ce capteur enverra périodiquement les mesures de température, hygrométrie et tension batterie vers un broker MQTT via un réseau Wifi auquel ces deux composants seront connectés. Les données seront mémorisées dans une base de données.

Architecture simplifiee d'un iot relie a un broker MQTT.png

Cette page ne traite que de la partie du capteur et non du broker.

Schéma électrique

Le DHT 22 est relié au Firebbeetle de la manière suivante :

  • Vcc relié au 3V3 de l'ESP32
  • Gnd relié à GND de l'ESP32
  • Data relié à la broche GPIO21 de l'ESP32

Sur l'ESP32, les resistances R10 et R11 sont "pontées". Il s'agit, à chaque fois de deux plots sur lesquels on doit réaliser une "pont de soudure". Ceci met en relation la tension de la batterie avec l'entrée du convertisseur analogique de l'ESP, via un pont de résistances (1M / 2,2M).

Enfin, une batterie est connectée au connecteur prévu à cet effet.

Programme

Le programme est disponible en téléchargement via le lien ci-dessous. Il se compose de 3 fichiers :

  • le fichier INO (programme proprement dit
  • un fichier "credential.h" dans lequel vous devrez renseigner certains paramètres
  • un fichier "parametres.h" dans lequel vous devrez renseigner d'autres paramètres.

Fichier:IOT MQTT TEMP HYGRO BAT.zip

Paramètres du fichier credential.h

Il s'agit de paramètres "confidentiels" d'ou leur séparation des autres paramètres.

  • wifi_ssid  : nom du réseau wifi auquel se connecter
  • wifi_password : mot de passe de connection au réseau Wifi
  • broker_adresse : adresse du broker MQTT
  • broker_port  : port de connection au broker MQTT
  • broker_login : login pour acceder au broker
  • broker_password : mot de passe associé au login
  • client_id : au moins 8 caractères alphanumériques, permet d'identifier l'échange pour d'éventuelles vérifications
  • client_id_aleatoire : pour fournir un ID aléatoire à chaque envoi de données et non toujours identique

Paramètres du fichier "parametres.h"

Il s'agit de données inhérentes au programme mais non confidentielles :

  • timeout_connection_wifi : durée après laquelle l'ESP se met en sommeil s'in n'arrive pas à se connecter au réseau Wifi
  • timeout_connection_broker : durée après laquelle l'ESP se met en sommeil s'in n'arrive pas à se connecter aubroker MQTT
  • intervalle_entre_deux_emission : durée de sommeil entre 2 activités
  • char* topic_mqtt1 : nom du topic pour enregistre les valeurs de température
  • char* topic_mqtt2 : nom du topic pour enregistre les valeurs d'hygrométrie
  • char* topic_mqtt3 : nom du topic pour enregistre les valeurs de tension batterie