ESP32 avec capteur barométrique/altimètre BMP388 (Arduino)

ESP32 avec capteur barométrique/altimètre BMP388 (Arduino)

Dans ce guide, vous apprendrez à utiliser le capteur de pression BMP388 avec la carte ESP32 en utilisant Arduino IDE. Le BMP388 est un capteur de pression barométrique absolue minuscule et précis. En raison de sa précision, il est souvent utilisé pour estimer l’altitude dans les applications de drones. Il peut également être utilisé dans la navigation intérieure/extérieure, les applications GPS et autres. Le capteur communique avec un microcontrôleur à l’aide des protocoles de communication I2C ou SPI.

ESP32 avec capteur altimètre barométrique BMP388 Arduino IDE

Dans ce tutoriel, nous couvrons :

Nous avons un tutoriel similaire pour la carte ESP8266 : ESP8266 NodeMCU avec capteur barométrique/altimètre BMP388 (Arduino)

Présentation du capteur barométrique BMP388

le BMP388 est un capteur de pression barométrique absolue précis, à faible consommation et à faible bruit qui mesure la pression et la température absolues. Parce que la pression change avec l’altitude, nous pouvons également estimer l’altitude avec une grande précision. Pour cette raison, ce capteur est pratique pour les applications de drones et de navigation. Vous pouvez également l’utiliser pour d’autres applications :

  • calcul de la vitesse verticale ;
  • Internet des objets ;
  • prévisions météorologiques et stations météorologiques;
  • applications de soins de santé;
  • applications de remise en forme;
  • autres…

Nous utilisons le capteur BMP388 comme module, comme le montre la figure ci-dessous. Il est également disponible dans d’autres formats différents.

Température de pression d'altitude de module de capteur des goupilles avant BMP388

L’image suivante montre l’autre côté du capteur.

Partie arrière des goupilles BMP388 Capteur Altitude Pression Température

Données techniques BMP388

Le tableau suivant présente les principales caractéristiques du capteur BMP388. Pour plus d’informations, consultez le Fiche de données.

Plage de fonctionnement 300 à 1250 hPa (pression)
-40 à +85ºC (température)
Interface I2C et SPI
Consommation de courant typique moyenne 3,4 µA à 1 Hz
Pression de précision absolue (typiquement)
P=900 …1100 hPa (T=25 … 40°C)
±0,5 hPa
Pression de précision relative (typiquement)
P=900…1100 hPa (T=25 … 40°C)
±0,08 hPa
Bruit de pression (bande passante la plus faible, résolution la plus élevée) 0,03 Pa
Taux d’échantillonnage maximal 200 Hz

Brochage BMP388

Voici le brochage du module BMP388 que nous utilisons — il peut être légèrement différent pour d’autres modules.

NIV Alimente le capteur (5V)
3V3 Alimente le capteur (3V3)
GND GND commun
SCK Broche SCL pour la communication I2C
Broche SCK pour la communication SPI
SDO Broche SDO (MISO) pour la communication SPI
IDS Broche SDI (MOSI) pour la communication SPI
Broche SDA pour la communication I2C
CS Broche de sélection de puce pour la communication SPI
INT Broche d’interruption

Interface BMP388

Comme mentionné précédemment, le capteur BMP388 prend en charge les interfaces I2C et SPI.

ESP32 BMP388 Capteur Altitude Pression Température Arduino

BMP388 I2C

Pour utiliser le protocole de communication I2C, utilisez les broches suivantes :

BMP388 ESP32
IDS (SDA) GPIO 21
SCK (SCL) GPIO 22

GPIO 22 (SCL) et GPIO 21 (SDA) sont les broches ESP32 I2C par défaut. Vous pouvez utiliser d’autres broches tant que vous les définissez correctement dans le code.

Lecture recommandée : ESP32 I2C Communication : définir les broches, plusieurs interfaces de bus et périphériques (Arduino IDE)

BMP388 SPI

Pour utiliser le protocole de communication SPI, utilisez les broches suivantes :

BMP388 ESP32
SCK GPIO 18
IDS (MOSI) GPIO 23
SDO (MISO) GPIO 19
CS (Sélection de puce) GPIO 5

Ce sont les broches ESP32 SPI par défaut. Vous pouvez utiliser d’autres broches tant que vous les définissez correctement dans le code.

Pièces requises

Module de capteur ESP32 BMP388 Altitude Pression Température

Pour terminer ce tutoriel, vous avez besoin des pièces suivantes :

Vous pouvez utiliser les liens précédents ou aller directement sur MakerAdvisor.com/tools pour trouver toutes les pièces pour vos projets au meilleur prix !

ESP32 avec capteur barometriquealtimetre BMP388 Arduino

Schéma – ESP32 avec BMP388

Le BMP388 peut communiquer en utilisant les protocoles de communication I2C ou SPI.

ESP32 avec BMP388 en utilisant I2C

Suivez le schéma suivant pour câbler le BMP388 à l’ESP32 en utilisant les broches I2C par défaut.

Schéma du circuit de câblage ESP32 BMP388 I2C avec Arduino

ESP32 avec BMP388 utilisant SPI

Vous pouvez également utiliser le protocole de communication SPI à la place. Dans ce cas, suivez le schéma suivant pour câbler le BMP388 à l’ESP32 en utilisant les broches SPI par défaut.

Schéma du circuit de câblage ESP32 BMP388 SPI

Préparation de l’IDE Arduino

Nous allons programmer la carte ESP32 en utilisant Arduino IDE. Assurez-vous donc que le module complémentaire ESP32 est installé. Suivez le tutoriel suivant :

Si vous souhaitez utiliser VS Code avec l’extension PlatformIO, suivez plutôt le tutoriel suivant pour apprendre à programmer l’ESP32 :

Installation de la bibliothèque Adafruit BMP3XX

Il existe différentes librairies compatibles avec le capteur BMP388 et l’ESP32. Dans ce tutoriel, nous utiliserons le Bibliothèque Adafruit BMP3XX.

Suivez les étapes suivantes pour installer la bibliothèque dans votre IDE Arduino :

Ouvrez votre IDE Arduino et accédez à Esquisser > Inclure la bibliothèque > Gérer les bibliothèques. Le gestionnaire de bibliothèque devrait s’ouvrir.

Rechercher « adafruit bmp3xx  » dans la zone de recherche et installez la bibliothèque.

Installer la bibliothèque Adafruit bmp3xx Arduino IDE

Installation de la bibliothèque Adafruit_Sensor

Pour utiliser la bibliothèque BMP3XX, vous devez également installer le Bibliothèque Adafruit_Sensor. Suivez les étapes suivantes pour installer la bibliothèque dans votre IDE Arduino :

Aller à Esquisser > Inclure la bibliothèque > Gérer les bibliothèques et tapez « Capteur unifié Adafruit » dans le champ de recherche. Faites défiler jusqu’en bas pour trouver la bibliothèque et l’installer.

Installation de la bibliothèque de pilotes de capteurs unifiés Adafruit

Après avoir installé les bibliothèques, redémarrez votre IDE Arduino.

Code – Lecture de la pression, de l’altitude et de la température BMP388

La meilleure façon de se familiariser avec un nouveau capteur est de commencer par un exemple de base fourni par la bibliothèque.

Après avoir installé la bibliothèque BMP3XX, ouvrez l’IDE Arduino et accédez à Déposer > Exemples > Bibliothèque Adafruit BMP3XX > bmp3XX_simpletest. Nous avons apporté quelques modifications pour le rendre entièrement compatible avec l’ESP32.

/***************************************************************************
  This is a library for the BMP3XX temperature & pressure sensor. Designed specifically to work with the Adafruit BMP388 Breakout ----> http://www.adafruit.com/products/3966
  These sensors use I2C or SPI to communicate, 2 or 4 pins are required to interface. Adafruit invests time and resources providing this open source code, please support Adafruit and open-source hardware by purchasing products from Adafruit!
  Written by Limor Fried & Kevin Townsend for Adafruit Industries. BSD license, all text above must be included in any redistribution
 ***************************************************************************/

// Complete project details: https://Raspberryme.com/esp32-bmp388-arduino/

#include <Wire.h>
#include <SPI.h>
#include <Adafruit_Sensor.h>
#include "Adafruit_BMP3XX.h"

#define BMP_SCK 18
#define BMP_MISO 19
#define BMP_MOSI 23
#define BMP_CS 5

#define SEALEVELPRESSURE_HPA (1013.25)

Adafruit_BMP3XX bmp;

void setup() {
  Serial.begin(115200);
  while (!Serial);
  Serial.println("Adafruit BMP388 / BMP390 test");

  if (!bmp.begin_I2C()) {   // hardware I2C mode, can pass in address & alt Wire
  //if (! bmp.begin_SPI(BMP_CS)) {  // hardware SPI mode  
  //if (! bmp.begin_SPI(BMP_CS, BMP_SCK, BMP_MISO, BMP_MOSI)) {  // software SPI mode
    Serial.println("Could not find a valid BMP3 sensor, check wiring!");
    while (1);
  }

  // Set up oversampling and filter initialization
  bmp.setTemperatureOversampling(BMP3_OVERSAMPLING_8X);
  bmp.setPressureOversampling(BMP3_OVERSAMPLING_4X);
  bmp.setIIRFilterCoeff(BMP3_IIR_FILTER_COEFF_3);
  bmp.setOutputDataRate(BMP3_ODR_50_HZ);
}

void loop() {
  if (! bmp.performReading()) {
    Serial.println("Failed to perform reading :(");
    return;
  }
  Serial.print("Temperature = ");
  Serial.print(bmp.temperature);
  Serial.println(" *C");

  Serial.print("Pressure = ");
  Serial.print(bmp.pressure / 100.0);
  Serial.println(" hPa");

  Serial.print("Approx. Altitude = ");
  Serial.print(bmp.readAltitude(SEALEVELPRESSURE_HPA));
  Serial.println(" m");

  Serial.println();
  delay(2000);
}

Afficher le code brut

Pression au niveau de la mer

Pour obtenir des résultats plus précis pour la pression et l’altitude, nous vous recommandons d’ajuster la pression au niveau de la mer pour votre emplacement dans le SEALEVELPRESSURE_HPA variable:

#define SEALEVELPRESSURE_HPA (1013.25)

La valeur standard est de 1013,25 hPa. Pour des résultats plus précis, vérifiez la pression au niveau de la mer à votre emplacement. Vous pouvez utiliser ceci site web pour vérifier la pression au niveau de la mer.

Comment fonctionne le code

Continuez à lire cette section pour savoir comment fonctionne le code, ou passez à la Manifestation section.

Bibliothèques

Le code commence par inclure les bibliothèques nécessaires : le Fil bibliothèque pour utiliser I2C, le SPI bibliothèque (si vous souhaitez utiliser SPI au lieu d’I2C), le Adafruit_Sensor, et Adafruit_BMP3XX bibliothèques pour s’interfacer avec le capteur BMP388.

#include <Wire.h>
#include <SPI.h>
#include <Adafruit_Sensor.h>
#include "Adafruit_BMP3XX.h"

Communication SPI

Nous préférons utiliser le protocole de communication I2C avec le capteur. Cependant, le code est préparé si vous souhaitez utiliser SPI. Les lignes de code suivantes définissent les broches SPI.

#define BMP_SCK 18
#define BMP_MISO 19
#define BMP_MOSI 23
#define BMP_CS 5

Pression au niveau de la mer

Une variable appelée SEALEVELPRESSURE_HPA est créé.

#define SEALEVELPRESSURE_HPA (1013.25)

Cette variable enregistre la pression au niveau de la mer en hectopascal (équivalent au milibar). Cette variable permet d’estimer l’altitude pour une pression donnée en la comparant à la pression au niveau de la mer. Cet exemple utilise la valeur par défaut, mais pour des résultats précis, remplacez la valeur par la pression actuelle au niveau de la mer à votre emplacement. Vous pouvez utiliser ce site Web pour vérifier pression au niveau de la mer.

mettre en place()

Dans le mettre en place() démarrer une communication série.

Serial.begin(115200);

Init BMP388 Capteur I2C

Cet exemple utilise le protocole de communication I2C par défaut. La ligne suivante commence un Adafruit_BMP3XX objet appelé bmp sur les broches ESP32 I2C par défaut : GPIO 22 (SCL), GPIO 21 (SDA).

if (!bmp.begin_I2C()) { // hardware I2C mode, can pass in address & alt Wire

Pour utiliser SPI, vous devez commenter cette ligne précédente et décommenter l’une des lignes suivantes pour le SPI matériel (utilisez les broches SPI par défaut et choisissez la broche CS) ou le SPI logiciel (utilisez n’importe quelle broche).

//if (! bmp.begin_SPI(BMP_CS)) {  // hardware SPI mode  
//if (! bmp.begin_SPI(BMP_CS, BMP_SCK, BMP_MISO, BMP_MOSI)) {  // software SPI mode

Configurez les paramètres suivants (suréchantillonnage et filtre) pour le capteur.

// Set up oversampling and filter initialization
bmp.setTemperatureOversampling(BMP3_OVERSAMPLING_8X);
bmp.setPressureOversampling(BMP3_OVERSAMPLING_4X);
bmp.setIIRFilterCoeff(BMP3_IIR_FILTER_COEFF_3);
bmp.setOutputDataRate(BMP3_ODR_50_HZ);

Pour augmenter la résolution des données brutes du capteur, il prend en charge le suréchantillonnage. Nous utiliserons les paramètres de suréchantillonnage par défaut, mais vous pouvez les modifier.

  • setTemperatureSuréchantillonnage(): régler le suréchantillonnage de la température.
  • setPressureSuréchantillonnage(): régler le suréchantillonnage de la pression.

Ces méthodes peuvent accepter l’un des paramètres suivants :

  • BMP3_NO_OVERSAMPLING
  • BMP3_OVERSAMPLING_2X
  • BMP3_OVERSAMPLING_4X
  • BMP3_OVERSAMPLING_8X
  • BMP3_OVERSAMPLING_16X
  • BMP3_OVERSAMPLING_32X

le setIIRFilterCoeff() La fonction définit le coefficient du filtre (en échantillons). Ça peut être:

  • BMP3_IIR_FILTER_DISABLE (pas de filtrage)
  • BMP3_IIR_FILTER_COEFF_1
  • BMP3_IIR_FILTER_COEFF_3
  • BMP3_IIR_FILTER_COEFF_7
  • BMP3_IIR_FILTER_COEFF_15
  • BMP3_IIR_FILTER_COEFF_31
  • BMP3_IIR_FILTER_COEFF_63
  • BMP3_IIR_FILTER_COEFF_127

Réglez le débit de données de sortie avec le setOutputDataRate() une fonction. Il peut accepter l’une des options suivantes :

BMP3_ODR_200_HZ, BMP3_ODR_100_HZ, BMP3_ODR_50_HZ, BMP3_ODR_25_HZ,BMP3_ODR_12_5_HZ, BMP3_ODR_6_25_HZ, BMP3_ODR_3_1_HZ, BMP3_ODR_1_5_HZ, BMP3_ODR_0_78_HZ, BMP3_ODR_0_39_HZ,BMP3_ODR_0_2_HZ, BMP3_ODR_0_1_HZ, BMP3_ODR_0_05_HZ, BMP3_ODR_0_02_HZ, BMP3_ODR_0_01_HZ, BMP3_ODR_0_006_HZ, BMP3_ODR_0_003_HZ, ou BMP3_ODR_0_001_HZ

boucler()

Dans le boucler(), nous obtiendrons les mesures du capteur BMP388. D’abord, dites au capteur d’obtenir de nouvelles lectures avec bmp.performReading().

if (! bmp.performReading()) {
  Serial.println("Failed to perform reading :(");
  return;
}

Ensuite, obtenez et imprimez les relevés de température, de pression et d’altitude comme suit :

Serial.print("Temperature = ");
Serial.print(bmp.temperature);
Serial.println(" *C");

Serial.print("Pressure = ");
Serial.print(bmp.pressure / 100.0);
Serial.println(" hPa");

Serial.print("Approx. Altitude = ");
Serial.print(bmp.readAltitude(SEALEVELPRESSURE_HPA));
Serial.println(" m");

Vous obtenez chaque lecture spécifique comme suit :

  • bmp.température: renvoie la lecture de la température
  • bmp.pression: renvoie la lecture de la pression
  • bmp.readAltitude (SEALEVELPRESSURE_HPA): renvoie l’estimation de l’altitude

Manifestation

Après avoir inséré la pression au niveau de la mer pour votre emplacement, vous pouvez télécharger le code sur votre tableau. Dans votre IDE Arduino, accédez à Outils > Planches et sélectionnez le tableau que vous utilisez. Puis dans Outils > Port, sélectionnez le port COM.

Après le téléchargement, ouvrez le moniteur série à un débit en bauds de 115 200. Les lectures seront imprimées dans le moniteur série.

Moniteur série d'affichage de pression d'altitude BMP388

Notez que si vous augmentez l’altitude du capteur, cela se reflétera dans la lecture de l’altitude. L’estimation de l’altitude est assez précise. Il peut détecter de petits changements dans la plage des centimètres ou des pouces. Vous pouvez le vérifier en comparant l’altitude que vous obtenez avec l’altitude de votre emplacement. Pour obtenir l’altitude de votre position, vous pouvez utiliser cette site Internet.


Serveur Web ESP32 avec BMP388

Dans cette section, nous fournissons un exemple de serveur Web que vous pouvez créer avec l’ESP32 pour afficher les lectures BMP388 sur une page Web.

ESP32 BMP388 Capteur Altitude Pression Température Arduino Web Server

Installation de bibliothèques – Serveur Web asynchrone

Pour créer le serveur Web, vous devez installer les bibliothèques suivantes. Cliquez sur les liens ci-dessous pour télécharger les bibliothèques.

Ces bibliothèques ne peuvent pas être installées via le gestionnaire de bibliothèques Arduino, vous devez donc copier les fichiers de bibliothèque dans le dossier Bibliothèques d’installation Arduino. Alternativement, dans votre IDE Arduino, vous pouvez aller à Esquisser > Inclure la bibliothèque > Ajouter une bibliothèque .zip et sélectionnez les bibliothèques que vous venez de télécharger.

Code

Ensuite, téléchargez le code suivant sur votre tableau (tapez votre SSID et votre mot de passe).

/*********
  Rui Santos
  Complete project details at https://Raspberryme.com/esp32-bmp388-arduino/
  
  Permission is hereby granted, free of charge, to any person obtaining a copy
  of this software and associated documentation files.
  
  The above copyright notice and this permission notice shall be included in all
  copies or substantial portions of the Software.
*********/

#include <Wire.h>
#include <SPI.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP3XX.h>
#include <WiFi.h>
#include <ESPAsyncWebServer.h>

// Replace with your network credentials
const char* ssid = "REPLACE_WITH_YOUR_SSID";
const char* password = "REPLACE_WITH_YOUR_PASSWORD";

//Uncomment if using SPI
/*#define BMP_SCK 18
#define BMP_MISO 19
#define BMP_MOSI 23
#define BMP_CS 5*/

#define SEALEVELPRESSURE_HPA (1013.25)

Adafruit_BMP3XX bmp;

float temp;
float pres;
float alt;

AsyncWebServer server(80);
AsyncEventSource events("/events");

unsigned long lastTime = 0;  
unsigned long timerDelay = 30000;  // send readings timer

void getBMPReadings(){
  if (! bmp.performReading()) {
    Serial.println("Failed to perform reading :(");
    return;
  }
  temp = bmp.temperature;
  pres = bmp.pressure / 100.0;
  alt = bmp.readAltitude(SEALEVELPRESSURE_HPA);
}

String processor(const String& var){
  getBMPReadings();
  //Serial.println(var);
  if(var == "TEMPERATURE"){
    return String(temp);
  }
  else if(var == "PRESSURE"){
    return String(pres);
  }
 else if(var == "ALTITUDE"){
    return String(alt);
  }
}

const char index_html[] PROGMEM = R"rawliteral(
<!DOCTYPE HTML><html>
<head>
  <title>BMP388 Web Server</title>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css" integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr" crossorigin="anonymous">
  <link rel="icon" href="data:,">
  <style>
    html {font-family: Arial; display: inline-block; text-align: center;}
    p {  font-size: 1.2rem;}
    body {  margin: 0;}
    .topnav { overflow: hidden; background-color: #0F7173; color: white; font-size: 1.4rem; }
    .content { padding: 20px; }
    .card { background-color: white; box-shadow: 2px 2px 12px 1px rgba(140,140,140,.5); }
    .cards { max-width: 700px; margin: 0 auto; display: grid; grid-gap: 2rem; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); }
    .reading { font-size: 2rem; }
    .card.temperature { color: #272932; }
    .card.altitude { color: #D8A47F; }
    .card.pressure { color: #F05D5E; }
  </style>
</head>
<body>
  <div class="topnav">
    <h3>BMP388 WEB SERVER</h3>
  </div>
  <div class="content">
    <div class="cards">
      <div class="card pressure">
        <h4><i class="fas fa-angle-double-down"></i> PRESSURE</h4><p><span class="reading"><span id="pres">%PRESSURE%</span> hPa</span></p>
      </div>
      <div class="card altitude">
        <h4><i class="fas fa-long-arrow-alt-up"></i> ALTITUDE</h4><p><span class="reading"><span id="alt">%ALTITUDE%</span> m</span></p>
      </div>
      <div class="card temperature">
        <h4><i class="fas fa-thermometer-half"></i> TEMPERATURE</h4><p><span class="reading"><span id="temp">%TEMPERATURE%</span> &deg;C</span></p>
      </div>
    </div>
  </div>
<script>
if (!!window.EventSource) {
 var source = new EventSource('/events');
 
 source.addEventListener('open', function(e) {
  console.log("Events Connected");
 }, false);
 source.addEventListener('error', function(e) {
  if (e.target.readyState != EventSource.OPEN) {
    console.log("Events Disconnected");
  }
 }, false);
 
 source.addEventListener('message', function(e) {
  console.log("message", e.data);
 }, false);
 
 source.addEventListener('temperature', function(e) {
  console.log("temperature", e.data);
  document.getElementById("temp").innerHTML = e.data;
 }, false);
 
 source.addEventListener('pressure', function(e) {
  console.log("pressure", e.data);
  document.getElementById("pres").innerHTML = e.data;
 }, false);
 
 source.addEventListener('altitude', function(e) {
  console.log("altitude", e.data);
  document.getElementById("alt").innerHTML = e.data;
 }, false);
}
</script>
</body>
</html>)rawliteral";

void setup() {
  Serial.begin(115200);

  WiFi.mode(WIFI_STA);
  
  // Set device as a Wi-Fi Station
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Setting as a Wi-Fi Station..");
  }
  Serial.print("Station IP Address: ");
  Serial.println(WiFi.localIP());
  Serial.println();

  // Init BMEP388 sensor
  if (!bmp.begin_I2C()) {   // hardware I2C mode, can pass in address & alt Wire
  //if (! bmp.begin_SPI(BMP_CS)) {  // hardware SPI mode  
  //if (! bmp.begin_SPI(BMP_CS, BMP_SCK, BMP_MISO, BMP_MOSI)) {  // software SPI mode
    Serial.println("Could not find a valid BMP3 sensor, check wiring!");
    while (1);
  }
  // Set up oversampling and filter initialization
  bmp.setTemperatureOversampling(BMP3_OVERSAMPLING_8X);
  bmp.setPressureOversampling(BMP3_OVERSAMPLING_4X);
  bmp.setIIRFilterCoeff(BMP3_IIR_FILTER_COEFF_3);
  bmp.setOutputDataRate(BMP3_ODR_50_HZ);

  //Get readings when initializing
  getBMPReadings();

  // Handle Web Server
  server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/html", index_html, processor);
  });

  // Handle Web Server Events
  events.onConnect([](AsyncEventSourceClient *client){
    if(client->lastId()){
      Serial.printf("Client reconnected! Last message ID that it got is: %un", client->lastId());
    }
    // send event with message "hello!", id current millis
    // and set reconnect delay to 1 second
    client->send("hello!", NULL, millis(), 10000);
  });
  server.addHandler(&events);
  server.begin();
}

void loop() {
  if ((millis() - lastTime) > timerDelay) {
    getBMPReadings();
    Serial.printf("Pressure = %.2f hPa n", pres);
    Serial.printf("Altitude = %.2f m n", alt);
    Serial.printf("Temperature = %.2f ºC n", temp);
    Serial.println();

    // Send Events to the Web Server with the Sensor Readings
    events.send("ping",NULL,millis());
    events.send(String(pres).c_str(),"pressure",millis());
    events.send(String(alt).c_str(),"altitude",millis());
    events.send(String(temp).c_str(),"temperature",millis());
    
    lastTime = millis();
  }
}

Afficher le code brut

Manifestation

Après le téléchargement, ouvrez le moniteur série à un débit en bauds de 115 200 pour obtenir l’adresse IP ESP32.

Ouvrez un navigateur et saisissez l’adresse IP. Vous devriez avoir accès au serveur Web avec les dernières lectures des capteurs. Vous pouvez accéder au serveur Web sur votre ordinateur, tablette ou smartphone dans votre réseau local.

ESP32 ESP8266 Serveur Web simple BMP388 Altimètre

Les lectures sont mises à jour automatiquement sur le serveur Web à l’aide d’événements envoyés par le serveur. Vous pouvez consulter le didacticiel sur les événements envoyés par le serveur pour avoir une idée de son fonctionnement.

Conclusion

Le BMP388 est un petit capteur de pression très précis qui permet d’estimer l’altitude avec une grande précision. Le capteur mesure également la température. Il est idéal pour la navigation extérieure/intérieure, les drones, les stations météorologiques et d’autres applications.

Vous avez appris à utiliser le capteur avec la carte de développement ESP32 et l’IDE Arduino dans ce didacticiel. Nous espérons que vous avez trouvé ce guide de démarrage utile. De plus, nous avons des guides pour d’autres capteurs populaires :

En savoir plus sur l’ESP32 avec nos ressources :

Merci d’avoir lu.

  • Pression baromètrique BMP280 + Capteur de température, Baromètre/Altimètre calibré, I2C, SPI pour Arduino et Raspberry Pi
    MESURES DE PRESSION BAROMETRIQUES - Mesurer la pression atmosphérique de 300 hPa à 1100 hPa, ce qui équivaut à une altitude de 9000 m à -500 m au-dessus du niveau de la mer avec le capteur BMP280 de Bosch. Il a une résolution élevée de 0,16 Pa. MESURES DE TEMPERATURE - La température peut être mesurée entre -40 °C et 85 °C avec une résolution de 0,01 °C et une précision de ± 1,0 °C. La fréquence de mesure est de 157 Hz et a été augmentée par rapport à son prédécesseur. CAPTEUR DE HAUTE PRECISION - Le capteur a déjà été calibré pour vous. Il suffit de le connecter à votre carte microcontrôleur et de commencer à mesurer sans courbes d'ajustement. En tant qu'altimètre, vous pouvez mesurer les changements d'altitude avec une précision de ±1 mètre. ACCES FACILE - La carte d'éclatement BMP280 peut facilement être utilisée avec n'importe quel microcontrôleur comme Arduino ou Raspberry Pi fonctionnant à une tension de fonctionnement de 1,8 V à 3,6 V. La communication entre le capteur et l'appareil se fait via I2C ou SPI. MISE A JOUR FACILE - Le capteur BMP280 de Bosch est le successeur des jeux de puces BMP085, BMP180 et BMP183. Passez maintenant au BMP280 pour bénéficier d'une précision et d'une précision accrues et d'un bruit de mesure réduit.