Utilisation du capteur de température et de pression BME280 I2C en Python

Utilisation du capteur de température et de pression BME280 I2C en Python

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é.

Capteur de pression de température BME280Le 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.

Configuration du module BME280

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 :

Configuration du capteur BME280

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