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. Dans ce didacticiel, vous apprendrez à utiliser l’altimètre/capteur de pression BMP388 avec la carte Arduino – schéma de câblage et exemple de croquis.

Dans ce tutoriel, nous couvrons :
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.

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

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.

BMP388 I2C
Pour utiliser le protocole de communication I2C, utilisez les broches suivantes (pour l’Arduino Uno, si vous utilisez un autre modèle, vérifiez ses broches I2C) :
| BMP388 | Arduino |
| IDS (SDA) | A4 |
| SCK (SCL) | A5 |
BMP388 SPI
Pour utiliser le protocole de communication SPI, utilisez les broches suivantes (pour l’Arduino Uno, si vous utilisez un autre modèle, vérifiez ses broches SPI) :
| BMP388 | Arduino |
| SCK | Broche 13 |
| IDS (MOSI) | Broche 11 |
| SDO (MISO) | Broche 12 |
| CS (Sélection de puce) | Broche 10 |
Pièces requises

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 !
Schéma – Arduino avec BMP388
Le BMP388 peut communiquer en utilisant les protocoles de communication I2C ou SPI.
Arduino avec BMP388 en utilisant I2C
Suivez le schéma suivant pour câbler le BMP388 à l’Arduino Uno à l’aide des broches I2C.

Arduino avec BMP388 en utilisant SPI
Alternativement, si vous souhaitez utiliser le protocole de communication SPI, suivez le schéma suivant pour câbler le BMP388 à l’Arduino Uno à l’aide des broches SPI.

Installation de la bibliothèque Adafruit BMP3XX
Il existe différentes librairies compatibles avec le capteur BMP388 et l’Arduino. 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.

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.

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. Le code suivant devrait se charger.
/***************************************************************************
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/arduino-bmp388/
#include <Wire.h>
#include <SPI.h>
#include <Adafruit_Sensor.h>
#include "Adafruit_BMP3XX.h"
#define BMP_SCK 13
#define BMP_MISO 12
#define BMP_MOSI 11
#define BMP_CS 10
#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);
}
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 ce site Web pour vérifier 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 13
#define BMP_MISO 12
#define BMP_MOSI 11
#define BMP_CS 10
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 I2C : A5 (SCL), A4 (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.

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.
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 Arduino dans ce tutoriel. 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 la carte Arduino avec nos ressources :
Merci d’avoir lu.
-
AZDelivery 5X GY-68 BMP180 Capteur Numérique pour Pression Barométrique, Température et l'Altitude. Compatible avec Arduino et Raspberry Pi incluant Un E-Book!
-
AZDelivery GY- BMP280 Capteur de Pression Barométrique, de Température et d'Altitude Compatible avec Arduino et Raspberry Pi incluant Un E-Book!

