Technisch funktioniert das so wie bei der Bilderkennung: Zuerst kommt eine Trainingsphase, während der Sie unter kontrollierten Bedingungen Messungen vornehmen und sie danach in eine (proprietäre) Software von Bosch einspeisen. Die Software spuckt daraufhin passende Messprofile für den Sensor aus. Später im normalen Einsatz kommt eine weitere proprietäre Software zum Zug, die dann die aktuellen Messungen mit den vorab gesammelten Daten vergleicht.
Um den Prozess zu vereinfachen, vertreibt Bosch auch eine Entwicklungsplatine (Abbildung 3) für das Huzzah32 von Adafruit, ein beliebtes ESP32-Board. Auf der Platine sitzen acht Sensoren und ein paar Buttons. Letztere dienen dem Beschriften der gerade vorgenommenen Messung, etwa nach der Messung der “Kaffeesorte 1”. Später wandern die so gesammelten Daten dann vom Entwicklungsboard in die KI-Software.

Abbildung 3: Eine Entwicklungsplatine soll das Training der Sensor-KI erleichtern. (Quelle: Bosch-Sensortec)
Ob die Auswertung tatsächlich künstliche Intelligenz erfordert oder auch klassische statistische Methoden ausreichen würden, sei dahingestellt. Tatsache ist, das nur wenig von all dem zur Verfügung stand, als dieser Artikel geschrieben wurde – es gab noch nicht einmal ein offizielles Datenblatt zum BME688 von Bosch. Nur das Github-Repository des Unternehmens mit einem C-API für die Sensoren BME680/BME688 [3] war verfügbar. Anfang April stand dann die angekündigte AI-Software online, was erste konkrete Versuche zuließ.
Die Analyse des APIs zeigt, dass sich der BME680 vom BME688 nur in ganz wenigen Details unterscheidet. Die Erweiterung der Pimoroni-Python-Library [2] des BME680 für den BME688 sollte also mit vertretbarem Aufwand klappen. Ob die Bibliothek aber jemals korrekt gearbeitet hat, erscheint eher fraglich, da die Registeradressen nicht mit dem Bosch-API zusammenpassen.
Python-Extensions
Pi3g vertreibt nicht nur den Sensor, sondern bemüht sich auch um das Bereitstellen einer einfachen Software-Schnittstelle. Auch wenn das C-API von Bosch eine gute Performance und einen geringen Ressourcenverbrauch aufweist, ist C/C++ nicht jedermanns Sache.
Deshalb entwickelt Pi3g eine Python-Erweiterung, die direkt das C-API von Bosch nutzt. Sie initialisieren damit den Sensor, konfigurieren ihn und nehmen Messungen vor. Die Kommunikation erfolgt dabei über I2C. Da die API prinzipiell rückwärtskompatibel ist, eignet sie sich auch für den BME680. Neuere Funktionen wie der parallele und sequenzielle Modus bleiben dabei dem BME688 vorbehalten.
Ein Ziel der Python-Erweiterung ist die schnelle Implementation von Anwendungen für den Sensor. Darüber hinaus soll es möglich sein, auch das BME688-Breakout für das Trainieren von Algorithmen im AI-Studio zu nutzen. Ein dafür geeignetes Python-Skript befindet sich bereits in Entwicklung, und Pi3g will es zusammen mit der Python-Erweiterung veröffentlichen [4].
Das Programm speichert die Messdaten im JSON-Format, und der Anwender importiert sie anschließend in das AI-Studio (Abbildung 4). Dessen Installation ist mit wenigen Zeilen erledigt, die notwendigen Befehle zeigt Listing 1.
Listing 1
BME688-Anwendersoftware installieren
$ wget https://pi3g.com/wp-content/uploads/2021/04/BME688.zip $ unzip BME688.zip $ cd BME688/ $ sudo python3 setup.py install
Neben dem öffentlichen C-API will Bosch noch eine neuere Version seiner Closed-Source-Software BSEC (Bosch Sensortec Environmental Cluster [5]) bereitstellen. Sie enthält Bibliotheken im Binärformat für viele Plattformen. Auch hier ist die Entwicklung einer einfach anwendbaren Python-Schnittstelle geplant.
Fazit
Der Vorteil des aktuell noch teureren BME688 gegenüber dem BME680 ergibt sich erst im Zusammenspiel mit proprietärer Software, die es dazu nur unter Windows gibt. Für industrielle Anwender ergibt so etwas Sinn, für den Maker zu Hause eher nicht. Er fährt preisbewusster mit dem BME680.
Da allerdings das Design der üblichen BME680-Breakouts wenig durchdacht ist, spricht trotzdem vieles für den Einsatz der Pi3g-Platine. Bis zum Erscheinen des Artikels müsste sich auch die Software-Situation bessern. Da sich die grundlegende Ansteuerung des Chips im Vergleich zum Vorgänger nur minimal geändert hat, dürften die notwendigen Anpassungen schnell Eingang in die einschlägigen Bibliotheken finden, und auch die Preise sollten sinken. (jlu)
Die Autoren
Bernhard Bablok (mailto:[email protected]) arbeitet bei der Allianz Technology SE als SAP-HR-Entwickler. Wenn er nicht Musik hört oder im Freien unterwegs ist, beschäftigt er sich mit Themen rund um Linux, Programmierung und Kleincomputer. Nathan Busler (mailto:[email protected]) arbeitet als Programmierer bei Pi3g. Er studiert Wirtschaftsmathematik an der Universität Leipzig, macht gern Ausflüge mit seiner Freundin und seinem Hund und spielt American Football bei den Leipzig Hawks.
Infos
- BME688 bei Pi3g: https://buyzero.de/products/luftqualitatssensor-bosch-bme688-breakout-board?variant=39417204801716
- BME680-Python-Bibliothek von Pimoroni: https://github.com/pimoroni/bme680-python
- Offizielle API von Bosch-Sensortec: https://github.com/BoschSensortec/BME68x-Sensor-API
- Info-Seite von Pi3g: https://pi3g.com/products/bme688-breakout-board/
- BSEC: https://www.bosch-sensortec.com/software-tools/software/bsec/






