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:


#4

Hallo,
also ich habe das gleiche Problem und der MCU Test zeigt auch, dass der Sensor die Adresse 0x77 hat, jedoch funktioniert die Lösung bei mir nicht. Sobald ich die Lösung wie oben ändere, sendet die Sensebox gar keine Daten mehr. Die Sketch kompiliert ohne Fehler…

Edit: Okay, ich habe die Sensebox gelöscht und nochmal komplett neu gemacht, neue Sensor-IDs etc. Dann ging es mit der oben beschriebenen Änderung.


#5

Moin,

da ich auch schlechte Erfahrungen mit den BMP280 Sensoren gemacht habe, kurz von mir eine Erklärung meiner Vorgehensweise, damit andere User der senseBox nicht in dieselbe Falle wie einige User vorher tippen.

Im Zubehör für die senseBox gibt es 2 verschiedene Luftdrucksensoren, die beide senseBox BMP280 heissen. Der eine mit der Art.Nr.: 20160103 kostet z. B. 4,76 € bei www.watterott.de und hat die Geräteadresse 0x77 ! Im per eMail zugeschickten Sketch wird aber explizit die Adresse 0x76 angesprochen. Da kann man lange den Fehler suchen, bis man auf die Lösung kommt :roll_eyes:

Dann gibt es noch bei Shop.watterott.de den BMP280 mit der Artikelnummer: 201816 für 12,99 €. Dessen Adresse kenne ich nicht (vermutlich aber 0x76), da ich nur 2 der Sensoren mit der Artikel-Nr. 20160103 einsetze.

Letztendlich habe ich mit I2C-Scanner Programm (ist zu finden in der Arduino IDE unter Beispiele - senseBox) die richtige Adresse des BMP280 herausgefunden und konnte dann den Sketch anpassen.