GY-BME280 Barometric sensor for temperature, humidity and air pressure

GY-BME280 Capteur barométrique pour la température, l'humidité et la pression atmosphérique 

Derrière la porte numéro 11 du calendrier de l'Avent, vous trouverez le capteur BME280 dans un ensemble de 5 unités. Il peut être utilisé pour mesurer la température (-40 à +85 °C), l'humidité (0 à 100 %HR) et la pression atmosphérique (300 à 1100 hPa). Il peut fonctionner aussi bien avec 3,3V qu'avec 5V. Ce modèle est la variante avec l'interface I²C. Pour ce faire, le composant nécessite une adresse. Il s'agit de 0x76 par défaut. L'adresse peut être changée en 0x77 grâce aux trois points de soudure sous la petite boîte métallique (qui représente le capteur réel) :

 

Il doit y avoir une connexion (peu visible) entre le coussin gauche et le coussin du milieu. Celle-ci doit être séparée avec une lame fine et coupante. Ensuite, le pad du milieu doit être connecté au pad de droite.

Si vous n'êtes pas sûr de l'adresse définie, utilisez un croquis de scanner I2C dans le IDE Arduino. La Wire library (qui est responsable de l'interface I²C) fournit un tel croquis. Chargez-le sur votre microcontrôleur et connectez le capteur comme indiqué ci-dessous :

 


ou:


Les capteurs sont fournis avec des broches de tête, qui doivent cependant encore être soudées.

Les broches I²C de chaque microcontrôleur sont les suivantes :  

µC

SDA

SCL

Nano

A4

A5

ONU

A4 ou SDA (GPIO19)

A5 ou SCL (GPIO18)

Méga

20

21

Léonard / Micro

2

3

ESP32

GPIO 21

GPIO 22

ESP8266

GPIO 4 (D2)

GPIO 5 (D1)

 

Vous savez déjà comment mettre en place une Nano, une Uno, une ESP8266 ou une ESP32 et réaliser un plan à partir des portes précédemment ouvertes dans le calendrier.

Le moniteur en série devrait alors afficher ce qui suit :

 


Le capteur a été détecté avec l'adresse I²C 0x76. Nous pouvons donc communiquer avec ce dernier.

Pour obtenir maintenant les données des capteurs de température, d'humidité et de pression atmosphérique, nous utilisons une des bibliothèques, qui peut être installée via le gestionnaire de la librairie. Il est logique d'utiliser la bibliothèque BME280 d'Adafruit :

 


Note : Il nécessite également la bibliothèque de capteurs unifiés Adafruit, qui est normalement installée en même temps. Vous devriez au moins avoir un indice à ce sujet.

Après l'installation, vous trouverez le croquis bme280test sous Fichier->Exemples->Bibliothèque BME280 d'Adafruit

Réglez le débit en mode série du moniteur dans setup() :

Serial.begin(115200);

Il est possible que le capteur ne soit pas encore reconnu de cette manière :

 


Veuillez ensuite ajouter la ligne suivante :

status = bme.begin();

dans:

status = bme.begin(0x76, &Wire);

Saisissez l'adresse que vous avez déterminée avec le scanner I²C et vous devriez recevoir le résultat suivant après le nouveau téléchargement :

 


La température, la pression atmosphérique et l'humidité peuvent maintenant être déterminées. Comme vous pouvez le voir, une autre valeur est la sortie. C'est la hauteur au-dessus du niveau de la mer (Altitude approximative). Par contre, sur mon site, environ 40 m devraient y être affichés. Pour y remédier, vous devez vous renseigner sur la pression atmosphérique dans votre région. Ces informations sont fournies par les stations météorologiques de votre région. Par exemple, visitez le site web du service météorologique et cherchez votre emplacement en utilisant le code postal. Cliquez ensuite sur l'onglet "Valeurs mesurées". Dans le tableau, vous trouverez la colonne "Pression de l'air". Copiez cette valeur et collez-la dans le code source de la ligne suivante (ci-dessus) :

#define SEALEVELPRESSURE_HPA (1013.25)

Mes données météorologiques actuelles indiquent une pression atmosphérique de 1017,5 hPa. Je place cette valeur dans la ligne :

#define SEALEVELPRESSURE_HPA (1017.5)

Est-ce que j'ai la bonne taille à laquelle je suis :

 


Pour savoir si cette valeur est correcte, vous pouvez, par exemple, vous rendre sur ce site et y saisir votre localisation. La hauteur au-dessus du niveau de la mer sera alors affichée en plus des coordonnées. La pression de l'air change constamment. La valeur doit donc être mise à jour régulièrement.

Si vous souhaitez traiter plus intensément de l'altimétrie barométrique, cet article, parmi d'autres, pourrait vous intéresser.

Pour donner un petit coup de pouce à votre créativité, voici quelques idées de projets en rapport avec le capteur BME280. Bien sûr, comme thermomètre, par exemple avec un écran connecté. Peut-être un affichage e-paper et un faible taux de mise à jour. Cela permet d'économiser de l'énergie. Avec un microcontrôleur compatible WLAN, vous pouvez également récupérer les valeurs en ligne. Par exemple, vous êtes propriétaire d'un abri de jardin et vous souhaitez surveiller la climatisation depuis chez vous. Vous pouvez également réaliser des expériences avec une pression négative ou positive, par exemple dans les cours de physique. Pour utiliser la mesure d'altitude, vous pourriez attacher les composants à un drone ou à un ballon météo. Faites attention aux bons calculs d'altitude. Une fois, j'ai construit un circuit pour une fusée qui enregistre les données télémétriques sur une carte SD pendant le vol.

Si vous voulez maintenant contrôler plusieurs expériences simultanément avec un seul microcontrôleur, cela devient un peu problématique. Comme vous l'avez déjà lu ci-dessus, seules deux adresses I²C peuvent être définies. Vous pourriez donc aussi n'utiliser que deux capteurs. Il est possible d'utiliser d'autres broches pour la connexion I²C avec les bibliothèques Softwire et SoftwareWire. Malheureusement, elles ne sont pas compatibles avec les bibliothèques de la BME.

Une autre possibilité est d'utiliser un multiplexeur I²C. Huit appareils peuvent y être connectés. Dans mon billet de blog sur Halloween, j'ai déjà présenté celui-ci.

Remarque : n'oubliez pas que les longueurs de câble pour la connexion I²C sont très limitées.

Un schéma de serveur HTTP est inclus dans les exemples ESP8266. Je l'ai modifié pour ce cas afin que les données du BME280 soient affichées. J'ai inclus des parties du code source du sketch bme280test montré ci-dessus. Comme serveur, j'utilise un ESP8266 D1 Mini :


Vous pouvez télécharger le schéma mis à jour ici.

Saisissez ici vos données WLAN pour le SSID et le MOT DE PASSE. Vous devez également mettre à jour la pression barométrique pour l'altitude correcte. Une fois que vous aurez téléchargé le croquis, vous verrez l'adresse IP dans le Serial Monitor. Vous pouvez ensuite le saisir dans un navigateur web sur un appareil qui se trouve sur le même réseau sans fil. Les données climatiques seront alors affichées :

 

Pour la sortie, une chaîne formatée est assemblée dans la fonction handleRoot(). Pour la sortie du caractère degré et des trémas, il faut se référer à la table ASCII étendue.

Afin de ne pas exclure les utilisateurs de Raspberry Pi, je voudrais montrer comment le capteur BME280 peut y être utilisé. Le Raspi possède également une interface I²C, mais celle-ci doit être activée dans la configuration du Raspi :

sudo raspi-config

puis activez I2C via les options d'interface et redémarrez le Raspi, connectez donc le capteur comme suit :

 

 

Adafruit propose une bibliothèque Python pour le Raspi, que l'on peut trouver sur Github. Il y a également une description de la procédure à suivre pour l'installer :

pip3 install adafruit-circuitpython-bme280

Python 3 et Pip doivent être installés pour cela.

Vous pouvez ensuite créer un script Python et transférer ensuite l'échantillon de code. Commentez la ligne suivante pour l'adresse I²C 0x76 en supprimant le hachage au début de la ligne :

bme280 = adafruit_bme280.Adafruit_BME280_I2C(i2c, address=0x76)

L'autre ligne utilise l'adresse 0x77 et doit être commentée:

#bme280 = adafruit_bme280.Adafruit_BME280_I2C(i2c)

Dans cette ligne, vous réintégrez la pression de l’air en cours:

bme280.sea_level_pressure = 1013.25

Enregistrer le script z.B. bme280test.py Et lancez-le depuis le terminal:

python3 bme280test.py

Dans l'actuel Raspbian Buster Desktop, il existe un environnement de développement Python appelé Thonny Python. Vous pouvez écrire et exécuter des scripts très facilement.

Une solution alternative pour l'utilisation du BME280 sur la Raspberry Pi peut être trouvée ici. 

Nous vous souhaitons une bonne saison de l'Avent.

Andreas Wolter

pour le blog d'AZ-Delivery

Specials

1 commentaire

Hans-Henning Fleßner

Hans-Henning Fleßner

ich habe versucht, den BME mit einem ESP32 zu installieren. Benutzt habe ich Visual Studio Code mit PlatformIO. Ich habe die neueste Version der Adufruit Library (Version 2.2.2) geladen. Bei Übersetzen bringt der Compiler eine Fehlermeldung. Es geht um eine nicht erlaubte Typumwandlung in einer Datei , die im Namen “SPI” führt. Man verwendet aber für diesen Sensor I2C. Ich wollte dann aber nicht Stück für Stück auf alte Versionen zurückgehen. Ich bin gleich auf eine sehr alte Version (1.07) gegangen, mit des es geklappt hat, das Programm zu übersetzen.
Das Programm erkannte den Sensor nicht. Ein I2C-Scanner fand aber den Sensor unter der Adresse 0×76. Als ich das eigentliche Programm dann wieder geladen habe, wurde erstaunlicherweise der Sensor gefunden und alles funktioniert einwandfrei.

Laisser un commentaire

Tous les commentaires sont modérés avant d'être publiés

Messages de blogs recommandés

  1. Installez maintenant ESP32 via l'administrateur de la carte
  2. Lüftersteuerung Raspberry Pi
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1
  4. ESP32 - das Multitalent
  5. OTA-Over the Air-ESP Programmation par WiFi