BMP085-Utiliser

De MCHobby - Wiki
Sauter à la navigation Sauter à la recherche

Il faut utiliser beaucoup d'épouvantables opérations mathématiques déplaisantes pour utiliser ce senseur et calculer l'altitude ainsi que la pression barométrique. Vous pouvez consulter la fiche technique mais à vrai dire, ce n'est pas très intuitif ni très pédagogique - c'est juste la façon dont le senseur fonctionne.

Pour prendre en charge toute cette complexité mathématique, AdaFruit dispose d'une librairie Arduino. Vous pouvez télécharger cette librairie sur le Github d'AdaFruit

Pour installer la librairie:

  • Cliquez sur le bouton DOWNLOADS en haut à droite.
  • Renommez le répertoire décompressé en Adafruit_BMP085.
  • Vérifiez que le répertoire Adafruit_BMP085 contienne bien les fichiers Adafruit_BMP085.cpp et Adafruit_BMP085.h
  • Placez la librairie BMP085 dans le répertoire répetoire_des_sketch_arduino/libraries/.
    Vous pourriez avoir besoin de créer un sous répertoire libraries si c'est votre première librairie.
  • Redémarrez votre environnement Arduino IDE.

Maintenant, vous pouvez compiler et télécharger ce premier sketch d'exemple.

#include "Wire.h"
#include "Adafruit_BMP085.h"

Adafruit_BMP085 bmp;

void setup() {
    Serial.begin(9600);
    bmp.begin();
}

void loop() {
    Serial.print("Temperature = ");
    Serial.print(bmp.readTemperature());
    Serial.println(" *C");
    Serial.print("Pression = ");
    Serial.print(bmp.readPressure());
    Serial.println(" Pa");
    Serial.println();
    delay(500);
}

Ouvrez ensuite le moniteur série d'Arduino (sur le début de 9600 bauds).

Le sketch va continuellement afficher la température en °C et la pression en Pa (Pascals).

Vous pouvez tester les variations de mesure du senseur (en pression et température) en plaçant votre doigt au dessus du trou du senseur. La température et la pression augmenteront comme vous pouvez le constater ici:

{{{2}}}
Crédit: AdaFruit Industries www.adafruit.com

Mesure d'Altitude

Puisque nous savons que la pression chute lorsque l'altitude augmente (c'est pourquoi l'air est si ténu en haute altitude) nous pouvons calculer l'altitude actuelle a partir de la pression et de la température. Encore un fois, cela implique encore ces épouvantables opérations mathématiques, vous pouvez en apprendre plus sur ces calcul sur Wikipédia (anglais) (d'où provient le graphique).

{{{2}}}
Crédit: AdaFruit Industries www.adafruit.com
Source: Wikipedia

La librairie Arduino d'AdaFruit prend soin de tous ces aspects pour vous! Exécutez simplement le sketch qui retournera l'altitude actuelle à partir de la pression atmosphérique.

    #include "Wire.h"
    #include "Adafruit_BMP085.h"
    Adafruit_BMP085 bmp;
    void setup() {
    Serial.begin(9600);
    bmp.begin();
    }
    void loop() {
    Serial.print("Temperature = ");
    Serial.print(bmp.readTemperature());
    Serial.println(" *C");
    Serial.print("Pression = ");
    Serial.print(bmp.readPressure());
    Serial.println(" Pa");
    // Calculer l'altitude en considérant le pression 
    // barométrique 'standard' de 1013.25 millibar = 101325 Pascal
    Serial.print("Altitude = ");
    Serial.print(bmp.readAltitude());
    Serial.println(" metres");
    Serial.println();
    delay(500);
    }

Exécutez ce sketch et voyez l'altitude calculée.

{{{2}}}
Crédit: AdaFruit Industries www.adafruit.com

Par exemple: selon le senseur, nous somme actuellement à 21.5m sous le niveau de la mer.

Le seul problème c'est que nous savons pertinemment que nous ne sommes pas nous ne niveau de la mer!

Alors, quel est le problème avec le senseur? Aucun, le senseur fonctionne correctement. Le problème c'est que la pression au niveau de l'océan change en fonction des conditions climatiques.

Il faut donc 'normaliser' (normalize) le senseur, et lui faire savoir quel est la pression atmosphérique au niveau de la mer. Vous pouvez obtenir la pression barométrique au niveau de la mer sur beaucoup de site de prévision atmosphérique.

{{{2}}}
Crédit: AdaFruit Industries www.adafruit.com

Il existe malheureusement une demi-douzaine d'unités de pression différentes. Sur l'exemple cet exemple elle est exprimée en pouce (inches), c'est techniquement la hauteur de mercure exprimé en pouce (Mercury Inches or Hg Inches), en Europe il existe encore "millimètre de Mercure" (mmHg). Nous avons besoin de cette pression en Pascals, donc nous allons la convertir!

{{{2}}}
Crédit: AdaFruit Industries www.adafruit.com

Cela fait donc 101,964 Pascals. ouvrez le programme Examples->BMP085test dans Arduino IDE (depuis la barre de menu) et modifiez la ligne pour y passer en argument la pression actuelle au niveau de la mer. Nous aurons maintenant une évaluation correcte de l'altitude.

{{{2}}}
Crédit: AdaFruit Industries www.adafruit.com

Voila, il affichera maintenant l'altitude correcte! soit 30 mètres, ce qui est nettement mieux.

{{{2}}}
Crédit: AdaFruit Industries www.adafruit.com


Source: Bosch BMP085 Breakout Board réalisé par LadyAda pour AdaFruit Industries

Créé par LadyAda pour AdaFruit Indrustries.

Traduit avec l'autorisation d'AdaFruit Industries - Translated with the permission from Adafruit Industries - www.adafruit.com

Toute référence, mention ou extrait de cette traduction doit être explicitement accompagné du texte suivant : «  Traduction par MCHobby (www.MCHobby.be) - Vente de kit et composants » avec un lien vers la source (donc cette page) et ce quelque soit le média utilisé.

L'utilisation commercial de la traduction (texte) et/ou réalisation, même partielle, pourrait être soumis à redevance. Dans tous les cas de figures, vous devez également obtenir l'accord du(des) détenteur initial des droits. Celui de MC Hobby s'arrêtant au travail de traduction proprement dit.