ESP8266 sous MicroPython - utiliser un senseur BMP180

Faisant suite à l'article d'hier, nous allons nous pencher sur l'utilisation du BMP180 (senseur de pression) avec un ESP8266 reflashé sous MicroPython.

Introduction au BMP180
Le BMP180 de précision Bosch est la meilleure solution à petit prix pour mesurer la pression barométrique et la température. Comme la pression varie avec l'altitude, vous pouvez également utiliser ce senseur comme altimètre!
BMP180 disponible chez MCHobby

Le senseur est souder sur une carte avec un un régulateur de tension 3.3V, un convertisseur de tension sur le bus I2C (level shifter) et des résistances pull-up sur les broches I2C.
Le BMP180 est la prochaine génération de senseur Bosch et remplace le célèbre BMP085. La bonne nouvelles c'est qu'il est totalement identique au BMP085 en ce qui concerne le FirmWare / Logiciel / Interfacing.
Cette carte est totalement compatible avec la logique 5V, et 3.3V grâce régulateur de tension 3.3V et Level Shifter I2C inclus sur le breakout. Vous pouvez aussi bien l'utiliser sur un Arduino (5v), un Raspberry-Pi (3.3v) ou ESP8266 (3.3v).
Quelques détails techniques:
  • Vin: 3 à 5V DC (continu)
  • Logique: compatible 3 à 5V (utilisable aussi bien en 3.3v qu'en 5v).
  • Gamme de mesure de pression: 300-1100 hPa (9000m à -500m sous le niveau de la mer)
  • Précision en pression: 0.03hPa / 0.25m
  • Précision en température: +-2°C
  • Température de fonctionnement: -40 à +85°C.
  • Précision sur température: +/- 2°C
  • Cette carte/puce utilise l'adresse I2C 7-bits 0x77.
  • Fiche technique du BMP180
Schéma de montage
Source: ce tutoriel MCHobby
Installer la bibliothèque
Vous aurez besoin du fichier bmp180.py pour pouvoir utiliser ce senseur.
Voyez ce point du tutoriel de MCHobby pour trouver et installer le fichier sur votre ESP8266.

Code de test
# Utilisation du breakout BMP180 (ADA1603) avec Feather ESP8266 Python
#
# Shop: http://shop.mchobby.be/product.php?id_product=397
# Wiki: https://wiki.mchobby.be/index.php?title=MicroPython-Accueil#ESP8266_en_MicroPython

from bmp180 import BMP180
from machine import I2C, Pin

# Bus I2C
#   Ne pas utiliser la broche standard SCL (broche 5) car perturbe la
#   sequence de boot lorsque l'on utilise un bloc d'alim USB
# 
i2c = I2C( sda=Pin(4), scl=Pin(2), freq=20000 )

bmp180 = BMP180( i2c )

# 0 précision la plus basse, mesure rapide
# 3 précision la plus élevée; mesure plus lente
bmp180.oversample_sett = 2 

# Pression au niveau de la mer (en millibar * 100)
bmp180.baseline = 101325

# Température sur le BMP
temp = bmp180.temperature
print( "Temperature: %.2f deg.Celcius" % temp )

p = bmp180.pressure
print( "pressure: %.2f mbar" % (p/100) )
print( "pressure: %.2f hPa" % (p/100) )

# Altitude calculée a partir de la difference de pression 
# entre le niveau de la mer et "ici"
altitude = bmp180.altitude
print( "altitude: %.2f m" % altitude )


La pression PNM
Si vous voulez réaliser une station météo à partir d'un BMP180, vous aurez besoin de calculer la pression PNM à partir de la pression relevée.
Nous avons abordé ce point dans notre publication d'hier.

Notre tutoriel BMP180 avec ESP8266 sous MicroPython reprend ce point en détail.

Encore plus
Voici quelques autres points abordés dans notre tutoriel.

La pression varie au niveau de la mer!!!
Une valeur standard de la pression au niveau de la mer est de 1013.25 mbar (ou 1013.25 hPa).
Cependant, cette valeur varie en fonction des conditions atmosphérique et de la quantité de vapeur d'eau dans l'air.
Par exemple, ce jour, la pression est de 1002.00 hPa à la Panne (En bordure de mer, Belgique). La Belgique étant un petit territoire relativement plat, la variation de pression à la mer est forcement un élément plus important qu'ailleurs.
Cette valeur est importante si vous avez besoin de relever votre altitude avec une certaine précision en vue de calculer la colonne d'air de compensation (pour calculer les pressions PNM)
J'ai donc corrigé ma baseline comme suit (valeur en hPa * 100):

bmp180.baseline = 100200

Vous pouvez facilement prendre connaissance de cette pression en consultant un site météo local.
Je vous propose ce lien vers meteobelgique.be

Le senseur ne donne pas la bonne altitude

Voyez ce point de notre tutoriel.

La pression atmosphérique semble incorrecte

Voyez ce point de notre tutoriel.

Tutoriel
Où acheter

2 commentaires: