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.
Programmation
La librairie utilisée peut être télécharger au bas de la page (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.
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.