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

.

  • ARCELI 5 pièces BME280 Module numérique de capteur barométrique 5V, Module de capteur de température et d'humidité Pression Température Humidité Module Board IIC I2C pour Arduino Raspberry Pi
    Taille compacte : avec sa petite taille et son design léger, le module de détection BME280-5V est parfait pour une utilisation dans des appareils mobiles compacts tels que les smartphones, les tablettes, les montres intelligentes et les wearables. Compatibilité polyvalente : le module est compatible avec les interfaces I2C et SPI, ce qui en fait une option flexible pour l'intégration dans une grande variété de projets. Module de capteur haute performance : Le module de capteurs de température, d'humidité et de pression atmosphérique BME280-5V a été conçu à l'aide des technologies les plus récentes afin de fournir des mesures de haute précision pour une surveillance précise des conditions environnementales. Large plage de fonctionnement : ce module de capteur peut être utilisé dans différentes conditions, notamment des températures de -40°C à +85°C, des plages d'humidité de 0 à 100 % et des pressions atmosphériques de 300 à 1100 hPa. Haute précision : le module se caractérise par une grande précision dans la mesure de la température, de l'humidité et de la pression atmosphérique, avec de faibles erreurs pour des valeurs de mesure fiables. Il dispose également d'une haute résolution pour des mesures précises.
  • BME280 Capteur, 5V de Précision Haute Pression Barométrique Température Humidité Sensor Module pour Arduino et Raspberry Pi
    Souder à la carte de circuit imprimé avec un capteur de précision. Le capteur numérique peut non seulement mesurer la pression et la température, mais peut également mesurer l'humidité. Le BME280 sensor utilise l'interface I2C et SPI (prise en charge de SPI 3 fils, 4 fils). La hauteur du produit peut être calculée par pression. Le produit est présenté avec un petit corps, une installation facile et d'excellentes performances.
  • ARCELI BME280 Module numérique de capteur barométrique 5V, module de capteur de température et d'humidité IIC I2C Pression Température Humidité Module Board pour Arduino Raspberry Pi
    Module de capteur haute performance : Le module de capteur de température, d'humidité et de pression atmosphérique BME280-5V a été conçu à l'aide de la technologie la plus récente afin de fournir des mesures de haute précision pour une surveillance précise des conditions environnementales. Compatibilité polyvalente : le module est compatible avec les interfaces I2C et SPI, ce qui en fait une option flexible pour l'intégration dans une grande variété de projets. Taille compacte : avec sa petite taille et son design léger, le module de capteurs BME280-5V est parfait pour une utilisation dans des appareils mobiles compacts tels que les smartphones, les tablettes, les montres intelligentes et les wearables. Large plage de fonctionnement : ce module de détection peut être utilisé dans différentes conditions, notamment à des températures de -40°C à +85°C, dans des plages d'humidité de 0 à 100 % et à des pressions atmosphériques de 300 à 1100 hPa. Haute précision : le module se caractérise par une grande précision dans la mesure de la température, de l'humidité et de la pression atmosphérique, avec de faibles erreurs pour des valeurs de mesure fiables. Il dispose également d'une haute résolution pour des mesures précises.