J'ai créé un petit sketck avec les lib Adafruit avec BME280 et un afficheur SSD1306.
Apres certain temps j'ai l'attitude qui s'affiche avec une valeur négatif, alors que j'ai rien changé au niveau du code. J'ai mis comme valeur pour SEA LEVEL PRESSURE 1024 ==>#define SEALEVELPRESSURE_HPA (1024) .
J'ai même fais une reset du flash avec la commande : python.exe -u -m esptool --port COM12 erase_flash
J'ai mis comme valeur pour SEA LEVEL PRESSURE1024
#define SEALEVELPRESSURE_HPA (1024)
Ci-dessous les nouvelles valeurs avec l'altitude afficher en négative.
Temperature = 21.00 *C
Temperature = 69.80 *F
Pressure = 1029.26 hPa
Approx. Altitude = -43.22 m
Humidity = 43.37 %
Veuillez trouvez ci-dessous tous le code:
/*********
ESP 32 BME280 & OLED
GPIO 22 SCK (SCL Pin)
GPIO 21 SDI (SDA pin)
*********/
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SEALEVELPRESSURE_HPA (1024)
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 32
Adafruit_BME280 bme; // I2C
// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
Adafruit_SSD1306 displayOld(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
unsigned long delayTime;
void setup() {
Serial.begin(115200);
Serial.println(F("BME280 test"));
bool statusBME;
bool statusOLD;
// default settings
// (you can also pass in a Wire library object like &Wire2)
statusBME = bme.begin(0x76);
statusOLD = displayOld.begin(SSD1306_SWITCHCAPVCC, 0x3C);
if (!statusBME) {
Serial.println("Could not find a valid BME280 sensor, check wiring!");
while (1);
}
if(!statusOLD) {
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
Serial.println("-- Default Test --");
//Delay Pause for 10 min 600000
delayTime = 10000;
Serial.println();
// Clear the buffer
displayOld.clearDisplay();
displayOld.setTextSize(1);
displayOld.setTextColor(WHITE);
displayOld.setCursor(0,0);
displayOld.display();
}
void loop() {
printValues();
delay(delayTime);
}
void printValues() {
//Display Telemetry
displayOld.clearDisplay(); // clear the display
displayOld.setCursor(0,0);
//Display temperature celsius
Serial.print("Temperature = "); Serial.print(bme.readTemperature()); Serial.println(" *C");
//displayOld.print("Temp:"); displayOld.print(bme.readTemperature()); displayOld.println("*C");
// Convert temperature to Fahrenheit
Serial.print("Temperature = ");Serial.print(1.8 * bme.readTemperature() + 32); Serial.println(" *F");
//displayOld.print("Temp:"); displayOld.print(1.8 * bme.readTemperature() + 32); displayOld.println("*C");
//Display Pressure
Serial.print("Pressure = "); Serial.print(bme.readPressure() / 100.0F); Serial.println(" hPa");
//displayOld.print("Pressure = "); displayOld.print(bme.readPressure() / 100.0F); displayOld.println("*C");
//Display Approx. Altitude
Serial.print("Approx. Altitude = "); Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA)); Serial.println(" m");
displayOld.print("App.Altitude ="); displayOld.print(bme.readAltitude(SEALEVELPRESSURE_HPA)); displayOld.println("*C");
//Display Humidity
Serial.print("Humidity = "); Serial.print(bme.readHumidity()); Serial.println(" %");
displayOld.print("RH:"); displayOld.print(bme.readHumidity()); displayOld.println("*C");
Serial.println();
displayOld.display(); // write the buffer to the display
}
La pression moyenne au niveau de la mer est 1013.25 hPa environ. Et si tu montes la pression va diminuer et ta mesure de pression te permettra de connaitre la valeur de ton ascension.
Admettons que tu prends 1013.25hPa comme valeur de référence.
Si un regime de basse pression s'installe la pression au niveau de la mer va baisser. Si tu n'as pas bougé mais que tu prends toujours comme référence les 1013.25 hPa le calcul de l'ascension va t'indiquer que tu es descendu.
Si un regime de haute pression s'installe la pression au niveau de la mer va monter. Si tu n'as pas bougé mais que tu prends toujours comme référence les 1013.25 hPa le calcul de l'ascension va t'indiquer que tu es monté.
Pour qu'un altimètre donne une information pertinente il faut mettre à jour périodiquement la pression de référence car elle dépend de la météo du moment.
En pratique, on fait souvent le contraire. On connait l'altitude du lieu d'où l'on part. On mesure la pression locale, on indique l'altitude du lieu et on se sert de ces informations pour calculer la nouvelle altitude lorsqu'on va se déplacer.
Bonjour tous le monde,
Merci pour vos explications. Je suppose que j'ai été dans un régime de basse pression. @fdufnews Je fais un test avec la valeur que vous m'avais communiquer @jelopo je supprime les parenthèses @ua6em je vais demander à la tour de contrôle la pression
Bonsoir, @jelopo test fait aussi dans les parenthèse, j'ai la même altitude. @fdufnews
J'ai changé la valeur en 1013.25, l'altitude a passé à -155.03m.
Je suis à Tunis, mon altitude est de 44,5619216 sur google earth.
An changeant cette valeur define SEALEVELPRESSURE_HPA, la pression a bien changé:
Avec 1030hPa, l'altitude est -15.87m
Avec 1035hPa, l'altitude est 24.90 m
Avec 1037hPa, l'altitude est 40.94 m
Avec 1037.4hPa, l'altitude est 44.56 m
Avec 1037.5hPa, l'altitude est 40.94 m
Avec 1038hPa, l'altitude est 48.93 m
Avec 1040hPa, l'altitude est 65.16 m
Je fais un test, avec un enregistrement dans une base de données.
Openweather propose une API pour avoir le hPa
@sameheddine
Si cela continue en anglais je déplace dans la section anglaise.
Ici c'est un lieu de partage, ce n'est pas un service après vente arduino. Un peu de respect pour ceux qui viennent chercher de l'aide et qui ne parlent pas anglais.
Tu peux toujours fermer ton sujet ici et en ouvrir un autre dans la langue de ton choix.
Qu'est-ce que tu n'as pas compris dans cette explication.
La pression de référence ne peut pas être une constante. Il faut l'actualiser périodiquement.
La pression change avec l'altitude certes mais elle change aussi avec les conditions atmosphériques.
Il faut prévoir une fonction de calibration qui prend en compte une pression et une altitude connue à un moment donné. Cette valeur doit provenir d'une source fiable (aéroport, service météo, ...).
Une fois cette calibration réalisée, sur une période de temps limitée, et si les conditions météo sont stables, la variation de pression reflétera effectivement les changements d'altitude.
Au bout d'un certain temps il faut recommencer cette calibration. Si les conditions météo sont très stables on peut refaire la calibration au bout de plusieurs heures, voir une journée. En régime d'orage, la pression peut chuter très rapidement en moins d'une heure.
Attention aussi au fait que les services météo donnent généralement la pression au niveau de la mer. Il faut donc la corriger en fonction du lieu où tu te trouves d'où la nécessité de connaitre précisément l'altitude du lieu où la calibration est réalisée.
Bonjour @fdufnews ,
Ce que tu as dis est vrais. je vais essai un fonction pour que cette valeur soit ajuster automatiquement.
Merci encore pour vos information