Connectez-vous à votre compte Altimeter Cloud
Pas encore de compte ? Créer un compte
Nous vous enverrons un lien de confirmation par e-mail. Vérifiez votre dossier spam si vous ne le recevez pas.
Vous avez déjà un compte ? Connexion
Le Mercury dispose soit d'un capteur de pression Bosch BMP390, soit d'un Bosch BMP581.
Ce script vous montre comment détecter lequel vous avez et lire sa température et sa pression et les convertir en une altitude.
La conversion standard utilisée dans ce programme suppose une pression de 1013,25 Hpa (moyenne) et une température ambiante de 15 degrés celsius.
Si vous consultez vos prévisions météorologiques locales pour votre lieu et votre heure et entrez cette pression à la place, vous devriez voir à peu près votre hauteur au-dessus du niveau de la mer avec ce script.
Si vous utilisez notre compilateur et téléchargeur en ligne, n'oubliez pas de connecter le moniteur série après avoir réinitialisé (appuyez sur le bouton d'alimentation) votre Mercury pour voir les informations qui s'affichent.
// Exemple de test de capteur de pression pour les altimètres Mercury (altimetercloud.com) #include "Wire.h" #include "Mercury_Pins.h" // Il existe plusieurs options de bibliothèques, nous avons choisi celles-ci pour notre exemple #include "Adafruit_BMP3XX.h" #include "Adafruit_BMP5xx.h" Adafruit_BMP3XX bmp3; Adafruit_BMP5xx bmp5; bool hasBMP581 = false; bool hasBMP390 = false; float seaLevelHpa = 1013.25; // La pression météorologique du niveau de la mer prévue pour votre lieu. void setup() { Serial.begin(115200); // Allumez l'alimentation des capteurs sur l'altimètre Mercury pinMode(VACC, OUTPUT); digitalWrite(VACC, HIGH); delay(100); // Démarrez I2C sur les broches SDA et SCL du Mercury Wire.begin(SDA, SCL); // Détectez quel capteur de pression est présent sur votre Mercury. Les révisions antérieures avaient un Bosch BMP390 et les révisions ultérieures (3+) ont le Bosch BMP581 if (bmp5.begin(0x47, &Wire)) { hasBMP581 = true; Serial.println("BMP581 trouvé"); } else if (bmp3.begin_I2C(0x77, &Wire)) { hasBMP390 = true; Serial.println("BMP390 trouvé"); } else { Serial.println("Aucun capteur trouvé !"); } } void loop() { float temp = 0, pressure = 0, alt = 0; // Lisez le capteur détecté pour sa pression et sa température if (hasBMP581 && bmp5.performReading()) { temp = bmp5.temperature; pressure = bmp5.pressure; } else if (hasBMP390 && bmp3.performReading()) { temp = bmp3.temperature; pressure = bmp3.pressure / 100.0; } else { delay(500); return; } // Convertissez la pression en altitude en utilisant l'hypothèse standard d'une température ambiante de 15 degrés celsius et de la pression au niveau de la mer définie précédemment. alt = 44330.0 * (1.0 - pow(pressure / seaLevelHpa, 0.1903)); Serial.printf("Temp : %.1fC Pression : %.2f hPa Alt : %.1f m\n", temp, pressure, alt); delay(500); }#pragma once /* * Définitions des broches Mercury (ESP32-C6) * Assignations des GPIO spécifiques à la carte */ // ââ LED d'état (NeoPixel) ââ #define LEDPOWER 3 // Alimentation NeoPixel (mettre à HIGH pour activer) #define LED 2 // Signal de données NeoPixel // ââ Bus I2C ââ #define SDA 21 // Données I2C #define SCL 22 // Horloge I2C // ââ Alimentation des capteurs ââ #define VACC 20 // Rail d'alimentation des capteurs (mettre à HIGH pour activer) // ââ Ports à usage général ââ #define GP06 6 // Port GP06 #define GP07 7 // Port GP07 // ââ Sortie haute intensité ââ #define OUT1 5 // Sortie haute intensité (p. ex. pyro / relais) // ââ LED d'autonomie de batterie ââ #define BL1 4 // LED batterie 1 (plus basse) #define BL2 14 // LED batterie 2 #define BL3 15 // LED batterie 3 #define BL4 18 // LED batterie 4 #define BL5 19 // LED batterie 5 (plus haute) // ââ Indicateurs ââ #define DISK 8 // LED d'activité du disque // ââ Analogique / Détection ââ #define BATIN 0 // Tension de batterie (diviseur 1:1) #define USBDETECT 1 // Détection d'alimentation USB (HIGH = USB présent) #define BUTTON 9 // BOUTON sur la carte, bouton de démarrage mais peut être utilisé