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
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.
/* * 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