Heute möchten wir Ihnen das BME280 Sensor-Modul vorstellen.
Das Modul ist mit einem Umgebungssensor von Bosch bestückt. Dieser vereint die 3 verschiedenen Sensortypen: Drucksensor, Luftfeuchtigkeitssensor und Temperatursensor. Dies alles in einem kleinen 8-Pin-Gehäuse.
Dieser befindet sich auf einer kleinen Platine mit 4 Pins: VIN, GND, SCL und SDA.
Das macht es sehr einfach den Sensor über I²C mit einem Mikrocontroller zu verbinden.
Wir verwenden in diesem Beispiel einen AZ-Delivery Mikrokontroller, kompatibel mit Arduino Uno-R3.
Dabei verbinden wir folgende Pins:
AZ-Delivery Mikrokontroller, kompatibel mit Arduino Uno R3 |
BME280 Modul |
3,3v |
VIN |
GND |
GND |
SCL |
SCL |
SDA |
SDA |
Wir nutzen für unser Projekt 2 Libraries von Adafruit: „Adafruit Unified Sensors“ und „Adafruit BME280 Library“
Falls diese noch nicht installiert sind kann man diese am einfachsten über den Bibliotheksverwalter der Arduino IDE einbinden.
Dann über „Datei“ → „Beispiele“ → „Adafruit BME280 Library“ → „bme280test“ den Testsketch öffnen.
Nachdem der Sketch kompiliert und hochgeladen ist, öffnen wir den seriellen Monitor durch klicken auf das Symbol rechts oben (Oder mit der Tastenkombination Strg+Shift+M):
Falls nun wie hier die Meldung „Could not find a valid BME280 sensor, check wiring!“ erscheint, muss im Sketch eine Zeile angepasst werden.
status = bme.begin();
auf
status = bme.begin(0x76);
Nun wird der Sensor korrekt ausgelesen:
Wir hoffen, dass Ihnen unser heutiger Blogbeitrag mit dem neuen BME280 Sensor gefallen hat, und wir freuen uns auf Ihre Kommentare. Bis zum nächsten Beitrag von AZ-Delivery, Ihrem Experten für Mikroelektronik!
4 Kommentare
Lollo7579
Hatte das selbe Problem wie foto2004 an einem ESP32 Wroom bis mir die Idee kam SCA & SCL mal zu tauschen und siehe da Sensor läuft. ;-)
Simon Kellner
Habe den Sensor zuerst auch mit I2C-Adresse 0×76 nicht zum Laufen bekommen.
Habe dann die Adafruit-Library erweitert, um vorab die Chip-ID auszulesen.
Diese war nicht 0×58 (Default in Adafruit) sondern 0×60. Danach wurden auch die Werte ausgelesen.
→ status = bme.begin(0×76, 0×60);
foto2004
Also ich bekomme das Teil absolut nicht zum laufen.
Ich habe es an einem ESP-32 NodeMCU Developmentboard :
VIN = 3V3
GND = GND
SCL = G5
SDA = G4
Hat da jemand eine Idee, es kommt bei mir in dem Testsketch immer dass er das Board nicht finden kann. Habe auch schon versucht die Adresse zu ändern ohne Erfolg .
Dino Schmitz
Hallo,
eine Frage zum Raspberry (3b mit aktuellem Rasbian Stretch). Mit den i2ctools (i2cdetect -y 1) wird der Sensor bei mir erkannt mit adresse x76. Bei Ansprache unter Python wird unabhängig von der verwendeten Bibliothek ein Fehler geworfen. Z.B.:
File “bme280.py”, line 56, in readBME280ID
(chip_id, chip_version) = bus.read_i2c_block_data(addr, REG_ID, 2)
IOError: [Errno 121] Remote I/O error
Ist eine funktionierende Bibliothek bekannt oder gibt es eine andere Lösung?
Vielen Dank