Pression atmosphérique

Le capteur BMP180 nous permet de mesurer la pression atmosphérique et la température ambiante. De plus, la librairie nécessaire à son utilisation calcule l’altitude également.

Note: Ce calcul n’est pas très pertinent pour une station météo (qui ne bouge pas), car la pression atmosphérique varie continuellement. Donc le calcul n’est bon que pour une courte période de temps après avoir inséré la valeur de pression atmosphérique de votre localité.

Montage

ATTENTION! Le capteur fonctionne sur le 3,3V, NE PAS brancher sur le 5V!

Voici les connexions à réaliser.

Capteur Carte UNO
VIN 3,3V
GND GND
SCL SCL ou A5
SDA SDA ou A4

À noter que l’on peut connecter les broches SCL et SDA à deux endroits différents sur la carte.

baro_1

baro_2

Programmation

La librairie utilisée est celle-ci (trouvée ici. Il en existe d’autres, à vous de voir).

Le code de base pour lire la pression, l’altitude et la température est le suivant (code présent dans le répertoire «BMP180_Example» du fichier compressé de la librairie ci-haut) :

#include <Wire.h> //Permet la communication I2C https://www.arduino.cc/en/Reference/Wire
#include <BMP180.h> //librairie pour le capteur

// création objet
BMP180 barometer;
// Utilisation du LED sur la carte pour indiquer si capteur OK
int indicatorLed = 13;

// Pression atmosphérique au niveau de la mer, voir météo locale pour cette donnée
float seaLevelPressure = 102100;

void setup()
{
 // Démarrage de la communication avec le moniteur série
 Serial.begin(9600);
 // Démarrage de la communication I2C avec le capteur
 Wire.begin();
 // initialisation de la DEL.
 pinMode(indicatorLed, OUTPUT);
 // on démarre la fonction
 barometer = BMP180();
 // vérification si le capteur est présent et fonctionnel
 if(barometer.EnsureConnected())
 {
 Serial.println("Connexion au BMP180 OK."); // Envoyer sur le moniteur série
 digitalWrite(indicatorLed, HIGH); // Allumer la DEL
 
 // Lorsque connecté, on réinitialise (reset) le capteur
 barometer.SoftReset();
 // On initialise le capteur
 barometer.Initialize();
 }
 else
 { 
 Serial.println("Pas de capteur.");
 digitalWrite(indicatorLed, LOW); // Ferme la DEL
 }
}

void loop()
{
 if(barometer.IsConnected)
 {
 // Mesure de la pression en Pascal.
 long currentPressure = barometer.GetPressure();
 
 // Envoyer la pression au moniteur série
 Serial.print("Pression: ");
 Serial.print(currentPressure);
 Serial.print(" Pa");
 
 // Caclule de l'altitude (en mètre), nécessite la pression au niveau de la mer de votre position
 float altitude = barometer.GetAltitude(seaLevelPressure);
 
 // Envoyer l'altitude au moniteur série
 Serial.print("\tAltitude: ");
 Serial.print(altitude);
 Serial.print(" m");
 
 // Mesurer la température (°C)
 float currentTemperature = barometer.GetTemperature();
 
 // Envoyer la température au moniteur série
 Serial.print("\tTempérature: ");
 Serial.print(currentTemperature);
 Serial.print("°C");
 
 Serial.println(); // Démarrer une nouvelle ligne.
 delay(1000); // Attendre 1 s avant prochaine lecture.
 }
}

Vérifier les données

Des données de notre position.

baro_donnees.resized

Le site http://fr-ca.topographic-map.com/ permet d’avoir l’altitude de votre position. Vous pourrez alors vérifier si les calculs de l’altitude sont corrects.

Des applications mobiles peuvent vous aider à valider les données recueillies (baromètre, altitude) par votre montage.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *