Guide du capteur BME280 avec Arduino (pression, température, humidité)

Guide du capteur BME280 avec Arduino (pression, température, humidité)

Ce guide montre comment utiliser le module de capteur BME280 avec Arduino pour lire la pression, la température, l’humidité et estimer l’altitude. Nous vous montrerons comment câbler le capteur, installer les bibliothèques requises et rédiger un croquis simple pour afficher les lectures du capteur.

Guide du capteur BME280 avec pression, température et humidité Arduino

Vous aimerez peut-être aussi lire d’autres guides du BME280 :

Présentation du module de capteur BME280

le Capteur BME280 module lit la pression barométrique, la température et l’humidité. Étant donné que la pression change avec l’altitude, vous pouvez également estimer l’altitude. Il existe plusieurs versions de ce module capteur. Le capteur BME280 utilise le protocole de communication I2C ou SPI pour échanger des données avec un microcontrôleur.

Nous utilisons le module illustré dans la figure ci-dessous.

Le module de capteur BME280 lit la pression, la température et l'humidité

Ce capteur communique en utilisant le protocole de communication I2C, le câblage est donc très simple. Vous connectez le capteur BME280 aux broches Arduino Uno I2C comme indiqué dans le tableau ci-dessous :

BME280 Arduino
Vin 5V
GND GND
SCL A5
SDA A4

Il existe d’autres versions de ce capteur qui peuvent utiliser les protocoles de communication SPI ou I2C, comme le module illustré dans la figure suivante :

BME280 avec SPI et I2C

Si vous utilisez l’un de ces capteurs, pour utiliser le protocole de communication I2C, utilisez les broches suivantes :

BME280 Arduino
SCK (Broche SCL) A5
SDI (broche SDA) A4

Si vous utilisez le protocole de communication SPI, vous devez utiliser les broches suivantes :

BME280 Arduino
SCK (horloge SPI) Broche 13
SDO (MISO) Broche 12
SDI (MOSI) Broche 11
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 !

1641322085 982 Guide du capteur BME280 avec Arduino pression temperature humidite

Schématique

Câblez le capteur BME280 à votre carte Arduino comme indiqué dans le schéma suivant.

Schéma de câblage Arduino BME280

Installation de la bibliothèque BME280

Pour obtenir des lectures du module de capteur BME280, vous devez utiliser le Bibliothèque Adafruit_BME280. 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 bme280  » dans la zone de recherche et installez la bibliothèque.

Installation de la bibliothèque BME280 dans Arduino IDE

Installation de la bibliothèque Adafruit_Sensor

Pour utiliser la bibliothèque BME280, 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 Adafruit Unified Sensor

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

Lecture de la pression, de la température et de l’humidité

Pour lire la pression, la température et l’humidité, nous utiliserons un exemple de croquis de la bibliothèque.

Arduino BME280 Guide Lecture Croquis de la température, de l'humidité et de la pression

Après avoir installé la bibliothèque BME280 et la bibliothèque Adafruit_Sensor, ouvrez l’IDE Arduino et accédez à Déposer > Exemples > Bibliothèque Adafruit BME280 > test bme280.

/*
 * Complete Project Details https://www.raspberryme.com
*/

#include <Wire.h>
#include <SPI.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>

#define BME_SCK 13
#define BME_MISO 12
#define BME_MOSI 11
#define BME_CS 10

#define SEALEVELPRESSURE_HPA (1013.25)

Adafruit_BME280 bme; // I2C
//Adafruit_BME280 bme(BME_CS); // hardware SPI
//Adafruit_BME280 bme(BME_CS, BME_MOSI, BME_MISO, BME_SCK); // software SPI

unsigned long delayTime;

void setup() {
  Serial.begin(9600);
  Serial.println(F("BME280 test"));

  bool status;
  
  // default settings
  // (you can also pass in a Wire library object like &Wire2)
  status = bme.begin();  
  if (!status) {
    Serial.println("Could not find a valid BME280 sensor, check wiring!");
    while (1);
  }
  
  Serial.println("-- Default Test --");
  delayTime = 1000;

  Serial.println();
}


void loop() { 
  printValues();
  delay(delayTime);
}


void printValues() {
  Serial.print("Temperature = ");
  Serial.print(bme.readTemperature());
  Serial.println(" *C");
  
  // Convert temperature to Fahrenheit
  /*Serial.print("Temperature = ");
  Serial.print(1.8 * bme.readTemperature() + 32);
  Serial.println(" *F");*/
  
  Serial.print("Pressure = ");
  Serial.print(bme.readPressure() / 100.0F);
  Serial.println(" hPa");
  
  Serial.print("Approx. Altitude = ");
  Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA));
  Serial.println(" m");
  
  Serial.print("Humidity = ");
  Serial.print(bme.readHumidity());
  Serial.println(" %");
  
  Serial.println();
}

Afficher le code brut

Comment fonctionne le code

Continuez à lire cette section pour savoir comment fonctionne le code, ou passez à la section « Démonstration ».

Bibliothèques

Le code commence par inclure les bibliothèques nécessaires : le fil bibliothèque pour utiliser I2C, et la Adafruit_Sensor et Adafruit_BME280 bibliothèques pour s’interfacer avec le capteur BME280.

#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>

Communication SPI

Comme nous allons utiliser la communication I2C, les lignes suivantes qui définissent les broches SPI sont commentées :

/*#define BME_SCK 13
#define BME_MISO 12
#define BME_MOSI 11
#define BME_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 plus précis, remplacez la valeur par la pression actuelle au niveau de la mer à votre emplacement.

I2C

Cet exemple utilise le protocole de communication I2C par défaut. Comme vous pouvez le voir, il vous suffit de créer un Adafruit_BME280 objet appelé bme.

Adafruit_BME280 bme; // I2C

Pour utiliser SPI, vous devez commenter cette ligne précédente et décommenter l’une des lignes suivantes.

//Adafruit_BME280 bme(BME_CS); // hardware SPI
//Adafruit_BME280 bme(BME_CS, BME_MOSI, BME_MISO, BME_SCK); // software SPI

mettre en place()

Dans le mettre en place(), démarrez une communication série :

Serial.begin(9600);

Et le capteur est initialisé :

status = bme.begin(); 
if (!status) {
  Serial.println("Could not find a valid BME280 sensor, check wiring!");
  while (1);
}

Noter: lors du test du capteur, si vous ne pouvez obtenir aucune lecture du capteur, vous devrez peut-être trouver l’adresse I2C de votre capteur BME280. Avec le BME280 câblé à votre Arduino, exécutez ce croquis de scanner I2C pour vérifier l’adresse de votre capteur. Ensuite, transmettez l’adresse au commencer() méthode.

Valeurs d’impression

Dans le boucler(), la printValues() La fonction lit les valeurs du BME280 et imprime les résultats dans le moniteur série.

void loop() { 
  printValues();
  delay(delayTime);
}

La lecture de la température, de l’humidité, de la pression et de l’altitude estimée est aussi simple que d’utiliser les méthodes suivantes sur le bme objet:

  • bme.readTemperature() – lit la température en degrés Celsius ;
  • bme.readHumidity() – lit l’humidité absolue;
  • bme.readPressure() – lit la pression en hPa (hectoPascal = millibar) ;
  • bme.readAltitude(SEALEVELPRESSURE_HPA) – estime l’altitude en mètres en fonction de la pression au niveau de la mer.

Manifestation

Arduino BME280 Lire le croquis de la température, de l'humidité et de la pression

Téléchargez le code sur votre carte Arduino.

Télécharger Arduino Sketch pour le capteur BME280

Ouvrez le moniteur série à un débit en bauds de 9600.

Télécharger Arduino Sketch pour le capteur BME280

Vous devriez voir les lectures affichées sur le moniteur série.

Arduino Sketch pour moniteur série de démonstration du capteur BME280

Conclusion

Le BME280 offre un moyen simple et peu coûteux d’obtenir des lectures de pression, de température et d’humidité. Le capteur communique via le protocole de communication I2C, ce qui signifie que le câblage est très simple, il vous suffit de connecter le capteur aux broches Arduino I2C.

L’écriture du code pour obtenir les lectures des capteurs est également très simple grâce à la bibliothèque BME280_Adafruit. Il vous suffit d’utiliser le lireTempérature(), readHumidity() et readPressure() méthodes. Vous pouvez également estimer l’altitude à l’aide du lireAltitude() méthode.

Nous avons des guides pour d’autres capteurs et modules avec l’Arduino que vous pourriez trouver utiles :

Si vous souhaitez en savoir plus sur Arduino, consultez nos ressources :

Merci d’avoir lu.

  • BME-280 Lot de 2 capteurs barométriques pour température, humidité APKLVSR et pression atmosphérique, module IIC I2C 5 V, compatible avec Arduino et Ras-pberry Pi
  • Hailege BME280 Capteur de pression atmosphérique Capteur de température d’humidité Breakout Haute précision pour Arduino