Probleme mit dem Druck-/Temperatursensor BMP280


#1

Hallo!

Ich bin neu im Bereich SenseBox unterwegs. Ich habe mir eine senseBox:home mit Wifi-Bee und Temperatur-/Luftfeuchtigkeitssensor sowie zusätzlich einen Druck-/Temperatursensor BMP280, einen Lichtsensor TSL45315 und einen UV-Lichtensor VEML6070 bestellt.

Mit dem Sketch “mcu_component_test“ werden mir auch alle Sensoren mit Messwerte aufgelistet. Wenn ich jetzt jedoch die Box aus openSenseMap einrichte und das mir zugeschickte Sketch auf der Box übertrage so wird kein Wert für den Luftdruck übertragen.

Was mache ich falsch?


#2

Hey @Severin,

dann wilkommen im Forum und danke dir für den Beitrag :+1:

Das Problem taucht bei der Kommunikation zwischen der senseBox MCU und dem BMP280 Drucksensor über die I2C Schnittstelle auf. Ein paar der neueren Drucksensoren sind unter ihrer Alternativadresse 0x77 am I2C-Bus zu erreichen (standardmäßig 0x76). Eigentlich sollte nur beim Schließen der Lötstelle auf der Sensorplatine auf die alternative Adresse umgestellt werden.

Um das zu lösen musst du in deinem Skript zur Datenübertragung die alternative Adresse bekannt machen. Als erstes musst du die Adresse 119 in die Liste der zu überprüfenden Adressen in Zeile 189 mit aufnehmen:

   byte sensorAddr[] = {41, 56, 57, 64, 118, 119};

Schau dir dazu die switch-case Anweisung innerhalb der Funktion checkI2CSensors() ab Zeile 211 an. Füge dort, wie unterhalb gezeigt, einfach die Adresse 0x77 zum Case hinzu:

   case 0x76:
   case 0x77:
      Serial.println("BMP280 found.");
      bmp = true;
      break;

Als nächstes musste du noch in der setup() Methode in Zeile 287 die richtige Adresse übergeben, wenn die Kommunikation gestartet wird:

   if (bmp)
       BMP.begin(0x77);

#3

Achja, im mcu_component_test wurde der Sensor übrigens erkannt weil es dort bereits implementiert war :see_no_evil: