Différences entre versions de « Arduino BMP280 »

De The Linux Craftsman
Aller à la navigation Aller à la recherche
Ligne 46 : Ligne 46 :
 
#include <Adafruit_Sensor.h>
 
#include <Adafruit_Sensor.h>
 
#include <Adafruit_BMP280.h>
 
#include <Adafruit_BMP280.h>
 
+
 
Adafruit_BMP280 bmp; // I2C
 
Adafruit_BMP280 bmp; // I2C
 
+
 
//Variables
 
//Variables
 
float pressure;    //Pour stocker la pression (Pa)
 
float pressure;    //Pour stocker la pression (Pa)
 
float temperature;  //Pour stocker la température (oC)
 
float temperature;  //Pour stocker la température (oC)
 
int altimeter;    //Pour stocker l'altitude (m)
 
int altimeter;    //Pour stocker l'altitude (m)
 
+
 
void setup() {
 
void setup() {
 
   Serial.begin(9600);
 
   Serial.begin(9600);
Ligne 59 : Ligne 59 :
 
   Serial.println(F("Reading BMP280 : "));
 
   Serial.println(F("Reading BMP280 : "));
 
}
 
}
 
+
 
void loop() {
 
void loop() {
 
   //Lecture des valeurs du capteur
 
   //Lecture des valeurs du capteur
Ligne 65 : Ligne 65 :
 
   temperature = bmp.readTemperature();
 
   temperature = bmp.readTemperature();
 
   altimeter = bmp.readAltitude (1020); //changez en fonction de la pression barométrique de votre ville (http://www.meteociel.fr/observations-meteo/pression.php)  
 
   altimeter = bmp.readAltitude (1020); //changez en fonction de la pression barométrique de votre ville (http://www.meteociel.fr/observations-meteo/pression.php)  
   Serial.print(F("Pressure: "));
+
   Serial.print(F("Pressure (Pa / mB): "));
 
   Serial.print(pressure);
 
   Serial.print(pressure);
   Serial.print(F(" Pa\t"));
+
   Serial.print(F(" Pa / "));
   Serial.print(F("Temp: "));
+
  Serial.print(pressure/100);
 +
  Serial.println(F(" mB"));
 +
   Serial.print(F("Temperature: "));
 
   Serial.print(temperature);
 
   Serial.print(temperature);
   Serial.print(F(" C\t"));
+
   Serial.println(F(" °C\t"));
   Serial.print(F("Altimeter: "));
+
   Serial.print(F("Altitude: "));
 
   Serial.print(altimeter);
 
   Serial.print(altimeter);
 
   Serial.println(F(" m"));
 
   Serial.println(F(" m"));
 +
  Serial.println(F("/***************************/"));
 
   delay(5000);
 
   delay(5000);
 
}
 
}
 
</source>
 
</source>
 +
== Résultat ==
 +
Voila le résultat :
 +
[[Fichier:Arduino_BMP280_reading_serial.png.png|centré|400px]]
 +
On voit clairement les variations d'altitudes lorsque l'on bouge le BMP280.

Version du 9 novembre 2016 à 20:04

Partie électronique

Le composant

Le BMP280 est monté sur une platine et dans le cas présent il s'agit de la version GY du BMP280.

BMP280 mounted.jpg

Ce composant utilise le protocole I2C pour communiquer.

Le montage

Le montage suivant prévoit deux fils pour utiliser le protocole I2C, en plus des fils pour l'alimentation.

BMP280 diagram.jpg

Partie logicielle

Import des librairies

Avant de continuer, il faut importer la librairie nécessaire à l'utilisation du BMP280, une librairie pour les capteurs Adafruit et normalement, celle pour le protocole I2C est déjà installée.

Arduino IDE I2C install.png
Arduino IDE BMP280 install.png
Arduino IDE ADAFRUIT SENSOR install.png
Librairie I2C Librairie BMP280 Librairie capteur Adafruit

Modification de la librairie Adafruit

La librairie Adafruit gère la version classique du BMP280 qui utilise l'adresse I2C 0x77. Dans la version GY cette adresse doit être modifiée et prend la valeur 0x76 à la place.

Les librairies se trouve dans le répertoire Arduino de votre dossier Mes Documents, repérez la ligne suivante :

/*=========================================================================
    I2C ADDRESS/BITS
    -----------------------------------------------------------------------*/
    #define BMP280_ADDRESS                (0x77)
/*=========================================================================*/

Modifiez la comme suit :

/*=========================================================================
    I2C ADDRESS/BITS
    -----------------------------------------------------------------------*/
    #define BMP280_ADDRESS                (0x76)
/*=========================================================================*/

Récupérer la température

Un exemple de code qui permet de récupérer la température, la pression et l'altitude:

#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP280.h>
 
Adafruit_BMP280 bmp; // I2C
 
//Variables
float pressure;    //Pour stocker la pression (Pa)
float temperature;  //Pour stocker la température (oC)
int altimeter;    //Pour stocker l'altitude (m)
 
void setup() {
  Serial.begin(9600);
  bmp.begin(); //Connexion au capteur
  Serial.println(F("Reading BMP280 : "));
}
 
void loop() {
  //Lecture des valeurs du capteur
  pressure = bmp.readPressure();
  temperature = bmp.readTemperature();
  altimeter = bmp.readAltitude (1020); //changez en fonction de la pression barométrique de votre ville (http://www.meteociel.fr/observations-meteo/pression.php) 
  Serial.print(F("Pressure (Pa / mB): "));
  Serial.print(pressure);
  Serial.print(F(" Pa / "));
  Serial.print(pressure/100);
  Serial.println(F(" mB"));
  Serial.print(F("Temperature: "));
  Serial.print(temperature);
  Serial.println(F(" °C\t"));
  Serial.print(F("Altitude: "));
  Serial.print(altimeter);
  Serial.println(F(" m"));
  Serial.println(F("/***************************/"));
  delay(5000);
}

Résultat

Voila le résultat :

Arduino BMP280 reading serial.png.png

On voit clairement les variations d'altitudes lorsque l'on bouge le BMP280.