BME280-Brancher

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

préambule

Vous pouvez facilement brancher ce breakout sur votre microcontrôleur. Nous allons utiliser un Arduino dans ce tutoriel.

Pour tous les autres microcontrôleur il sera possible d'utiliser le bus I2C -OU- si vous disposez de 4 broches disponibles alors vous pourrez utiliser un 'bit-bang SPI' (SPI logiciel). Ceci dit, le bus SPI est généralement supporté matériellement par toutes les plateformes microcontrôleur. Prenez le temps de consulter la bibliothèque avant de faire un portage du code pour votre microcontrôleur.

Brancher en I2C

Utilisez ce raccordement si vous désirez utiliser le bus I2C

  • Connecter Vin sur la source d'alimentation. De 3 à 5V est parfait. Utiliser le même tension que la logique de votre microcontrôleur. La plupart des Arduino utilisent du 5V
  • Connecter GND sur la masse commune.
  • Connecter la broche SCK sur la broche SCL du bus I2C de votre Arduino. Cette broche est également connue comme A5 sur un UNO et Arduino compatible à base de '328. Sur un Arduino Mega, il s'agit de la broche digitale 21. Sur un Arduino Leonardo/Micro, il s'agit de la broche digitale 3
  • Connecter la broche SDI sur la broche SDA du bus I2C de votre Arduino. Cette broche est également connue comme A4 sur un Arduino Uno et Arduino compatible à base de '328. Sur un Arduino Mega, il s'agit de la broche digitale 20. Sur un Arduino Leonardo/Micro, il s'agit de la broche digitale 2

L'adresse I2C par défaut est 0x77. L'adresse I2C passe à 0x76 si vous placez un fil raccordant SDO à la masse/GND.

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

Brancher en SPI

Ce senseur supporte également le bus SPI, nous pouvons donc l'utiliser sur un bus SPI matériel ou logiciel (aussi appelé "Bit-Bang SPI"). Nous allons commencer par un raccordement SPI Logiciel car le raccordement est identique avec tous les Arduino. Les broches suivantes doivent être utilisées:

  • Connectez Vin sur l'alimentation de votre microcontrôleur, 3V ou 5V est parfait. Utilisez le même tension que celle utilisée par la logique de votre microcontrôleur. La plupart des Arduino fonctionnent sous 5V.
  • Connectez GND sur la masse commune
  • Connectez SCK sur la broche digitale #13 (mais n'importe quelle broche pourra être utilisée par la suite)
  • Connectez SDO sur la broche digitale #12 (commentaire identique)
  • Connectez SDI sur la broche digitale #11 (commentaire identique)
  • Connectez CS sur la broche digitale #10 (commentaire identique)

Plus tard, une fois que cela fonctionnera, vous pourrez utiliser une bibliothèque SPI matérielle ou changer les broches à votre guise.

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

Télécharger la bibliothèque

Vous aurez besoin de télécharger et installer la bibliothèque Adafruit_BME280 depuis le dépôt GitHub avant de commencer à lire les données du senseur. Vous pouvez le faire en visitant le dépôt GitHub et en téléchargeant manuellement la bibliothèque -OU- plus simplement en téléchargeant le fichier Zip en cliquant sur le bouton ci-dessous.

Download-icon.pngTéléchargez la bibliothèque BME280

L'archive ZIP contient un répertoire. Renommez ce répertoire Adafruit_BME280. Vérifiez que le répertoire Adafruit_BME280 contient les fichier Adafruit_BME280.cpp et Adafruit_BME280.h

Placez le répertoire de la bibliothèque Adafruit_BME280 dans le répertoire répertoire_des_Sketch_Croquis_arduino/libraries/.

Vous pourriez avoir besoin de créer le sous répertoire "libraries" si c'est la première fois que vous installez une bibliothèque. Redémarrez votre Arduino IDE.

Nous disposons également d'un tutoriel sur l'installation des bibliothèques Arduino

Charger la démo

Maintenant que la bibliothèque Adafruit_BME280 est installée, nous pouvons ouvrir le programme de test du BME280.

Ouvrez le fichier Fichier->Exemples->Adafruit_BME280->bmp280test, compilez le et téléversez le sur votre Arduino raccordé au senseur.

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

En fonction du raccordement utilisant I2C ou SPI, changez les noms des broches en commentant/décommentant les lignes suivantes.

#define BME_SCK 13
#define BME_MISO 12
#define BME_MOSI 11 
#define BME_CS 10

Adafruit_BME280 bme; // I2C
//Adafruit_BME280 bme(BME_CS); // SPI materiel
//Adafruit_BME280 bme(BME_CS, BME_MOSI, BME_MISO,  BME_SCK);

Une fois téléchargé sur votre Arduino, ouvrez la console série à la vitesse de 9600 baud afin de voir l'affichage des données.

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

La Température est calculée en degrés Celsius. Il est possible de la convertir en degrés Fahrenheit en utilisant l'équation F = C * 9/5 + 32 .

La Pression est retournée en Pascals (une unité du Système International). 100 Pascals = 1 hPa = 1 millibar. La pression barométrique est souvent exprimée en millibar ou mm de mercury. Sachez que 1 pascal =0.00750062 mm de mercure.

Vous pouvez également calculer l'altitude. Cependant, vous pouvez seulement faire de bonne mesure d'altitude si vous connaissez la pression du jour au niveau de la mer (hPa)!. Le senseur est vraiment précis mais si vous n'avez pas de donnée à jour (celle de la pression au niveau de la mer) alors il sera difficile d'avoir une valeur précise à moins de 10 mètres.

La pression PNM

Les stations météo professionnelles affichent des pressions dites "PNM" (PNM: Pression Niveau Mer ou SLP: Sea Level Pressure).

Il est utile de savoir ce que c'est et comment calculer une telle pression.

Pression-PNM.jpg

Voyez cette section de notre autre tutoriel détaillant le principe et le calcul avec un BMP180 (un autre senseur de pression).

Référence de la bibliothèque

Vous pouvez commencer par créer un objet BME280, avec par exemple l'utilisation d'un bus SPI logiciel (où il est raccordé à 4 broches I/O) en utilisant

Adafruit_BME280 bme(BME_CS, BME_MOSI, BME_MISO,  BME_SCK);

Ou vous pouvez utiliser le bus SPI matériel. Avec le bus SPI matériel vous devez utiliser le bus matériel de votre Arduino - et chaque type d'Arduino utilise des broches différentes pour son but SPI matériel! Voyez les informations de référence de votre modèle d'Arduino pour connaître les broches ddu bus SPI.

Dans ce cas, vous pouvez utiliser la broche CS de votre chaois (mais les trois autres broches sont fixées).

Adafruit_BME280 bme(BME_CS); // SPI materiel

Ou le bus I2C materiel, aucune broche est assignée.

Adafruit_BME280 bme; // I2C

Une fois démarré, vous pouvez initialiser le senseur avec

  if (!bme.begin()) {  
    Serial.println("Impossible de trouver un senseur BME280, verifier vos raccordements!");
    while (1);
  }

begin() retourne True si le senseur à été trouvé et False si ce n'est pas le cas. Si vous obtenez la valeur False, il faut alors vérifier vos raccordements!

La lecture de la température, de l'humidité et la pression est facile. Appelez simplement les fonctions suivantes:

bme.readTemperature() # lecture de la temperature
bme.readPressure() # lecture de la pression 
bme.readHumidity() # lecture de l humidite

La température est toujours une valeur en virgule flottante, exprimée en degrés Centigrade. La pression est un entier 32 bit (de 0 à 2,147,483,647) avec la pression exprimé en Pascal. Avec un mbar = 100 Pascal, vous pourrez facilement convertir la pression en mbar en divisant la valeur par 100.

Si vous désirez obtenir une pressions correspondant à la pression PNM (au niveau de la mer) tel que reporté par les stations météos de référence alors il faudra appliquer une correction (voyez la section détaillant ce calcul).

L'humidité est exprimée en % et il s'agit d'une mesure d'humidité relative.

Il est également possible de convertir le BME280 en altimètre. Si vous connaissez la pression au niveau de la mer (aussi dite "baseline") alors la bibliothèque peut calculer l'altitude depuis le relevé de pression. En effet, plus vous prenez de l'altitude et plus la colonne d'air au dessus de vous diminue. Par conséquent, la pression de la colonne d'air (sur le senseur) diminue également.

bmp.readAltitude(pression_au_niveau_de_la_mer)

Notez que vous ne pourrez pas obtenir un calcul d'altitude précis que que si vous connaissez la pression athmosphérique (hPa) au niveau de la mer. Il va de soit qu'il s'agit de la pression correspondant à votre localisation (inutile de relever la pression près de New York!) et la pression du jour (car elle change tous les jorus). Le senseur est assez précis mais il faudra avoir des données à jour sinon il sera difficile d'avoir une précision inférieure à 10m.

Fournissez la pression au niveau de la meren hPa - la valeur devrait être quelque part aux alentours de ~1000. Vous pouvez également faire vos tests avec la valeur générique de 1013.25 hPa.


Source: "Adafruit BME280 Humidity + Barometric Pressure + Temperature Sensor Breakout" réalisé par LadyAda Pour AdaFruit Insdustries.

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.