Lesezeit ca. 7 Min.
arrow_back

Guter Riecher


Logo von Raspberry Pi Geek
Raspberry Pi Geek - epaper ⋅ Ausgabe 6/2022 vom 07.04.2022

Bosch Sensortex BME688

Artikelbild für den Artikel "Guter Riecher" aus der Ausgabe 6/2022 von Raspberry Pi Geek. Dieses epaper sofort kaufen oder online lesen mit der Zeitschriften-Flatrate United Kiosk NEWS.

Bildquelle: Raspberry Pi Geek, Ausgabe 6/2022

README

Der Sensor BME688 von Bosch Sensortec misst Temperatur, Luftfeuchte und Druck sowie Gase, auch in geringsten Mengen. Ein erster Artikel im RPG zeigte den grundlegenden Einsatz. Jetzt geht es darum, den komplexen Gassensor besser zu verstehen und seine Möglichkeiten auszureizen.

Umweltsensoren erfreuen sich großer Beliebtheit, es gibt sie in allen Preisklassen. Die meisten messen allerdings nur ein oder zwei Parameter, typischerweise Temperatur und Luftfeuchte oder Temperatur und Luftdruck. Der Bosch Sensortec BME6881 1 liefert dagegen wie schon sein Vorgänger BME680 gleich vier Sensorwerte: Temperatur, Luftfeuchte, Luftdruck und „Luftqualität“ – allerdings zu einem nicht geringen Aufpreis.

„Luftqualität“ steht hier in Anführungszeichen, weil der Sensor einen Widerstandswert ausgibt, der von verschiedenen Parametern abhängt und dessen Interpretation schwerfällt. ...

Weiterlesen
epaper-Einzelheft 9,99€
NEWS Jetzt gratis testen
Bereits gekauft?Anmelden & Lesen
Leseprobe: Abdruck mit freundlicher Genehmigung von Raspberry Pi Geek. Alle Rechte vorbehalten.
Lesen Sie jetzt diesen Artikel und viele weitere spannende Reportagen, Interviews, Hintergrundberichte, Kommentare und mehr aus über 1050 Magazinen und Zeitungen. Mit der Zeitschriften-Flatrate NEWS von United Kiosk können Sie nicht nur in den aktuellen Ausgaben, sondern auch in Sonderheften und im umfassenden Archiv der Titel stöbern und nach Ihren Themen und Interessensgebieten suchen. Neben der großen Auswahl und dem einfachen Zugriff auf das aktuelle Wissen der Welt profitieren Sie unter anderem von diesen fünf Vorteilen:

  • Schwerpunkt auf deutschsprachige Magazine
  • Papier sparen & Umwelt schonen
  • Nur bei uns: Leselisten (wie Playlists)
  • Zertifizierte Sicherheit
  • Freundlicher Service
Erfahren Sie hier mehr über United Kiosk NEWS.

Mehr aus dieser Ausgabe

Titelbild der Ausgabe 6/2022 von 10 tolle Jahre. Zeitschriften als Abo oder epaper bei United Kiosk online kaufen.
10 tolle Jahre
Titelbild der Ausgabe 6/2022 von Abfrageblocker. Zeitschriften als Abo oder epaper bei United Kiosk online kaufen.
Abfrageblocker
Titelbild der Ausgabe 6/2022 von Log-Auswerter. Zeitschriften als Abo oder epaper bei United Kiosk online kaufen.
Log-Auswerter
Titelbild der Ausgabe 6/2022 von Ausgepackt. Zeitschriften als Abo oder epaper bei United Kiosk online kaufen.
Ausgepackt
Mehr Lesetipps
Blättern im Magazin
Noch mehr Roboter
Vorheriger Artikel
Noch mehr Roboter
Nachgemessen
Nächster Artikel
Nachgemessen
Mehr Lesetipps

...

Zum Messen heizt eine integrierte Metallplatte die Luft kurzzeitig auf und registriert dann den Widerstand des Gases. Aus diesem Grund bleiben bei der Messung auch stabile Gase wie Stickstoff oder CO2 außen vor, denn diese reagieren bei Temperaturänderungen nicht mit einer Änderung des Widerstands. Echte CO2 -Sensoren kosten allerdings das Vierbis Fünffache des BME688. Der Kasten Alternativen zum BME688 gibt einen Überblick über Chips für solche und ähnliche Anwendungszwecke.

Hardware

Die nächsten Abschnitte zeigen, wie Sie einen Raspberry Pi Pico im Zusammenspiel mit dem BME688 zu einer Schnüffelnase umfunktionieren. Im Prinzip funktioniert das Breakout dank der I2 C-Schnittstelle aber mit jedem anderen Mikrocontroller und Kleinrechner. Der Sensor liefert über I2 C jedoch nur Rohwerte, die der Host aufwendig mit Korrekturwerten aus diversen Sensorregistern umrechnen muss2 2 . Diese komplexen 32-Bit-Operationen sprengen insbesondere die Programmspeicher von kleinen 8-Bit-MCUs. Dem RasPi Pico bereiten sie aber keine Probleme.

Der RasPi selbst eignet sich nicht als Host für Temperatursensoren, denn schon ohne Last produziert seine CPU so viel Abwärme, dass diese die Temperaturmessungen auf Dauer verfälscht. Metall leitet bekanntlich gut Wärme, die über die I2 C-Verbindung dann irgendwann beim Sensor ankommt.

Da hier aber das Messen des Gassensors im Mittelpunkt steht, belassen wir den Pico per USB-Kabel an einem RasPi Zero. Das Programm für den Pico gibt die Daten einfach mit printf() auf der seriellen USB-Schnittstelle aus, der Zero dient als Datenlogger. Wie das elegant und ohne viel Mehraufwand auch kontaktlos per Bluetooth funktioniert, erfahren Sie in der kommenden Ausgabe des Raspberry Pi Geek.

Programme und Bibliotheken

Das Pico-Programm für den Sensor setzt auf die offizielle Bosch-Programmierschnittstelle auf . Die Details unterscheiden sich nicht wesentlich von dem im Workshop zur Pico-Programmie-rung gezeigten Vorgehen . Dabei ging es ebenfalls um einen Bosch-Sensor (BME280 beziehungsweise BMP280). Sie finden diese Artikel auch im Download-Bereich zu diesem Beitrag.

Alternativen zum BME688

Am unteren Ende der Preis-und Leistungsskala liegen Chips wie der LM75A – nicht sehr genau, aber günstig und mit dem SOP-8 Format für das SMD-Selbstlöten geeignet. Breakouts gibt es ab 3,50 Euro, den Chip selbst je nach Menge deutlich billiger. Der Baustein misst nur die Temperatur und gibt diese via I2 C aus. Er eignet sich perfekt für Anwendungsfälle, in denen das Überoder Unterschreiten einer Grenztemperatur Alarm auslösen soll. Noch immer weitverbreitet, aber nicht mehr empfehlenswert sind die Sensoren DHT11 und DHT22. Sie arbeiten zu ungenau, ohne relevante preisliche Vorteile gegenüber neueren Chips mitzubringen (DHT11: 5 Stück 11 Euro, DHT22: etwa 8 Euro). Gerade den DHT22 gibt es oft in Verbindung mit dem ESP-01 zum selben Preis, beide zusammen bilden einen einfachen Remote-Sensor.

Als günstiger und besserer Nachfolger des DHT22 gilt der AM2320 (3 Euro) mit sehr ähnlichem äußerem Aufbau und Abmessungen. Er misst Temperatur und Luftfeuchte ebenso gut wie die Bosch-Sensoren, lässt sich aber über die I2 C-Schnittstelle deutlich einfacher in Betrieb nehmen. Allerdings gibt es für diesen Chip bislang noch keine Standardbibliotheken. Wer außer Temperatur auch den Luftdruck messen möchte, kommt früher oder später mit den beliebten Sensoren von Bosch Sensortec in Berührung. Der BMP280 (etwa 4 Euro) misst beide Werte. Der BME280 (ab 7 Euro) bietet zusätzlich noch das Messen der Luftfeuchtigkeit an und erweist sich damit als nützlicher, wenn auch nicht ganz billiger Allrounder. Achten Sie beim Kauf aber darauf, den richtigen Sensor zu erwischen, denn rein äußerlich unterscheiden sich beide nicht. Windige Verkäufer drehen arglosen Kunden daher gern den BMP280 an, anstatt ihnen den BME280 zu verkaufen. Am oberen Ende der BM-Reihe sitzen der BME680 und der BME688. Warum der BME680 noch zum Verkauf steht, bleibt ein Rätsel, denn er leistet weniger als der BME688, ist dafür aber sogar etwas teurer. Alle hier erwähnten Sensoren gibt es auch als Breakouts. Die billigen Versionen kommen mit Pins im Standardraster von 2,54 Millimeter, es gibt aber auch teurere Varianten mit Stemma/​Qt-oder Grove-Anschlüssen. Nicht alle Sensoren vertragen 5 Volt, luxuriöse Breakouts sorgen deshalb für das Level-Shifting. Auf dem Markt gibt es noch weitere Sensoren, die meisten aber ohne Maker-freundliches Breakout. Den Spitzensensor gibt es sowieso nicht, selbst identische Sensoren zeigen bei Parallelmessungen Abweichungen jenseits der in den Datenblättern versprochenen Genauigkeit.

Der einzige Unterschied besteht darin, dass sich der Code auf mehrere Projekte aufteilt. So erstellt das Projekt picobme688 die Pico-spezifische Schnittstellenbibliothek, während pico-bme688- scan das eigentliche Anwendungsprogramm enthält. Nach demselben Schema gibt es vom Autor noch weitere Repos, die den BME688 nutzen. Für eigene Projekte lässt sich das Scan-Projekt ideal als Vorlage nutzen.

Als Anwender und Programmierer müssen Sie sich aber nicht um die Details kümmern, Sie klonen einfach das Scanprogramm und initialisieren die Subprojekte (Listing 1). Das kopiert diese dann automatisch mit der Bibliothek und der Bosch-API auf die heimische Platte. Das Vorgehen für die Kompilation und Installation beschreibt der Beitrag „Durchstarten“ aus RPG 11-12/​2021 .

Betriebsmodi

Der BME688 unterstützt die vier Betriebsmodi Sleep, Forced, Parallel und Sequential. Letzterer schaffte es immer noch nicht in das Datenblatt des Sensors. Der Sleep-Modus versetzt den Sensor in einen Zustand mit niedriger Energieaufnahme. Beim Forced-Modus macht er eine Messung und wechselt danach automatisch wieder in den Tiefschlaf.

Beim Parallel-und Sequential-Modus verhält es sich anders: Sie dienen zum Vermessen kompletter Profile. Dabei handelt es sich um Kombinationen aus Temperatur, Heizdauer und Wiederholungszyklen. Das Ganze wirkt unnötig komplex, ein Mehrwert gegenüber gezielten Messungen lässt sich nicht erkennen. Außerdem geben die Messungen im parallelen und sequenziellen Modus falsche Werte für Temperatur und Luftfeuchte aus. Das liegt wahrscheinlich daran, dass die interne Heizplatte in diesen Modi die anderen Sensorkomponenten beeinflusst. Damit bleibt der Forced-Modus als einzig empfehlenswerter übrig, außer Sie weichen auf die Closed-Source-Bibliotheken von Bosch aus.

Das Scanprogramm des Autors verwendet deshalb nur den Forced-Modus. Zusätzlich zu Temperatur, Luftdruck und Luftfeuchte gibt das Programm für jeden Messzeitpunkt mehrere Gasmessungen aus. Ein paar Variablen dafür passen Sie in der Konfigurationsdatei CMakeLists. txtdes Projekts an3 3 . Dabei handelt es sich zum einen um je eine Liste mit Temperatur und Heizdauer. Außerdem sollten Sie auch die Meereshöhe ihres Standorts konfigurieren und gegebenenfalls die verwendeten GPIO-Pins für I2 C anpassen. Das Messintervall steht in der Variablen UPDATE_INTERVAL und muss ebenfalls an die Gegebenheiten angepasst werden. Für Testzwecke steht es auf einer Dauer von 10 Sekunden.

Die ausgelieferte Version des Programms verwendet drei Temperaturen zwischen 100 und 300 Grad und eine Heizdauern von 100, 200 und 300 Millisekunden, führt also insgesamt neun Mes-sungen je Zyklus durch. Das Programm gibt die Daten im CSV-Format über die serielle Schnittstelle aus4 4 . Dabei stammen allerdings Temperatur, Luftdruck und Feuchte von der ersten Messung, denn auch bei diesem Vorgehen zeigt sich, dass die Temperatur bei mehreren kurz aufeinander folgenden Messungen durch den sensorinternen Heizeffekt ansteigt und das Ergebnis verfälscht.

Die Einfärbung der CSV-Spalten aus Abbildung4 4 übernimmt die VS-Code-Erweiterung rainbow-csv, die Sie mit wenigen Klicks über den Marketplace installieren (siehe erster Teil des Workshops ). Das bietet ein schönes Beispiel dafür, wie der Editor Sie bei alltäglichen Aufgaben unterstützt.

Experimente

Sinn und Zweck des Programms besteht im Bestimmen optimaler Parameter für die Gasmessung. Schon ein Blick auf Abbildung4 4 zeigt, dass bei 100 Grad der gemessene Widerstand zehnmal so hoch ausfällt wie bei 200 Grad, bei 300 Grad liegen die Werte dann nochmals 75 Prozent niedriger. Der Einfluss der Heizdauer scheint beschränkt zu sein. Plausibel wirkt dieser erste Blick auf die Daten jedoch schon: Je höher die Messtemperatur, desto mehr Luftbestandteile regt sie an, weshalb das Gemisch besser leitet.

So ausgerüstet führen Sie erste Messreihen am Arbeitsplatz durch. Der Gassensor braucht für verlässliche Ergebnisse eine gewisse Einbrennzeit, aber schon im Erstbetrieb stabilisieren sich die Gaswerte nach kurzer Zeit. Der Autor spielte testweise drei Szenarien durch. Beim ersten misst der Sensor die Luftqualität im Homeoffice während eines Arbeitstags. Die beiden anderen Durchläufe betreffen den 3D-Druck eines kleinen Gehäuses, einmal mit PLA und einmal mit PETG.

Die Ergebnisse fallen etwas ernüchternd aus. Da der Sensor sich vor allem für das Messen organischer Verbindungen eignet, reagiert er kaum auf verbrauchte Luft im Arbeitszimmer5 5 . Nach einer Einlaufphase verbleiben die Messwerte auf etwa demselben Niveau. Kurzes Stoßlüften ändert zwar kurzzeitig den gemessenen Widerstand, aber selbst bei Versuchen mit längeren Phasen ohne Lüften gaben die Messwerten nie Anlass für ein Aufreißen der Fenster.

Nicht viel anders war es bei Messungen während des 3D-Drucks mit PLA oder PETG. Ersteres lieferte eine kleine Reaktion, die aber nur deshalb erkennbar war, weil der Autor den Zeitpunkt kannte. PETG beeinflusste die Messdaten dagegen überhaupt nicht. Auf die Reinigung der Druckfläche mit Isopropanol reagierte der Sensor dagegen sehr stark – und unterscheidet sich damit nicht von der menschlichen Nase.

Bei allen Messungen zeigte sich, dass Temperatur und Messdauer nur einen verschwindend kleinen Einfluss auf die Messwerte nahmen. Darüber hinaus unterschieden sich die Messwerte zwischen zwei Sensoren deutlich.

Fazit

Für den Alltagsbedarf des Makers eignet sich der BME688 nicht. Flüchtige organische Verbindungen spielen vielleicht für industrielle Anwendungen eine Rolle, aber nicht in den eigenen vier Wänden. Die Parameter Temperatur, Luftfeuchte und Luftdruck messen andere Sensoren genauso gut, und das für einen deutlich niedrigeren Preis.

Wer allerdings einen wachen Forschergeist mitbringt und den Sensor für eigene Experimente nutzen will, zieht womöglich die eine oder andere Erkenntnis aus den Messwerten.

In diesem Fall bietet es sich aber an, weitere Versuche mit den von Bosch angebotenen Closed-Source-Anwendungen und ‐Bibliotheken zu starten. Die Ergebnisse weisen dann zwar in etwa die Qualität von Voodoo auf, doch diese beruhen zumindest auf ordentlicher Ingenieurskunst.

(tle/jlu)

Der Autor

Bernhard Bablok arbeitet bei der Allianz Technology SE als SAP-HR-Entwickler. Wenn er nicht Musik hört oder mit dem Rad respektive zu Fuß unterwegs ist, beschäftigt er sich mit Themen rund um Linux, Programmierung und Kleincomputer. Sie erreichen ihn unter mail@bablokb.de.