Bonjour, je voudrais pouvoir lire les données de deux capteurs de pression BMP280 mais je trouve pas comment faire (je présume qu'il est possible d'en lire deux étant donné qu'ils ont 2 adresses possibles).
J'arrive à lire les données d'un seul à la fois mais je ne peux pas trouver de bibliothèque conçue pour en lire plusieurs, les seules que j'ai trouvé sont pour le BME280 et ne fonctionnent apparemment pas avec le BMP280. Je ne trouve pas de moyens de définir l'adresse des capteurs dans les bibliothèques conçues pour le BMP280, comme Adafruit_BMP280 et donc de différencier les deux capteurs...
Il y a t-il une bibliothèque pour le BMP280 qui permettent de lire 2 capteurs en utilisant leurs deux adresses possibles ?
Selon https://cdn-shop.adafruit.com/datasheets/BST-BMP280-DS001-11.pdf le BMP280 a deux modes, fixés au cablage et ces modes sont gérés par lady Ada :
un mode SPI (hardware ou bit banged) -avec les fils de selection donnés, mais sans adresse I2C et un mode I2C (avec deux adresses).
Le mode SPI bit banged est ultra flexible, et je ne vois pas ce qui empêcherait de cabler deux SPI (si ce n'est le tas de fils).
Ceci a l'air confirmé par https://cdn-learn.adafruit.com/downloads/pdf/adafruit-bmp280-barometric-pressure-plus-temperature-sensor-breakout.pdf, tout en bas de la page 5:
les 3 fils de donnees entrantes, sortantes et d'horloge sont câblés ensemble, et chaque BMP a un fil de selection different ....
L'avantage, par rapport à l'I2C, est que vous pouvez avoir plus de deux BMP280 (à chaque fois, ça rajoute un fil).... au prix de beaucoup de fils....
j'imagine que je dois ajouter "Adafruit_BMP280 bmp2;" après le premier, mais où dois-je mettre bool begin(uint8_t addr = BMP280_ADDRESS, uint8_t chipid = BMP280_CHIPID); ?
L’adresse sera 0x76 ou 0x77 et l'ID de 0x58 mais comment sera t-il relié aux instances d'objets précédentes ?
if (!bmp.begin()) { // 0x77 par défaut
Serial.println(F("Could not find a valid BMP280 sensor, check wiring!"));
while (1);
}
if (!bmp2.begin(0x76)) {
Serial.println(F("Could not find a valid BMP280 sensor, check wiring!"));
while (1);
}