Affichage des données d’un capteur de température SI7021 via le serveur web d’un ESP32

4.3
(6)

La carte ESP32 Wroom DevKit est idéale pour développer vos projets à base du microcontrôleur ESP32. Elle intègre le puissant module ESP32-WROOM-32E avec interfaces WiFi et Bluetooth. De plus ses dimensions réduites permettent de pouvoir l’intégrer sur une platine d’expérimentation (breadboard).

La carte est fabriquée en France, c’est assez rare pour le noter ! Elle est bien documentée et uPesy propose de nombreux tutoriels rédigés en français pour l’installation et l’utilisation de la carte sur Arduino IDE, PlatformIO et Micro Python. La carte est livrée avec une fiche cartonnée décrivant le brochage, très pratique car cela fait gagner beaucoup de temps à l’usage ! Et gros point positif, contrairement à de nombreuses autres cartes, toutes ses broches sont utilisables !

Description des broches de l’ESP32 Wroom

Exemple d’application

Nous allons réaliser un serveur web sur l’ESP32 qui affichera la température et l’humidité remontée par un capteur SI7021 via le bus I2C. L’ESP32 sera configuré comme une station WiFi connectée à votre réseau.

Le capteur SI7021

Le capteur de température et de pression utilisé dans ce tutoriel est monté sur un petit module GY-21. Ce module inclus le capteur SI7021 (ou l’équivalent HTU21), un régulateur de tension 3.3V et les résistances de rappel pour le bus I2C. Le module peut ainsi être alimenté en 3.3V ou 5V et communique au travers d’une liaison I2C, ce qui le rend compatible avec de nombreux microcontrôleurs. C’est une alternative intéressante au célèbre module DHT11.

Le capteur du module que j’utilise est le HTU21D. Ce capteur permet de mesurer l’humidité (0 à 100%RH) avec une précision de 2%. La plage de température mesurée s’étend de -40°C à +125 °C avec une précision de 0.3°C (à 25°C).

Le montage

Le montage est très simple, il suffit de relier la carte ESP32 Wroom au PC via le câble USB C. La carte va fournir l’alimentation de 3.3 V au capteur SI7021. Et il suffit ensuite de relier le bus I2C entre le capteur et la carte ESP32. La broche SCL du capteur est reliée à la broche 22 de la carte, et la broche SDA du capteur reliée à la broche 21 de la carte.

Le montage sur la platine d’essai

Ajoute de la carte uPesy et de la librairie Si7021 dans l’IDE Arduino

Il est nécessaire d’installer la carte uPesy ESP32 Wroom dans l’IDE Arduino, vous devez suivre la procédure détaillé sur le site uPesy.

Il faut également installer la librairie SparkFun Si7021 Humidity and Temperature Sensor afin de pouvoir utiliser facilement le capteur SI7021.

Installation de la librairie permettant d’utiliser facilement le capteur SI7021

Le programme

// Serveur Web sur une carte ESP32 Wroom
// https://tutoduino.fr/
// Copyleft 2023
#include <WiFi.h>
#include <WiFiClient.h>
#include <WebServer.h>
#include <ESPmDNS.h>
#include "SparkFun_Si7021_Breakout_Library.h"
#include <Wire.h>
const char* ssid = "mySSID";
const char* password = "MyPwd";
WebServer server(80);
Weather sensor;
void handleRoot() {
  float humidity = 0;
  float temp = 0;
  getWeather(&humidity, &temp);
  String textToDisplay = "Temperature = " + String(temp) + " C" +" ; Humidity = " + String(humidity) + " %";
  server.send(200, "text/plain", textToDisplay);
}
void handleNotFound() {
  String message = "File Not Found\n\n";
  message += "URI: ";
  message += server.uri();
  message += "\nMethod: ";
  message += (server.method() == HTTP_GET) ? "GET" : "POST";
  message += "\nArguments: ";
  message += server.args();
  message += "\n";
  for (uint8_t i = 0; i < server.args(); i++) {
    message += " " + server.argName(i) + ": " + server.arg(i) + "\n";
  }
  server.send(404, "text/plain", message);
}
void getWeather(float * humidity, float* temperature)
{
  // Measure Relative Humidity from the HTU21D or Si7021
  *humidity = sensor.getRH();
  // Measure Temperature from the HTU21D or Si7021
  *temperature = sensor.getTemp();
  // Temperature is measured every time RH is requested.
  // It is faster, therefore, to read it from previous RH
  // measurement with getTemp() instead with readTemp()
}
void setup(void) {
  Serial.begin(115200);
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  Serial.println("");
  // Wait for connection
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.print("Connected to ");
  Serial.println(ssid);
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());
  if (MDNS.begin("esp32")) {
    Serial.println("MDNS responder started");
  }
  server.on("/", handleRoot);
  server.on("/inline", []() {
    server.send(200, "text/plain", "this works as well");
  });
  server.onNotFound(handleNotFound);
  server.begin();
  Serial.println("HTTP server started");
  //Initialize the I2C sensor
  sensor.begin();
}
void loop(void) {
  server.handleClient();
  delay(2);
}

Une fois le programme téléversé sur la carte ESP32, vous pouvez accéder à son serveur Web qui affiche la température et l’humidité mesurée par le capteur !

Affichage des informations du capteur par le serveur Web tournant sur la carte ESP32 Wroom

ESP32 Wrover

Il existe également la carte ESP32 Wrover DevKit qui est plus adaptée aux serveurs Web, car elle dispose d’une mémoire beaucoup plus importante. Elle possède une RAM externe de 4 Mo et une Flash de 16Mo (voir ce comparatif des différentes cartes ESP32 de uPesy). Sinon ses caractéristiques sont très similaires à la carte ESP32 Wroom, en dehors des 2 broches (entourées ci-dessous) qui correspondent aux GPIO16/TX2 et GPIO17/RX2 sur l’ESP32 Wroom et qui ne sont pas utilisables sur l’ESP32 Wrover.

Description des broches de l’ESP32 Grover

Votre avis compte !

Note moyenne : 4.3 / 5. Nombre de votes : 6

Pas encore de vote pour ce tutoriel

Désolé si cet article ne vous a pas intéressé

Merci de commenter afin que je puisse l’améliorer.

Dites-moi comment améliorer cette page.