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

.

  • BME280 Lot de 3 capteurs barométriques numériques 5 V, module de capteur de température d'humidité, capteur de température, capteur d'humidité atmosphérique, carte de pression barométrique IIC I2C
    Module de capteur haute performance : le module de capteur BME280-5 V pour la température, l'humidité et la pression atmosphérique a été conçu avec la dernière technologie pour fournir des lectures de haute précision pour une surveillance précise des conditions environnementales. Taille compacte : la petite taille et les excellentes performances de ce capteur barométrique numérique BME280 5 V permettent une installation facile dans différents appareils sans prendre plus de place, ce qui facilite l'optimisation de la structure interne de l'appareil. Haute précision : notre capteur barométrique numérique BME280 5 V est la meilleure solution de capteur de précision économique pour mesurer la pression atmosphérique avec une précision absolue de ± 1 hPa et la température avec une précision de ± 1,0 °C. Comme la pression change avec la hauteur et que les mesures de pression sont bonnes, vous pouvez également l'utiliser comme altimètre avec une précision de ±1 mètre. Compatibilité polyvalente : le capteur barométrique numérique BME280 5 V est compatible avec les interfaces I2C et SPI, ce qui en fait une option flexible pour l'intégration dans une variété de projets. Prend en charge les SPI à 3 fils et 4 fils. Capteur barométrique : ce kit contient 3 capteurs barométriques numériques BME280 5 V, qui peuvent être activés/désactivés indépendamment et peuvent mesurer non seulement l'humidité de la température, mais aussi la pression.
  • QWORK Lot de 1 BME280 5 V modules de capteur pour température, humidité et pression atmosphérique
    Peut être activé/désactivé indépendamment pour mesurer non seulement la température mais aussi la pression. Haute précision, haute résolution, faible consommation d'énergie, acquisition de précision rapide, précision absolue de ±1hPa et précision de température de ±1.0°C. Le BME280 atteint des performances élevées dans toutes les applications nécessitant une mesure de l'humidité et de la pression. Le BME280 est un capteur de précision soudéà la carte. Il utilise à la fois les interfaces I2C et SPI, prend en charge les SPI à 3 et 4 fils Idéal pour de nombreux projets de bricolage et de maison intelligente La petite taille et les excellentes performances de ce capteur de température lui permettent d'être facilement intégré dans différents appareils sans prendre plus de place, facilitant l'optimisation de la structure interne de l'appareil
  • 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.