Accueil > ARDUINO > Capteurs > Arduino & BME280 (BMP280) : Mesure de température, pression et humidité (...)

Arduino & BME280 (BMP280) : Mesure de température, pression et humidité relative

vendredi 4 novembre 2016, par thebault

Caractéristiques du capteur

JPEG - 99.3 ko

Remarque  : dans la suite, nous allons utiliser le bus I2C pour communiquer avec le capteur.

Rôle des broches.

Broche fonction
Vcc alimentation ( 3.6V max)
GND masse
SDI Données. A relier à SDA dans le cas du bus I2C
SCK Horloge (clock). A relier à SCL dans le cas du bus I2C
CSB permet de passer du mode SPI au mode I2C. Par défaut, CSB=1 donc mode I2C. Si CSB=0 au démarrage, alors le mode SPI est utilisé
SD0 choix de l’adresse I2C. Si SD0=0, alors l’adresse est 0x76, si SD0=1, alors l’adresse est 0x77

Branchements

La broche SD0 permet de fixer l’adresse sur le bus I2C. Dans ce cas, SD0 est relié à GND, ce qui correspond à l’adresse 0x76 du capteur.

JPEG - 320.1 ko

Installer la bibliothèque SparkFunBME280

J’ai utilisé la bibliothèque de Marshall Taylor de SparkFun Electronics sous Licence MIT.
https://github.com/sparkfun/SparkFun_BME280_Arduino_Library

Pour l’installer, il faut décompresser le fichier suivant dans ..Arduino/libraries/

Zip - 7.2 ko
SparkFunBME280.zip

Programme Arduino

Le programme suivant va permettre de lire les 3 grandeurs physiques Température, Pression et humidité relative et les afficher sur le moniteur série.

La configuration du capteur

Le capteur dispose de plusieurs paramètres de configuration (dans la boucle "void setup" ). Il faut se référer à la documentation du BME280 pour avoir les details de fonctionnement.

  • capteur.settings.commInterface = ..
capteur.settings.commInterface = I2C_MODE communication sur bus I2C
capteur.settings.commInterface = SPI_MODE communication sur bus SPI
  • capteur.settings.I2CAddress = ...
capteur.settings.I2CAddress = 0x76 adresse du capteur si SD0=0
capteur.settings.I2CAddress = 0x77 adresse du capteur si SD0=1
  • capteur.settings.runMode = ...
capteur.settings.runMode = 0 mode "sleep"
capteur.settings.runMode = 1 ou 2 mode "forced".Lorsque une mesure est effectuée, le capteur retourne en mode "sleep". Pour réaliser une autre mesure, il faut activer à nouveau le mode "Forced".
capteur.settings.runMode = 3 mode "Normal". Le capteur passe en mode "sleep" entre 2 mesures. Permet d’économiser la consommation
  • capteur.settings.tStandby = ...
capteur.settings.tStandby = 0 durée du standby entre 2 mesures 0.5ms
capteur.settings.tStandby = 1 durée du standby entre 2 mesures 62.5ms
capteur.settings.tStandby = 2 durée du standby entre 2 mesures 125ms
capteur.settings.tStandby = 3 durée du standby entre 2 mesures 250ms
capteur.settings.tStandby = 4 durée du standby entre 2 mesures 500ms
capteur.settings.tStandby = 5 durée du standby entre 2 mesures 1000ms
capteur.settings.tStandby = 6 durée du standby entre 2 mesures 10ms
capteur.settings.tStandby = 7 durée du standby entre 2 mesures 20ms
  • capteur.settings.filter = ... (permet de filtrer et supprimer les variations brusques (courant d’air ...))
capteur.settings.filter = 0 pas de filtrage
capteur.settings.filter = 1 coefficient de filtrage 2
capteur.settings.filter = 2 coefficient de filtrage 4
capteur.settings.filter = 3 coefficient de filtrage 8
capteur.settings.filter = 4 coefficient de filtrage 16
  • capteur.settings.tempOverSample = ...
capteur.settings.tempOverSample=0 pas de mesure de la température.
capteur.settings.tempOverSample=1 sur-échantillonnage x1. Résolution : 16 bit / 0.0050°C
capteur.settings.tempOverSample=2 sur-échantillonnage x2. Résolution : 17 bit / 0.0025°C
capteur.settings.tempOverSample=3 sur-échantillonnage x4. Résolution : 18 bit / 0.0012°C
capteur.settings.tempOverSample=4 sur-échantillonnage x8. Résolution : 19 bit / 0.0006°C
capteur.settings.tempOverSample=5 sur-échantillonnage x16. Résolution : 20 bit / 0.0003°C
  • capteur.settings.pressOverSample =...
capteur.settings.pressOverSample =0 pas de mesure de pression
capteur.settings.pressOverSample =1 sur-échantillonnage x 1. Résolution 16 bit / 2.62 Pa
capteur.settings.pressOverSample =2 sur-échantillonnage x 2. Résolution 17 bit / 1.31 Pa
capteur.settings.pressOverSample =3 sur-échantillonnage x 4. Résolution 18 bit / 0.66 Pa
capteur.settings.pressOverSample =4 sur-échantillonnage x 8. Résolution 19 bit / 0.33 Pa
capteur.settings.pressOverSample =5 sur-échantillonnage x 16. Résolution 20 bit / 0.16 Pa
  • capteur.settings.humidOverSample = ...
capteur.settings.humidOverSample =0 pas de mesure d’humidité
capteur.settings.humidOverSample =1 sur-échantillonnage x 1.
capteur.settings.humidOverSample =2 sur-échantillonnage x 2.
capteur.settings.humidOverSample =3 sur-échantillonnage x 4.
capteur.settings.humidOverSample =4 sur-échantillonnage x 8.
capteur.settings.humidOverSample =5 sur-échantillonnage x 16.

Le programme :

  1. #include "SparkFunBME280.h"
  2. //Library allows either I2C or SPI, so include both.
  3. #include "Wire.h"
  4. #include "SPI.h"
  5.  
  6. BME280 capteur;
  7.  
  8. void setup() {
  9.  
  10. Serial.begin(9600);
  11. while (!Serial) {
  12. // Attente de l'ouverture du port série pour Arduino LEONARDO
  13. }
  14. //configuration du capteur
  15. capteur.settings.commInterface = I2C_MODE;
  16. capteur.settings.I2CAddress = 0x76;
  17. capteur.settings.runMode = 3;
  18. capteur.settings.tStandby = 0;
  19. capteur.settings.filter = 0;
  20. capteur.settings.tempOverSample = 1 ;
  21. capteur.settings.pressOverSample = 1;
  22. capteur.settings.humidOverSample = 1;
  23.  
  24. Serial.println("Starting BME280... ");
  25. delay(10); // attente de la mise en route du capteur. 2 ms minimum
  26. // chargement de la configuration du capteur
  27. capteur.begin();
  28. }
  29.  
  30. void loop() {
  31. Serial.print("Température: ");
  32. Serial.print(capteur.readTempC(), 2);
  33. Serial.print(" °C");
  34. Serial.print("\t Pression: ");
  35. Serial.print(capteur.readFloatPressure(), 2);
  36. Serial.print(" Pa");
  37. Serial.print("\t humidité relative : ");
  38. Serial.print(capteur.readFloatHumidity(), 2);
  39. Serial.println(" %");
  40. delay(1000);
  41. }

Télécharger

Si on ouvre le "Moniteur série", on obtient :

JPEG - 183.4 ko
SPIP | | Plan du site | Suivre la vie du site RSS 2.0
Habillage visuel © digitalnature sous Licence GPL