ID capteur BME280

Bonjour tous le monde !!

Encore un petit soucis.. J'aurai voulu récuperer l'ID d'un capteur BME280 avec les infos que j'ai trouvé sur ce site https://community.bosch-sensortec.com/t5/MEMS-sensors-forum/Unique-IDs-in-Bosch-Sensors/m-p/6020#M62 mais sans succès..

Pourriez-vous m'aider a comprendre ou je fais faux.... Merci à vous !!!


#include <Wire.h>
#include <Adafruit_BMP280.h>

#define BME280_REG_UNIQUE_ID UINT8_C(0x83)

uint8_tuid_regs[4] ;


Adafruit_BMP280 bmp; // I2C

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

  unsigned status;
  //status = bmp.begin(BMP280_ADDRESS_ALT, BMP280_CHIPID);
  status = bmp.begin();
  if (!status) {
    Serial.println(F("Could not find a valid BMP280 sensor, check wiring or "
                      "try a different address!"));
    Serial.print("SensorID was: 0x"); Serial.println(bmp.sensorID(),16);
    Serial.print("        ID of 0xFF probably means a bad address, a BMP 180 or BMP 085\n");
    Serial.print("   ID of 0x56-0x58 represents a BMP 280,\n");
    Serial.print("        ID of 0x60 represents a BME 280.\n");
    Serial.print("        ID of 0x61 represents a BME 680.\n");
    while (1) delay(10);
  }

bme280_get_regs(BME280_REG_UNIQUE_ID, uid_regs, 4, dev);
uint32_t unique_id = ((((uint32_t)uid_regs[3] + ((uint32_t)uid_regs[2] << 8)) & 0x7fff) << 16) +
                                     (((uint32_t)uid_regs[1]) << :visage_souriant_avec_lunettes_de_soleil:+ (uint32_t)uid_regs[0] ;
}

void loop() {

    Serial.println(unique_id);

    Serial.println();
    delay(2000);
}

Pour ceux que ça intéresse voici comment j'ai fait au final pour récupérer l'ID unique d'un capteur BME280 !

Ficher à incorporer dans la bibliothèque Adafruit BME

Code :

#include <BME280I2C.h>
#include <Wire.h>

#define SERIAL_BAUD 115200

BME280I2C::Settings settings(
   BME280::OSR_X1,
   BME280::OSR_X1,
   BME280::OSR_X1,
   BME280::Mode_Forced,
   BME280::StandbyTime_1000ms,
   BME280::Filter_16,
   BME280::SpiEnable_False,
   BME280I2C::I2CAddr_0x76
);

BME280I2C bme(settings);

//////////////////////////////////////////////////////////////////
void setup()
{
  Serial.begin(SERIAL_BAUD);

  while(!Serial) {} // Wait

  Wire.begin();

  while(!bme.begin())
  {
    Serial.println("Could not find BME280 sensor!");
    delay(1000);
  }

  switch(bme.chipModel())
  {
     case BME280::ChipModel_BME280:
       Serial.println("Found BME280 sensor! Success.");
       break;
     case BME280::ChipModel_BMP280:
       Serial.println("Found BMP280 sensor! No Humidity available.");
       break;
     default:
       Serial.println("Found UNKNOWN sensor! Error!");
  }

  uint32_t uniqueID = bme.UniqueId();
  char buffer[9];
  sprintf(buffer, "%08X", uniqueID);
  Serial.print("Unique ID: 0x");
  Serial.println(buffer);

}

//////////////////////////////////////////////////////////////////
void loop()
{
   delay(500);
}

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.