Header Ads

Tutoriel BME280 - senseur de pression, température et humidité

Le BME280 est un senseur environnemental permettant de mesurer la pression, la température et l'humidité relative. Les Arduinistes intéressés par la météo et les changements climatiques apprécierons ce breakout très facile à mettre en oeuvre.
Voici une introduction à propos de la parution de notre tout dernier tutoriel.


Présentation du BME280
Breakout BME280 (ADA2652)


Bosch à intensifié son travail sur ses senseurs pour nous offrir le BME280, un senseur environnemental pour mesurer la température, la pression barométrique et l'humidité! Ce senseur sera idéal pour réaliser des petites stations météo ou sensibles à l'environnement. Le meilleur pour la fin, il peut  être utilisé en I2C et en SPI!
Breakout BME280 (ADA2652)

Ce senseur de précision Bosch est la meilleure solution de capteur "low-cost" mesurant l'humidité avec une précision ±3%, pression barométrique avec précision absolue de ±1 hPa, et de température avec une précision de ±1.0°C. Etant donné que la pression change avec l'altitude, et que la mesure de pression est tellement bonne, que vous pouvez également utiliser ce senseur comme altimètre avec une précision de ±1 mètre (ou mieux)!

Le BME280 fait partie de la prochaine génération de senseurs Bosch et représente l'évolution du BMP085/BMP180/BMP183 - avec un bruit réduit sur l'altimètre (de 0.25m) avec un temps de conversion toujours aussi rapide. Il dispose des mêmes spécifications, mais peut utiliser soit I2C ou SPI. Si vous voulez une option "raccordement simples", optez pour I2C. Si vous avez besoin de brancher de nombreux senseur sans vous inquiété des collisions d'adresse I2C alors optez pour le raccordement en SPI.

Raccordement en I2C
JLe montage ci-dessous présente l'utilisation sur senseur sur un bus I2C (n'hésitez pas à utiliser les broches A4=SDA et A5=SCL).
Voir: le tutoriel MCHobby
Il existe également une possibilité de raccordement en SPI que vous pouvez consulter dans notre tutoriel.
 
Programme de test
Après installation de la bibliothèque Adafruit (voyez le tutoriel pour plus de détail), vous pourrez démarrer le programme de test disponible dans la bibliothèque.
Nous avons repris le contenu de ce programme ci-dessous et traduit les commentaires (et texte) pour en faciliter la compréhension.

/***************************************************************************
  Voici un programme de test pour BME280 senseur d'humidité, température
  et pression.
  Spécialement conçu pour fonctionner avec le breakout BME280 d'Adafruit
  ----> http://www.adafruit.com/products/2650
  ----> http://shop.mchobby.be/product.php?id_product=684
  Ce senseur utilise I2C ou SPI pour communiquer, 2 ou 4 broches sont
  nécessaire pour s'interfacer.
  Adafruit investit du temps et des ressource pour offrir ce code en 
  open source,
  Offrez votre support pour Adafruit et matériel open-source en achetant un 
  produit Adafruit!
  Ecrit par Limor Fried & Kevin Townsend pour Adafruit Industries.
  BSD license, all text above must be included in any redistribution
 ***************************************************************************
  Traduit par Meurisse D. -(shop.mchobby.be)- Translated by Meurisse D.
 ***************************************************************************/

#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

// Pression au niveau de la mer
#define SEALEVELPRESSURE_HPA (1013.25)

Adafruit_BME280 bme; // en I2C

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

  if (!bme.begin()) {
    Serial.println("Ne peut pas trouver le senseur BME280, vérifiez votre câblage!");
    while (1);
  }
}

void loop() {
    Serial.print("Temperature = ");
    Serial.print(bme.readTemperature());
    Serial.println(" *C");

    Serial.print("Pression = ");

    Serial.print(bme.readPressure() / 100.0F);
    Serial.println(" hPa");

    Serial.print("Altitude Approx. = ");
    Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA));
    Serial.println(" metres");

    Serial.print("Humidité = ");
    Serial.print(bme.readHumidity());
    Serial.println(" %");

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

La suite du tutoriel

Ou acheter