Přihlaste se ke svému účtu Altimeter Cloud
Nemáte účet? Vytvořit účet
Pošleme vám potvrzovací odkaz e-mailem. Zkontrolujte složku se spamem, pokud ho neobdržíte.
Již máte účet? Přihlásit se
Mercury má buď tlakový senzor Bosch BMP390 nebo Bosch BMP581.
Tento skript vám ukáže, jak zjistit, který z nich máte, a jak si přečíst jeho teplotu, tlak a převést jej na nadmořskou výšku.
Standardní konverze použitá v tomto programu předpokládá 1013,25 Hpa (průměrný) tlak a okolní teplotu 15 stupňů Celsia.
Pokud si najdete předpověď počasí pro vaši lokalitu a čas a místo toho zadáte její tlak, měl by vám tento skript zobrazit zhruba vaši výšku nad mořskou hladinou.
Pokud používáte náš online kompilátor a nahrávač, nezapomeňte po resetování (stisknutí tlačítka napájení) vašeho Mercury připojit monitor sériového portu, abyste viděli příchozí informace.
// Příklad testu tlakového senzoru pro Mercury altimetry (altimetercloud.com) #include "Wire.h" #include "Mercury_Pins.h" // Existuje poměrně hodně možností knihoven, vybrali jsme tyto pro náš příklad #include "Adafruit_BMP3XX.h" #include "Adafruit_BMP5xx.h" Adafruit_BMP3XX bmp3; Adafruit_BMP5xx bmp5; bool hasBMP581 = false; bool hasBMP390 = false; float seaLevelHpa = 1013.25; // Tíseníí tlak na hladině moře z předpovědi počasí pro vaši lokalitu. void setup() { Serial.begin(115200); // Zapněte napájení senzorů na Mercury altimetru pinMode(VACC, OUTPUT); digitalWrite(VACC, HIGH); delay(100); // Spusťte I2C na pinech SDA a SCL Mercury Wire.begin(SDA, SCL); // Zjistěte, který tlakový senzor je přítomen ve vašem Mercury, starší revize měly Bosch BMP390 a novější revize (3+) mají Bosch BMP581 if (bmp5.begin(0x47, &Wire)) { hasBMP581 = true; Serial.println("BMP581 nalezen"); } else if (bmp3.begin_I2C(0x77, &Wire)) { hasBMP390 = true; Serial.println("BMP390 nalezen"); } else { Serial.println("Senzor nenalezen!"); } } void loop() { float temp = 0, pressure = 0, alt = 0; // Přečtěte zjištěný senzor pro jeho tlak a teplotu 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; } // Převeďte tlak na nadmořskou výšku pomocí standardního předpokladu 15 stupňů Celsia okolní teploty a tlaku na hladině moře definovaného výše. alt = 44330.0 * (1.0 - pow(pressure / seaLevelHpa, 0.1903)); Serial.printf("Temp: %.1fC Tlak: %.2f hPa Výška: %.1f m\n", temp, pressure, alt); delay(500); }#pragma once /* * Mercury (ESP32-C6) Definice pinů * Přiřazení GPIO specifické pro desku */ // ââ Stavový LED (NeoPixel) ââ #define LEDPOWER 3 // Napájení NeoPixelu (nastavte HIGH pro povolení) #define LED 2 // Datový signál NeoPixelu // ââ I2C sběrnice ââ #define SDA 21 // I2C data #define SCL 22 // I2C hodiny // ââ Napájení senzoru ââ #define VACC 20 // Napájecí sběrnice senzoru (nastavte HIGH pro povolení) // ââ Univerzální porty ââ #define GP06 6 // Port GP06 #define GP07 7 // Port GP07 // ââ Vysokoproudý výstup ââ #define OUT1 5 // Vysokoproudý výstup (např. pyro / relé) // ââ LED indikátory baterie ââ #define BL1 4 // LED baterie 1 (nejnižší) #define BL2 14 // LED baterie 2 #define BL3 15 // LED baterie 3 #define BL4 18 // LED baterie 4 #define BL5 19 // LED baterie 5 (nejvyšší) // ââ Indikátory ââ #define DISK 8 // LED aktivity disku // ââ Analógové / Detekce ââ #define BATIN 0 // Napětí baterie (dělič 1:1) #define USBDETECT 1 // Detekce napájení USB (HIGH = USB přítomno) #define BUTTON 9 // BUTTON na desce, spouštěcí tlačítko, ale lze jej použít