L’appareil BME280 est un capteur de pression barométrique numérique et est une version légèrement améliorée du BMP180. Celui-ci est disponible sur un petit module qui permet d’accéder au capteur via l’interface I2C. Cela nous permet de le connecter facilement au Raspberry Pi et de lire les données à l’aide de Python. Le BME280 fournit la température, la pression et l’humidité.
Le BME280 est fabriqué par Bosch et le fiche technique officielle du BME280 comprend tous les détails techniques. Leur appareil peut offrir à la fois des interfaces SPI et I2C, vous devez donc vous assurer que votre module fournit l’interface que vous préférez.
Mon module est un petit PCB mesurant 14x10mm avec un en-tête I2C à 4 broches. L’ordre des broches peut varier sur d’autres modules, alors gardez un œil sur les étiquettes afin de connecter les bons fils du Pi.
Configurer l’interface I2C
Pour utiliser ce module, vous devez activer l’interface I2C sur le Raspberry Pi car elle n’est pas activée par défaut. Il s’agit d’un processus assez simple qui est décrit dans mon tutoriel Activation de l’interface I2C sur le Raspberry Pi.
Matériel de connexion
Le tableau ci-dessous montre comment le module est connecté à l’en-tête GPIO du Raspberyr Pi (P1). Veuillez vous référer à mon guide d’en-tête GPIO pour un diagramme.
| Carte de circuits imprimés | Desc | Broches d’en-tête GPIO |
|---|---|---|
| VCC | 3.3V | P1-01 |
| GND | Terre | P1-06 |
| SCL | I2C SCL | P1-05 |
| ADD | I2C SDA | P1-03 |
Voici un schéma d’une configuration de maquette. Si vous connectez les quatre broches du module directement au Pi, vous n’avez besoin que de quatre fils femelle-femelle.

D’autres modules sont disponibles qui ont des dispositions de broches différentes, alors assurez-vous de connecter les bonnes broches au Pi si la vôtre est différente de celle montrée dans ce didacticiel.
Avec l’appareil connecté et le Pi sous tension, la commande « i2cdetect » devrait afficher l’appareil avec l’adresse 0x76 ou 0x77.
Télécharger le script BME280
Pour télécharger le script Python BME280 depuis mon dépôt Bitbucket vous pouvez utiliser :
wget -O bme280.py http://bit.ly/bme280py
ou alors
wget https://bitbucket.org/MattHawkinsUK/rpispy-misc/raw/master/python/bme280.py
ou faites un clic droit sur ce lien dans votre navigateur et enregistrez localement.
Exécuter le script
Avant d’exécuter le script, vous devez vérifier que votre appareil est connecté. Si vous avez installé le package i2c-tools dans le cadre de la configuration i2c, vous devez utiliser la commande i2cdetect pour vérifier qu’il renvoie une adresse pour votre appareil. Le script suppose que l’adresse est 0x76. Vous pouvez changer cela en modifiant la variable DEVICE dans bme280,py à l’aide de votre éditeur de texte préféré.
Exécutez le script en utilisant :
python bme280.py
Voici la sortie que je vois sur mon Pi :

Répartition du script
Le script est assez simple mais contient des mathématiques effrayantes. C’est défini dans la fiche technique et on vous pardonnera de ne pas trop vous soucier de son fonctionnement ! Un résumé approximatif du script est donné ci-dessous si vous souhaitez le suivre un peu plus en détail :
- importe certaines bibliothèques
- définit certaines fonctions
- la fonction principale utilise la fonction readBME280ID pour obtenir l’ID de l’appareil
- la fonction main appelle ensuite readBME280All qui …
- définit le suréchantillonnage et le mode
- lit les données d’étalonnage de l’appareil qui a été préréglé en usine
- lit les données brutes de température, de pression et d’humidité
- affine les données en utilisant les mathématiques de la fiche technique
- renvoie les valeurs à main()
Inclure dans votre propre script
Vous pouvez simplement modifier la fonction principale dans mon script, mais vous pouvez inclure la fonctionnalité dans le vôtre. Pour cela vous pouvez importer mon script puis référencer les fonctions readBME280ID et readBME280All comme dans l’exemple ci-dessous :
import bme280 (chip_id, chip_version) = bme280.readBME280ID() print "Chip ID :", chip_id print "Version :", chip_version temperature,pressure,humidity = bme280.readBME280All() print "Temperature : ", temperature, "C" print "Pressure : ", pressure, "hPa" print "Humidity : ", humidity, "%"
Le reste dépend de votre imagination.
Dépannage
- Si la commande i2cdetect génère une erreur, vous n’avez pas installé les outils i2c ou vous devez utiliser 0 plutôt que 1
- Si votre appareil n’est pas détecté et que vous ne voyez pas l’adresse, vous n’avez pas correctement connecté l’appareil ou n’avez pas correctement activé l’interface i2c
- Vérifiez votre câblage et redémarrez le Pi
Dans la plupart des cas, les expériences i2c ne fonctionnent pas car :
- i2c n’est pas activé
- L’appareil n’est pas correctement connecté
- i2c-tools n’a pas été installé donc la commande i2cdetect n’est pas disponible
Dans de rares cas, votre appareil peut être défectueux, mais il est beaucoup plus probable qu’il s’agisse de l’un des problèmes ci-dessus.
Le module est disponible à partir de Amazone et de nombreux autres magasins d’électronique en ligne. Vous pouvez également trouver
.
-
BME-280 Lot de 2 capteurs barométriques pour température, humidité APKLVSR et pression atmosphérique, module IIC I2C 5 V, compatible avec Arduino et Ras-pberry Pi
-
Waveshare BME280 Capteur de pression barométrique environnementale Module de détection de température d'humidité Interface I2C SPI pour Raspberry Pi 4B+ 4B 3B+ 3B 2B+ Zero W WH 2W Ardui STM32
