Différences entre versions de « BME280-Brancher »

De MCHobby - Wiki
Sauter à la navigation Sauter à la recherche
 
(9 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
 
{{BME280-NAV}}
 
{{BME280-NAV}}
 
{{traduction}}
 
  
 
== préambule ==
 
== préambule ==
Ligne 21 : Ligne 19 :
  
 
== Brancher en SPI ==
 
== Brancher en SPI ==
{{traduction}}
+
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:
Since this is a SPI-capable sensor, we can use hardware or 'software' SPI. To make wiring identical on all Arduinos, we'll begin with 'software' SPI. The following pins should be used:
 
  
* Connect '''Vin''' to the power supply, 3V or 5V is fine. Use the same voltage that the microcontroller logic is based off of. For most Arduinos, that is 5V
+
* 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.
* Connect '''GND''' to common power/data ground
+
* Connectez '''GND''' sur la masse commune
* Connect the '''SCK''' pin to Digital #13 but any pin can be used later
+
* Connectez '''SCK''' sur la broche digitale #13 (mais n'importe quelle broche pourra être utilisée par la suite)
* Connect the '''SDO''' pin to Digital #12 but any pin can be used later
+
* Connectez '''SDO''' sur la broche digitale #12 (''commentaire identique'')
* Connect the '''SDI''' pin to Digital #11 but any pin can be used later
+
* Connectez '''SDI''' sur la broche digitale #11 (''commentaire identique'')
* Connect the '''CS''' pin Digital #10 but any pin can be used later
+
* Connectez '''CS''' sur la broche digitale #10 (''commentaire identique'')
  
Later on, once we get it working, we can adjust the library to use hardware SPI if you desire, or change the pins to other
+
Plus tard, une fois que cela fonctionnera, vous pourrez utiliser une bibliothèque SPI matérielle ou changer les broches à votre guise.
  
 
{{ADFImage|BME280-Brancher-20.jpg}}
 
{{ADFImage|BME280-Brancher-20.jpg}}
  
 
== Télécharger la bibliothèque ==
 
== Télécharger la bibliothèque ==
To begin reading sensor data, you will need to [https://github.com/adafruit/Adafruit_BME280_Library download Adafruit_BME280 from our github repository]. You can do that by visiting the github repo and manually downloading or, easier, just click this button to download the zip
+
Vous aurez besoin de télécharger et installer [https://github.com/adafruit/Adafruit_BME280_Library 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-box|Téléchargez la bibliothèque BME280|https://github.com/adafruit/Adafruit_BME280_Library}}
 
{{download-box|Téléchargez la bibliothèque BME280|https://github.com/adafruit/Adafruit_BME280_Library}}
  
Rename the uncompressed folder '''Adafruit_BME280''' and check that the '''Adafruit_BME280''' folder contains '''Adafruit_BME280.cpp''' and '''Adafruit_BME280.h'''
+
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'''
  
Place the '''Adafruit_BME280''' library folder your '''arduinosketchfolder/libraries/''' folder.
+
Placez le répertoire de la bibliothèque '''Adafruit_BME280''' dans le répertoire '''répertoire_des_Sketch_Croquis_arduino/libraries/'''.
You may need to create the libraries subfolder if its your first library. Restart the IDE.
 
  
We also have a [[Installation_d%27un_librairie_Arduino| tutorial on Arduino library installation]]
+
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 [[Installation_d%27un_librairie_Arduino| d'un tutoriel sur l'installation des bibliothèques Arduino]]
  
 
== Charger la démo ==
 
== Charger la démo ==
Open up '''File->Examples->Adafruit_BME280->bmp280test''' and upload to your Arduino wired up to the sensor
+
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.
  
 
{{ADFImage|BME280-Brancher-30.jpg}}
 
{{ADFImage|BME280-Brancher-30.jpg}}
  
Depending on whether you are using I2C or SPI, change the pin names and comment or uncomment the following lines.
+
En fonction du raccordement utilisant I2C ou SPI, changez les noms des broches en commentant/décommentant les lignes suivantes.
  
 
<syntaxhighlight lang="C">
 
<syntaxhighlight lang="C">
Ligne 61 : Ligne 61 :
  
 
Adafruit_BME280 bme; // I2C
 
Adafruit_BME280 bme; // I2C
//Adafruit_BME280 bme(BME_CS); // hardware SPI
+
//Adafruit_BME280 bme(BME_CS); // SPI materiel
 
//Adafruit_BME280 bme(BME_CS, BME_MOSI, BME_MISO,  BME_SCK);
 
//Adafruit_BME280 bme(BME_CS, BME_MOSI, BME_MISO,  BME_SCK);
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Once uploaded to your Arduino, open up the serial console at 9600 baud speed to see data being printed out
+
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.
  
 
{{ADFImage|BME280-Brancher-31.jpg}}
 
{{ADFImage|BME280-Brancher-31.jpg}}
  
'''Temperature''' is calculated in degrees C, you can convert this to F by using the classic F = C * 9/5 + 32 equation.
+
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 .
  
'''Pressure''' is returned in the SI units of '''Pascals'''. 100 Pascals = 1 hPa = 1 millibar. Often times barometric pressure is reported in millibar or inches-mercury. For future reference 1 pascal =0.000295333727 inches of mercury, or 1 inch Hg = 3386.39 Pascal. So if you take the pascal value of say 100734 and divide by 3389.39 you'll get 29.72 inches-Hg.
+
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.
  
You can also calculate Altitude. '''However, you can only really do a good accurate job of calculating altitude if you know the hPa pressure at sea level for your location and day!''' The sensor is quite precise but if you do not have the data updated for the current day then it can be difficult to get more accurate than 10 meters.
+
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 ==
 
== La pression PNM ==
Ligne 85 : Ligne 85 :
  
 
== Référence de la bibliothèque ==
 
== Référence de la bibliothèque ==
You can start out by creating a BME280 object with either software SPI (where all four pins can be any I/O) using
+
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
  
 
<syntaxhighlight lang="C">
 
<syntaxhighlight lang="C">
Ligne 91 : Ligne 91 :
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Or you can use hardware SPI. With hardware SPI you ''must'' use the hardware SPI pins for your Arduino - and each arduino type has different pins! Check the SPI reference to see what pins to use.
+
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.
In this case, you can use any CS pin, but the other three pins are fixed
+
 
 +
Dans ce cas, vous pouvez utiliser la broche CS de votre chaois (mais les trois autres broches sont fixées).
  
 
<syntaxhighlight lang="C">
 
<syntaxhighlight lang="C">
Adafruit_BME280 bme(BME_CS); // hardware SPI
+
Adafruit_BME280 bme(BME_CS); // SPI materiel
 
</syntaxhighlight>
 
</syntaxhighlight>
  
or I2C using the default I2C bus, no pins are assigned
+
Ou le bus I2C materiel, aucune broche est assignée.
  
 
<syntaxhighlight lang="C">
 
<syntaxhighlight lang="C">
Ligne 104 : Ligne 105 :
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Once started, you can initialize the sensor with
+
Une fois démarré, vous pouvez initialiser le senseur avec
  
 
<syntaxhighlight lang="C">
 
<syntaxhighlight lang="C">
 
   if (!bme.begin()) {   
 
   if (!bme.begin()) {   
     Serial.println("Could not find a valid BME280 sensor, check wiring!");
+
     Serial.println("Impossible de trouver un senseur BME280, verifier vos raccordements!");
 
     while (1);
 
     while (1);
 
   }
 
   }
 
</syntaxhighlight>
 
</syntaxhighlight>
  
'''begin()''' will return True if the sensor was found, and False if not. If you get a False value back, check your wiring!
+
'''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!
  
Reading humidity, temperature and pressure is easy, just call:
+
La lecture de la température, de l'humidité et la pression est facile. Appelez simplement les fonctions suivantes:
  
 
<syntaxhighlight lang="C">
 
<syntaxhighlight lang="C">
bme.readTemperature()
+
bme.readTemperature() # lecture de la temperature
bme.readPressure()
+
bme.readPressure() # lecture de la pression
bme.readHumidity()
+
bme.readHumidity() # lecture de l humidite
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Temperature is always a floating point, in Centigrade. Pressure is a 32 bit integer with the pressure in Pascals. You may need to convert to a different value to match it with your weather report. Humidity is in % Relative Humidity
+
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.
  
It's also possible to turn the BME280 into an altimeter. If you know the pressure at sea level, the library can calculate the current barometric pressure into altitude
+
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.
  
 
<syntaxhighlight lang="C">
 
<syntaxhighlight lang="C">
Ligne 131 : Ligne 136 :
 
</syntaxhighlight>
 
</syntaxhighlight>
  
'''However, you can only really do a good accurate job of calculating altitude if you know the hPa pressure at sea level for your location and day!''' The sensor is quite precise but if you do not have the data updated for the current day then it can be difficult to get more accurate than 10 meters.
+
'''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.
  
Pass in the current sea level pressure in hPa - so the value will be somewhere around ~1000. You can also test with the generic 1013.25 value.
+
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.
  
 
{{BME280-TRAILER}}
 
{{BME280-TRAILER}}

Version actuelle datée du 18 janvier 2017 à 17:16

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.