Accueil > GNU/LINUX & RASPBERRY PI > Raspberry & BME280 : mesure de température, pression et humidité (...)
dimanche 6 novembre 2016, par
Remarque : dans la suite, nous allons utiliser le bus I2C pour communiquer avec le capteur.
Rôle des broches.
Broche | fonction |
---|---|
Vcc | alimentation ( 3.6V max) |
GND | masse |
SDI | Données. A relier à SDA dans le cas du bus I2C |
SCK | Horloge (clock). A relier à SCL dans le cas du bus I2C |
CSB | permet de passer du mode SPI au mode I2C. Par défaut, CSB=1 donc mode I2C. Si CSB=0 au démarrage, alors le mode SPI est utilisé |
SD0 | choix de l’adresse I2C. Si SD0=0, alors l’adresse est 0x76, si SD0=1, alors l’adresse est 0x77 |
Dans les branchements suisvants, SD0=0 donc l’adresse du capteur sur le bus I2C sera 0x76
sudo raspi-config
Aller dans "9 Advanced Options" puis "A6 I2C " puis "back" et "Finish"pour activer le support au niveau du noyau.
I2ctools n’est pas indispensable mais il permet de vérifier la présence du capteur en ligne de commande
sudo apt-get install python-smbus
sudo apt-get install i2c-tools
sudo i2cdetect -y 1
On obtient le résultat suivant, ce qui montre que l’adresse est bien 0x76 lorsque SD0=0 (relié à GND).
Si on avait relié SD0 à 3.3V (SD0=1), on aurait eu 0x77 pour adresse du capteur :
On va utiliser le programme développée par Matt Hawkins http://www.raspberrypi-spy.co.uk/2016/07/using-bme280-i2c-temperature-pressure-sensor-in-python/
wget https://bitbucket.org/MattHawkinsUK/rpispy-misc/raw/master/python/bme280.py
Pour tester le programme (si le capteur est bien à l’adresse 0x76) avec 1 seule mesure.
python bme280.py
Si on souhaite utiliser l’adresse 0x77, il faut modifier la ligne suivante du programme bme.py :"DEVICE = 0x77 # Default device I2C address
"
On va utiliser le programme précédent comme une bibliothèque.
Il faudra placer notre programme python dans le même répertoire que le fichier "bme.py" que l’on a téléchargé.
Pour cela, on ajoute "import bme280
" dans notre programme.
Le programme suivant permet la mesure de la pression, température et humidité relative toute les 2 secondes.
# -*- coding: utf-8 -*- import bme280 import time while True: temperature,pression,humidite = bme280.readBME280All() print "Temp : ", temperature, "°C \t P : ", pression, "hPa \t HR : ", humidite, "%" time.sleep(2)