Pour les stations météorologiques et les projets similaires, il est souvent important de déterminer la pression atmosphérique. La façon de déterminer la température et l’humidité avec des capteurs a déjà été montrée dans des tutoriels précédents. À l’aide du baromètre BMP180, la pression atmosphérique (en hPa / bar) peut être déterminée via le bus I²C du Raspberry Pi.
Contrairement aux DHT11 / DHT22, le BMP180 ne peut pas mesurer l’humidité, mais la pression atmosphérique, qui à son tour ne peut pas être mesurée par les deux autres capteurs. Mais les deux peuvent également mesurer la température.
Accessoires
Le modèle précédent BMP085 a été fabriqué par Bosch. Dans ce tutoriel, j’utilise un modèle successeur, le BMP180, bien que la version précédente soit également compatible
- Capteur de pression d’air BMP180
- Câble de raccordement femelle-femelle
- Breadboard
Construction
En fonction du modèle (et du fabricant) que vous utilisez, l’étiquette peut être différente. J’essaie donc de donner une description générale. Au total, il ne faut que quatre broches du Raspberry Pi (3V3, GND, ligne de données SDA, horloge SCL).
Capteur | Raspberry Pi |
---|---|
VCC | 3V3 (Pin 1) |
GND | GND (Pin 6) |
SCL | SCL (pin 5) |
SDA | SDA (Pin 3) |
Toutes les autres broches du capteur (telles que 3.3 ou XCLR) n’ont pas besoin d’être connectées.
Voici l’affectation des broches des Raspberry Pi:
Activation de l’I²C
Comme le capteur BMP180 fonctionne via le bus I²C, il doit d’abord être activé, car il est désactivé par défaut (si vous l’avez déjà fait, vous pouvez passer au chapitre suivant).
Nous traitons d’abord le fichier suivant :
sudo nano /etc/modules
À la fin du fichier, ces deux lignes sont ajoutées :
i2c-bcm2708 i2c-dev
Avec CTRL + O et CTRL + X, on sauvegarde et on sort.
Nous pouvons maintenant commenter les entrées de la liste noire (dans certaines versions, le fichier n’existe pas, alors il suffit de passer à la commande suivante) :
sudo nano /etc/modprobe.d/raspi-blacklist.conf
Ici, nous pouvons utiliser un hash # pour commenter les entrées correspondantes.
#blacklist spi-bcm2708 #blacklist i2c-bcm2708
En outre, les versions rases à partir de 2015 nécessitent l’activation de Devietree. Cela peut être fait dans la configuration :
sudo raspi-config
Sous « Options avancées », vous activez le chargement automatique du bus I2C. Redémarrez votre Raspberry.
Nous installons maintenant trois autres outils nécessaires :
sudo apt-get install python-smbus i2c-tools git
Vous pouvez alors, au moyen de
i2cdetect -y 1
tester si tout a fonctionné. Un appareil doit être affiché. Pour moi, cela ressemble à ça :
pi@raspberrypi ~ $ i2cdetect -y 1 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- 77
Logiciel BMP180
La façon la plus simple de s’adresser au capteur est de prendre une bibliothèque existante qui possède déjà toutes les fonctions. Adafruit propose une telle bibliothèque, avec des exemples également pour d’autres capteurs.
Nous clonons le dépôt d’Adafruit (git doit être installé).
git clone https://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code.git cd Adafruit-Raspberry-Pi-Python-Code/ git checkout 9ff733d59242a02f7ccd0222001ce80f6090a978 cd Adafruit_BMP085
Alors nous pouvons déjà faire le premier test :
sudo python Adafruit_BMP085_example.py
Le script fournira un résultat similaire à celui-ci:
Temperature: 25.70 C Pressure: 1007.08 hPa Altitude: 50.83
Dans mon test, c’était 1007 hPa (ce qui correspond à 100700 Pascal ou 1,007 bar).
Bien sûr, nous pouvons maintenant intégrer le dossier dans un autre projet. Pour cela, il suffit de copier le fichier à inclure et d’éditer le fichier Adafruit_BMP085_example.py, qui ressemble à ceci :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
#!/usr/bin/python from Adafruit_BMP085 import BMP085 # =========================================================================== # Example Code # =========================================================================== # Initialise the BMP085 and use STANDARD mode (default value) # bmp = BMP085(0x77, debug=True) bmp = BMP085(0x77) # To specify a different operating mode, uncomment one of the following: # bmp = BMP085(0x77, 0) # ULTRALOWPOWER Mode # bmp = BMP085(0x77, 1) # STANDARD Mode # bmp = BMP085(0x77, 2) # HIRES Mode # bmp = BMP085(0x77, 3) # ULTRAHIRES Mode temp = bmp.readTemperature() # Read the current barometric pressure level pressure = bmp.readPressure() # To calculate altitude based on an estimated mean sea level pressure # (1013.25 hPa) call the function as follows, but this won't be very accurate altitude = bmp.readAltitude() # To specify a more accurate altitude, enter the correct mean sea level # pressure level. For example, if the current pressure level is 1023.50 hPa # enter 102350 since we include two decimal places in the integer value # altitude = bmp.readAltitude(102350) print "Temperature: %.2f C" % temp print "Pressure: %.2f hPa" % (pressure / 100.0) print "Altitude: %.2f" % altitude |
Comme vous pouvez le voir, il existe plusieurs modes (Ultralowpower, etc.) que vous pouvez spécifier. Vous êtes maintenant libre de personnaliser le fichier à votre convenance et/ou de le modifier.
Un commentaire
Bonjour,
Je teste ce tuto, tout fonctionne bien après avoir exécuté la commande sudo python setup.py install.
Néanmoins, le programme Adafruit_BMP085_example.py fonctionne bien quand il est lancé dans le répertoire /home/pi/Adafruit-Raspberry-Pi-Python-Code/Adafruit_BMP085.
Si je déplace ce programme dans /home/pi, j’ai une erreur sur la ligne
fom Adafruit_BMP085 import BMP085
importError : No module named ‘Adafruit_BMP085’
Pourriez vous m’indiquer quelle est l’erreur que je commet ?
Merci pour votre aide.
Cordialement