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.
Dans ce cours, tu vas apprendre à :
raw_values,Ces compétences te serviront pour la mission primaire du CanSat.
La pression atmosphérique, c’est le poids de l’air au-dessus de toi.
👉 Au CanSat, la pression va donc diminuer beaucoup pendant la montée puis augmenter pendant la descente.
Il utilise le bus I2C, qui ne demande que deux fils : SDA et SCL.
| BME280 | Pico |
|---|---|
| VCC | 3.3V |
| GND | GND |
| SCL | GP9 |
| SDA | GP8 |
raw_valuesLe module BME280 utilisé dans le CanSat propose :
temp, pressure, humidity = bme.raw_values
Il retourne :
👉 Pas besoin de convertir des chaînes : c’est prêt pour les calculs.
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)
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 !
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.
👉 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.
Voici des sources fiables (utiliser la station météo la plus proche) :
IRM – Belgique https://www.meteo.be Chercher “pression atmosphérique” → valeur en hPa.
OpenWeatherMap (API ou application) https://openweathermap.org
Météociel https://www.meteociel.fr/observations-meteo/pression.php
Applications smartphone : Météo & Radar, Windy, etc.
👉 Dans un projet CanSat, on choisit la station météo la plus proche du lieu du lancement.
La relation pression ↔ altitude vient de la physique de l’atmosphère :
L’air est comprimé par son propre poids. Plus on monte :
La formule ci-dessus exprime précisément cette diminution.
Imaginons que tu mesures :
→ Résultat ≈ 423 m
Si tu avais utilisé 1013.25 hPa par défaut :
→ ≈ 500 m (erreur de +77 m)
Parce que la pression dépend de la masse d'air au-dessus de la région :
Donc, tu dois calibrer ton capteur en mettant à jour le P0 chaque jour ou avant chaque vol.
Oui, mais il faut bien comprendre ce que cela signifie.
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 :
👉 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.
➡️ 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".
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.
P_mesure.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.
On utilise la formule barométrique simplifiée :
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)
| 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.
raw_values.raw_values.