BMP388 und BME280 Sensor an einem SPI Bus betreiben

Hallo zusammen,

ich versuche aktuell zwei verschiedene Bosch Sensoren vom TYP BMP388 und BME280 auf einem SPI-Bus zum laufen zu bringen.

Es funktionieren beide Sensoren einzeln in Verbindung mit einem WS5100 Ethernet Shield auf dem selben BUS.
Außerdem funktionieren auch mehrere Sensoren, des selben Typs auf dem gleichen Bus. Verschalte ich allerdings einen BMP280 und einen BME388 Sensor (ohne das Ethernet Shield) zusammen zu einem SPI-Bus, liefert der BMP388 keine brauchbaren Ergebnisse, der BME280 funktioniert weiterhin. Entferne ich den BME280 wieder, funktioniert der BMP388 wieder.

Ich verwende folgende Libraries:
GitHub - adafruit/Adafruit_BMP3XX (BMP388 Sensor)
GitHub - adafruit/Adafruit_BME280_Library: Arduino Library for BME280 sensors (BME388 Sensor)

Hatte jemand schon einmal dasselbe Problem, oder eine Idee woran das liegen könnte?

Viele Grüße,
KikaW

Da wir Deinen Sketch nicht kennen, müssen wir raten:

Du hast für beide den gleichen CS-Pin (10?) benutzt.

Gruß Tommy

Hi

Wenn die Sensoren einzeln klappen - MÜSSEN Diese auch im Verbund klappen.
Als Fehler kann eigentlich nur ein gemeinsamer CS-Pin in Frage kommen.
Auf SPI braucht jeder Slave seinen eigenen CS-Pin.
Der Rest (MOSI/MISO/SCK) sind überall gleich - über den CS-Pin wird EIN Slave ausgewählt, und nur Dieser nimmt die Daten an und gibt auch Welche zurück.
Wenn hier mehrere Sensoren gleichzeitig schwätzen, kommt Müll bei raus!

MfG

PS. Meinte doch, daß meine BME280 I²C wären - gibt Deren wohl mehrere Varianten

Erstmal vielen Dank für die Anworten.
Jedes Device hat einen eigenen CS Pin.
Ich konnte mittlerweile beobachten, dass der MISO (Am Sensor SDO) Pin die Probleme verursacht. Sobald dieser am BME280 eingesteckt ist, funktioniert der BMP388 nicht mehr.

Den Code habe ich euch mal aufs mindeste reduziert hier reingepackt:

#include <Wire.h>
#include <SPI.h>
#include <Adafruit_Sensor.h>
#include "Adafruit_BMP3XX.h"
#include <Adafruit_BME280.h>

#define SCK 13
#define MISO 12
#define MOSI 11
#define BMP1_CS 6
#define BMP2_CS 7
#define BME1_CS 8
#define BME2_CS 9

#define SEALEVELPRESSURE_HPA (1013.25)


Adafruit_BMP3XX bmp1(BMP1_CS); 
Adafruit_BMP3XX bmp2(BMP2_CS);
Adafruit_BME280 bme1(BME1_CS); 
Adafruit_BME280 bme2(BME2_CS); 

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


  if (!bmp1.begin()) {
    Serial.println("Sensor 1 missing");
  }
    if (!bmp2.begin()) {
    Serial.println("Sensor 2 missing");
  }
      if (!bme1.begin()) {
    Serial.println("Sensor 3 missing");
  }
        if (!bme2.begin()) {
    Serial.println("Sensor 4 missing");
  }


}

void loop() {


    Serial.print(bmp1.temperature);
    Serial.print(bmp1.pressure / 100.0);
    Serial.print(bmp2.temperature);
    Serial.print(bmp2.pressure / 100.0);
    Serial.print(bme1.readTemperature());
    Serial.print(bme1.readPressure() / 100.0F);
    Serial.print(bme1.readHumidity());
    Serial.print(bme2.readTemperature());
    Serial.print(bme2.readPressure() / 100.0F);
    Serial.print(bme2.readHumidity());



  
  delay(2000);
}

Vielen Dank für eure Hilfe