Manuel Mercury V1
Découvrez comment voler rapidement et facilement, connectez votre altimètre pour télécharger vers le site web Altimeter Cloud et accédez à toutes les fonctionnalités avancées également. Si vous êtes bloqué ou si vous débutez, c'est l'endroit où il faut être.

Exemple de code : Démarrage de la communication I2C

PDF

Les broches I2C sont connectées à l'IMU, au capteur de pression et aux ports d'extension.
SDA est sur la broche 21 et SCL sur la broche 22. Ces broches sont définies dans le fichier Mercury_pins.h afin que vous puissiez simplement utiliser les noms SDA et SCL.
Wire.begin(SDA, SCL);

Le code ci-dessous active l'alimentation du capteur, démarre I2C et analyse les appareils disponibles toutes les 10 secondes.
Connectez un moniteur série après redémarrage du Mercury une fois le code compilé et téléchargé pour afficher le résultat. 

Vous utilisez Arduino IDE ? Notre programmateur en ligne inclut Mercury_Pins.h par défaut afin que les noms de broches fonctionnent sans problème. Si vous utilisez Arduino IDE ou un autre programmateur, copiez le contenu de l'onglet Mercury_Pins.h et collez-le en haut de votre programme.
/*
 * Mercury I2C Scanner
 * Analyse le bus I2C et signale tous les appareils connectés.
 * Utile pour vérifier les adresses des capteurs après l'assemblage.
 */

#include "Wire.h"
#include "Mercury_Pins.h"

void setup() {
    Serial.begin(115200);
    delay(1000);

    Serial.println("Mercury I2C Scanner");
    Serial.println("====================");

    // Activation de l'alimentation du rail de capteur
    pinMode(VACC, OUTPUT);
    digitalWrite(VACC, HIGH);
    delay(100);  // Permet aux capteurs de se stabiliser

    // Démarrage de I2C sur les broches Mercury
    Wire.begin(SDA, SCL);

    Serial.println("Sensor power: ON");
    Serial.println("I2C bus ready (SDA=" + String(SDA) + " SCL=" + String(SCL) + ")");
    Serial.println();
}

void loop() {
    int found = 0;

    Serial.println("Scanning I2C bus...");

    for (int row = 0; row < 128; row += 16) {
        // Row label

        for (int col = 0; col < 16; col++) {
            int addr = row + col;

            // Skip reserved addresses (0x00-0x07 and 0x78-0x7F)
            if (addr < 0x08 || addr > 0x77) {
                continue;
            }

            Wire.beginTransmission(addr);
            int result = Wire.endTransmission();

            if (result == 0) {
                found++;
            } else {
            }
        }
    }

    Serial.println();
    if (found == 0) {
        Serial.println("No devices found. Check wiring and sensor power.");
    } else {
        Serial.println(String(found) + " device(s) found:");
        // Second pass to list found devices with common names
        for (int addr = 0x08; addr <= 0x77; addr++) {
            Wire.beginTransmission(addr);
            if (Wire.endTransmission() == 0) {
                Serial.printf("  0x%02X", addr);
                // Identify common sensors
                switch (addr) {
                    case 0x47: Serial.print(" - BMP581 (Mercury Pressure)"); break;
                    case 0x6B: Serial.print(" - LSM6DSO32 (Mercury IMU)"); break;
                    case 0x77: Serial.print(" - BMP390 (Mercury Pressure)"); break;
                }
                Serial.println();
            }
        }
    }

    Serial.println();
    Serial.println("Next scan in 10 seconds...");
    Serial.println("---");
    delay(10000);
}

#pragma once
/*
 * Mercury (ESP32-C6) Pin Definitions
 * Board-specific GPIO assignments
 */

// ââ Status LED (NeoPixel) ââ
#define LEDPOWER      3    // NeoPixel power (drive HIGH to enable)
#define LED           2    // NeoPixel data signal

// ââ I2C Bus ââ
#define SDA           21   // I2C data
#define SCL           22   // I2C clock

// ââ Sensor Power ââ
#define VACC          20   // Sensor power rail (drive HIGH to enable)

// ââ General Purpose Ports ââ
#define GP06          6    // GP06 port
#define GP07          7    // GP07 port

// ââ High Current Output ââ
#define OUT1          5    // High current output (e.g. pyro / relay)

// ââ Battery Bar LEDs ââ
#define BL1           4    // Battery LED 1 (lowest)
#define BL2           14   // Battery LED 2
#define BL3           15   // Battery LED 3
#define BL4           18   // Battery LED 4
#define BL5           19   // Battery LED 5 (highest)

// ââ Indicators ââ
#define DISK          8    // Disk activity LED

// ââ Analogue / Detection ââ
#define BATIN         0    // Battery voltage (1:1 divider)
#define USBDETECT     1    // USB power detect (HIGH = USB present)
#define BUTTON        9    // BUTTON on the board, boot button but can be used