BME280: pression atmosphérique et altitude

Dans cette activité, tu vas découvrir comment mesurer la pression atmosphérique avec le capteur BME280 et utiliser ces données pour calculer l’altitude, une compétence essentielle pour comprendre et analyser la descente d’un CanSat lors de son vol.

    6gms 5gms 5ttr 6ttr 4gms
  • Découverte

🎯 Objectif du cours

Dans ce cours, tu vas apprendre à :

  • lire la pression atmosphérique avec le capteur BME280 via raw_values,
  • comprendre la relation entre pression et altitude,
  • calculer l’altitude en utilisant une formule standard.

Ces compétences te serviront pour la mission primaire du CanSat.


Comprendre la pression atmosphérique

🌍 Qu'est-ce que la pression atmosphérique ?

La pression atmosphérique, c’est le poids de l’air au-dessus de toi.

  • Au niveau de la mer : environ 1013 hPa
  • En altitude, la pression diminue car la colonne d’air est plus petite.

👉 Au CanSat, la pression va donc diminuer beaucoup pendant la montée puis augmenter pendant la descente.


Le capteur BME280

Mesures disponibles

  • Température (°C)
  • Pression (hPa)
  • Humidité (%)

Communication

Il utilise le bus I2C, qui ne demande que deux fils : SDA et SCL.

Exemple de branchement (Pico → BME280)

BME280 Pico
VCC 3.3V
GND GND
SCL GP9
SDA GP8

Lire les données numériques avec raw_values

Le module BME280 utilisé dans le CanSat propose :

temp, pressure, humidity = bme.raw_values

Il retourne :

  • la température en °C,
  • la pression en hPa,
  • l’humidité en %.

👉 Pas besoin de convertir des chaînes : c’est prêt pour les calculs.

Exemple de code

from machine import I2C, Pin
from bme280 import BME280
import time

i2c = I2C(0, scl=Pin(9), sda=Pin(8))
bme = BME280(i2c=i2c)

while True:
    temp, pressure, humidity = bme.raw_values
    print("Température (°C):", temp)
    print("Pression (hPa):", pressure)
    print("Humidité (%):", humidity)
    print("-------------------------")
    time.sleep(1)

🔍 Comprendre le calcul de l’altitude à partir de la pression

Pour estimer l’altitude à partir de la pression mesurée par le BME280, on utilise une formule barométrique simplifiée. Mais avant de l’utiliser, il faut comprendre un point essentiel : la pression au niveau de la mer n’est pas une constante !

🌊 Qu’est-ce que la pression MSL ?

MSL signifie Mean Sea Level pressure = pression ramenée au niveau de la mer. C’est la valeur que les stations météo publient dans les bulletins.

Important :

  • La valeur "standard" est 1013.25 hPa, mais elle varie chaque jour, selon la météo.
  • Lors d’un anticyclone, la pression peut monter jusqu’à 1035 hPa.
  • Lors d’une dépression, elle peut descendre vers 980 hPa (ou moins).

👉 Si tu utilises la valeur standard 1013.25 hPa alors que la pression réelle du jour est par exemple 1002 hPa, ton altitude sera fausse de plusieurs dizaines de mètres.


📡 Où trouver la pression MSL du jour ?

Voici des sources fiables (utiliser la station météo la plus proche) :

👉 Dans un projet CanSat, on choisit la station météo la plus proche du lieu du lancement.


🧮 La formule utilisée

La relation pression ↔ altitude vient de la physique de l’atmosphère :

formule altitude

  • P = pression mesurée par le BME280 (en hPa)
  • P₀ = pression MSL (pression au niveau de la mer, en hPa)
  • altitude en mètres

Pourquoi ça fonctionne ?

L’air est comprimé par son propre poids. Plus on monte :

  • la densité de l’air diminue,
  • la pression diminue.

La formule ci-dessus exprime précisément cette diminution.


📘 Exemple concret

Imaginons que tu mesures :

  • Pression du capteur : 955 hPa
  • Pression MSL du jour (IRM) : 1002 hPa

formule altitude exemple

→ Résultat ≈ 423 m

Si tu avais utilisé 1013.25 hPa par défaut :

→ ≈ 500 m (erreur de +77 m)


🌡️ Pourquoi la pression MSL change ?

Parce que la pression dépend de la masse d'air au-dessus de la région :

  • Air chaud → plus léger → basse pression
  • Air froid → plus lourd → haute pression
  • Mouvements atmosphériques → variations permanentes

Donc, tu dois calibrer ton capteur en mettant à jour le P0 chaque jour ou avant chaque vol.


🌍 Faut-il utiliser la pression MSL du lieu ?

Oui, mais il faut bien comprendre ce que cela signifie.

🔹 1) La station météo te donne la pression ramenée au niveau de la mer

Quand tu vas sur IRM, OpenWeather, Windy, etc., la pression affichée n’est pas la pression réellement mesurée à cet endroit. Les stations appliquent un calcul pour “ramener” la pression mesurée au niveau de la mer (MSL) afin de pouvoir comparer deux stations situées à des altitudes différentes.

Exemple :

  • Pression mesurée à Bastogne (500 m) ≈ 955 hPa
  • Pression ramenée au niveau de la mer (MSL) ≈ 1010 hPa

👉 C’est cette pression MSL (1010 hPa) qu'il faut utiliser dans la formule d'altitude.

Pourquoi ? Parce que la formule barométrique suppose que P₀ correspond à la pression au niveau de la mer, pas à la pression “au sol” à 350 ou 500 m d’altitude.


🔹 Alors quelle valeur utiliser dans le CanSat ?

✔ Option 1 (recommandée par l'ESA & IRM)

➡️ P₀ = pression MSL du jour fournie par la station météo la plus proche du site de lancement.

Sources :

C’est la méthode "officielle".


🔹Option 2 : calibration locale pour plus de précision

Les conditions météo changent en permanence. Même la valeur MSL donnée par IRM peut entraîner une erreur (surtout si la station est loin).

👉 Solution : calibrer P₀ sur place.

Étapes :

  1. Tu regardes la vraie altitude du site (Google Maps, géoportail, panneau local).
  2. Tu mesures la pression du BME280 sur place : P_mesure.
  3. Tu ajustes P₀ pour que la formule te redonne cette altitude.

Exemple

Lieu du lancement : altitude réelle = 510 m Pression mesurée BME280 = 955.4 hPa

Tu cherches la valeur P₀ qui donne 510 m :

[ 510 = 44330 \times \left(1 - (955.4/P_0)^{1/5.255}\right) ]

Résultat → P₀ ≈ 1010.6 hPa

👉 Tu mets P0 = 1010.6 dans ton code.

C’est la méthode la plus précise possible.


🔹 5) Mini-algorithme conseillé pour le CanSat

  1. Récupérer la pression MSL du jour (IRM).
  2. Mesurer la pression réelle au sol avec le BME280.
  3. Calculer l’altitude affichée → comparer avec l’altitude connue.
  4. Ajuster P₀ automatiquement dans le code pour corriger l'erreur.
  5. Laisser P₀ constant pendant tout le vol.

Calculer l’altitude à partir de la pression

On utilise la formule barométrique simplifiée :

formule altitude

  • P : pression mesurée (hPa)
  • P₀ : pression au niveau de la mer (par défaut 1013.25 hPa)

Code "complet" avec altitude

from machine import I2C, Pin
from bme280 import BME280
import time

i2c = I2C(0, scl=Pin(9), sda=Pin(8))
bme = BME280(i2c=i2c)

P0 = 1013.25   # pression standard au niveau de la mer

while True:
    temp, P, hum = bme.raw_values

    # ICI: CALCULE L'ALTITUDE AVEC LA FORMULE SIMPLIFIEE

    print(f"Température: {temp:.2f} °C")
    print(f"Pression: {P:.2f} hPa")
    print(f"Altitude estimée: {altitude:.2f} m")
    print("-------------------------------")

    time.sleep(1)

Exemple d'interprétation

Pression mesurée (hPa) Altitude estimée
1013 0 m
1000 ~110 m
950 ~520 m
900 ~980 m
800 ~1900 m

👉 Pendant le vol du CanSat, tu vas observer une chute rapide de pression, ce qui te permet de recalculer l’altitude en temps réel.


À retenir

  • Le BME280 renvoie des valeurs numériques grâce à raw_values.
  • La pression diminue quand l’altitude augmente.
  • On peut calculer l’altitude en direct pendant le vol.
  • Ces données sont la base de la mission primaire du CanSat.

💡 Exercice

  1. Lire les valeurs du capteur avec raw_values.
  2. Afficher température + pression + altitude chaque seconde.
  3. Monter un étage avec le capteur et observer comment l’altitude change.
  4. Tester à l’extérieur : comparer avec l’altitude donnée par Google Maps.

Téléchargements

Module 'BME280' simulé
bme280.py
Module 'machine' simulé
machine.py

Pour aller plus loin