BME688, Gas-Sensor mit Artificial Intelligence (AI)

Nachdem unser Versuch ein System zur Messung der Ameisensäure-Konzentration im Bienenstock bei der Varroa-Behandlung zu entwickeln 2019 doch auf diverse Schwierigkeiten gestoßen ist – lange Aufwärmzeit, viel Wärmeeintrag ins Volk durch “Sensorheizung”, aufwändiger Aufbau durch notwendige 5 V für Heizung vs. 3 V für Microcontroller-Betrieb u.a. – könnte das Ganze mittlerweile deutlich einfacher realisierbar sein, und zwar mit dem BME688, der Sensor wird als Nachfolger des BME680 genannt, er ist konzeptionell allerdings anders.

Der BME688 misst unterschiedliche Gase und kann – das ist das tolle und neue daran – mit sample-Messungen trainiert werden, z.B. Kaffe vs. Tee vs. Luft. Die Trainingsergebnisse können dann auf den Microcontroller zurückgespielt werden und dienen als individuelle Kategorisierungsalgorithmen. Der Sensor und Microcontroller kann damit schon auf dem node Gase / Gerücke klassifizieren ohne Rohdaten o.ä. an einen Server schicken zu müssen, also wirklich on the edge schon Dinge “berechnen”!

Im Bienenvolk könnte man so neben Ameisensäure ggf. auch CO2 als Stoffwechselindikator des Bienenstocks messen oder auch einen Waldbrand (oder Smokereinsatz :-) detektieren. Vielleicht riechen Bienenvölker mit Königin auch anders als weisellose Völker und das ist mit dem Sensor unterscheidbar, Faulbrut (der Name sagt’s schon!) hat auch eine olfaktorische Komponente, zumindest im klinischen Stadium, mal schauen was der Sensor alles kann!

Ein fertiges dev-Kit gibt es für ca. 100 EUR:

Da ist ein ESP32 Feather von Adafruit dabei und das 8x (!) BME688 board, man kann auch was günstigeres nehmen, z.B. den BME688 solo auf einem breakout, was der Vorteil der 8 verbauten BME688 ist, erschließt sich mir noch nicht ganz.

Software und weitere PDFs

Das Tutorial unten zeigt wie man den Sensor trainiert:

  • Zuerst werden Sensor-Daten für verschiedenen Stoffgruppen gesammelt
  • Diese auf SD gesammelten Roh-Daten importiert man dann auf einem Rechner auf dem BME AI-Studio installiert ist, das ist eine Software vom Bosch über die der Nutzer die Klassifikation der gesammelten Daten angeben kann, wie im Beispiel etwa Kaffee vs. Raumluft.
  • BME AI-Studio berechnet dann das Modell und spuckt (Arduion?-)Code aus den man wieder für den ESP32 verwenden kann.
  • Mit dem neu geflashten code können dann neue samples kategorisiert werden.

Erläuterungen zum BME688 von Lady Ada

Ebenfalls gute Erklärung (im zweiten Teil), wenn mans etwas skuril (erster Teil) mag:

Hier noch ein Tutorial zu Bosch BME AI Studio:

[edit] Das Sensor-Kit kann auch per (Android und iOS) App per bluetooth ausgelesen werden:

[edit2] Allerdings ist die in den Videos gezeigte mobile Software nicht erhältlich / funktioniert nicht mit den anderen Komponenten, siehe posting #16 weiter unten

Note for us: Der BME688 muss einmalig 24 h “eingebrannt” werden um die Genauigkeit zu erhöhen, sollte man nicht vergessen!

Danke an Thorsten / @tox für die Idee sich mit dem Teil einmal näher zu beschäftigen.

1 Like

OT, aber auch von Bosch

Vor Tagen hatte ich mir schon ein “normales” BME688-Modul von Adafruit bestellt in der irrigen Annahme, dass ich den AI-Teil (Trainigsdaten sammeln) auch damit hinbekommen könnte. Ich möchte nicht ausschließen, dass es nicht geht, allerdings fordert der Arduino-Sketch bme688_dev_kit/bme688_dev_kit.ino doch einige Dinge, wie RTC und SD slot was ich so gerade nicht rumliegen habe. Nun habe ich noch etwas gewartet, bis mir Anika von der KI-Werkstatt zur Vorbereitung des Sensorik Workshops das offizielle developer kit von Bosch zugeschickt hat.

Developer kit

Links der Adafruit HUZZAH32, ESP32 Feather Board mit stacking headers, rechts das dev board von oben mit den 8 (1) BME688 und zwei Tastern:

Unterseite des BME-boards mit RTC, Pufferbatterie, SD-Karten-slot:

Das board ist mit der Arduino-Software bespielt und auf der mitgelieferten SD-Karte ist bereits eine Datei 2021_04_27_13_53_BoardConfiguration.bmeconfig drauf. Sogar die ersten zwei Seiten Kurzdoku (PDF) liegt als s/w ausgedruckt bei (never seen before on other boards! :-).

“Haben Problema” – Arduino Software nachträglich aufspielen

Laut Beschreibung soll das board Sensordaten loggen, sobald es mit Strom versorgt wrid. Tut es leider nicht, auf der SD ist auch nach Stunden nix drauf, scheint kein Einzelfall zu sein, auch Stefan von der KI-Werstatt hat das selbe bei einem anderen kit beobachtet. Hmmm … irgendwo in der Doku steht auch, dass Probleme mit der SD-Karte durch eine hohe Blinkfrequenz der onboard-LED signalisiert werden. So isses auch, 5x schnelles blinken, dann Pause, dann Wiederholung.

Gut, dann mal den Seriellen Monitor anwerfen:

WiFi scan start
WiFi Scan done
4 networks found
	1: OpenBeeResearch_GuestAccess (-60)*
	2: OpenBeeResearch (-61)*

Sehr lustig, ist da gar keine BME688-Software drauf??! Hat wohl jemand vergessen. Gut, dann DIY!

  1. Man kann sich bei Bosch den Link zum download des BME688 Development Kit Software anfordern (bekommt man nur per E-Mail)
  2. Datei bme688_development_kit_software_v1-5-5.zip entpacken
  3. im entpackten Ordner gibt es eine *.bmeconfig-Datei 2022_06_23_17_49_BoardConfiguration.bmeconfig
    diese auf die SD-Karte kopieren. Dort ist 1.7.1 als appVersion angegeben während auf der SD-Karte noch 1.5.5 steht, update macht also eh Sinn.
    Unbedingt auch die *.config-Datei 2022_06_28_09_11_Class1_Class2_HP-354_RDC-1-0Continuous.config im selben Ordner auf die SD kopieren, sonst funktioniert es mit der Android / mobile-App nicht!!

    In der neuen Version 2.0.6 werden beide Dateien nicht mehr im ZIP-Archiv mitgeliefert, sondern müssen über AI Studio generiert werden!!
  4. weiter gibt es einen Ordner BME688_x8Board_v1.5.5 mit einer Datei flash.bat zum binary flashen des Feathers. Arduino ESP32 Core ist dabei 2.0.3 (sieht man in einem Unterordner). Dort also beherzt doppelklicken, alle Windows-Sicherheitsmeldungen ignorieren – so weit mit dem eigenen Gewissen und Sicherheitsanspruch vereinbar! Und vorher noch den COM-Port des Feathers rausfinden (am einfachsten über die Arduino-IDE), den muss man nämlich vor dem flashen angeben.

Nach dem Einstecken der SD card blinkt die onboard-LED in einer 1 Hz-Frequenz, was bedeutet, dass Daten aufgezeichnet werden: Et voilà! Auf der SD gibt es nun eine zusätzliche Date *.bmerawdata
2022_07_15_09_35_Board_0CDC7ECDB68C_PowerOnOff_1_b4d4tt4b3qcyd9r5_File_0.bmerawdata zwar noch mit dem falschen timestamp im Dateinamen (das soll sich nach einer connection mit der App oder AI-Studio lösen, dabei wird die RTC time upgedated).

Statt dem flashen der binary könnte man auch über die Arduino IDE die Geschichten installieren:

  1. Bibliotheken installieren
    Bosch BME68x Library
    Bosch BSEC2 Arduino Library (Bosch Sensortec Environmental Cluster), finde ich nicht über den Bibliotheksmanager, nur die BSEC ohne 2 über den Manager installierbar, also per ZIP installieren
    – und weitere abhängige Bibliotheken
  2. Dann den sketch bme68x_demo_sample auf dem Feather per Arduino-IDE aufspielen. Am einfachsten über Datei > Beispiele > BSEC2 Software Library > bme68x_demo_sample

Hier hatte ich das Problem, dass bei default-Einstellungen für den upload der Speicher nicht gereicht hat, man muss dann unter “partition scheme” nicht default, sondern, z.B. “huge app” auswählen. Ich bin jetzt sicherheitshalber wieder auf die bin zurückgegangen.

2 Likes

Das ist etwas verkürzt, wie ich gerade merke, die Android-App kann anscheinend keine Rohdaten (völlig untrainierte AI) anzeigen, sondern nur die Sensordaten wenn schon ein Trainig vorliegt. Der Algo ist dann in der *.config-Datei hinterlegt und erst wenn die auf der SD ist, funktioniert die Android-App. So mein bisheriger Stand. In den Demo-Videos – dachte ich eigentlich – wurde gezeit wie man Trainigsdaten auch mit der App annotieren kann. confused! Jedenfalls scheint diese Anweisung im Bosch-Forum auch dafür zu sprechen, dass man erst trainieren muss und nur danach die App verwenden kann:

  • Gather new data after reset BME688 dev kit (At least, two type of data you need)
  • Run AI studio and learn algorithm, them generate config file. Then, generate BME board configure file.
  • Remove previous bmeconfig and config files in SD card, and copy the files into SD card.
  • Run Android app and connect BME688 dev kit

Das stimmt so allgemein nicht, sondern es ist nur bei mir gerade so! Die App kann – wie man in den letzten beiden Videos bei posting #1 sieht – wohl schon bei der Aufzeichnung der Rohdaten zum labeln genutzt werden, nur bei mir geht das nicht, oder es ist die iOS-App und die Android-App kanns noch nicht?!

Bei mir in der Androd-App sind nur die beiden Meüpunkte Testing und Environment ausgegraut (linker screenshot), was funktioniert – allerdings nur (!!) wenn eine *.config-Datei auf SD vorhanden ist – das auf dem rechten screenshot:

   

Ähnliches wird im Bosch-Forum auch schon berichtet, der Moderator verweist aber stoisch auf die Doku und ich habe irgendwie das Gefühl, dass es so nicht funktioniert oder eine Inkompatibilität vorliegt, oder in der Doku was Essentielles fehlt. Mein Fehlerreport dort:

Same problem under Solved: Re: Training Coffee Beans and Field Air - Page 2

Im Bosch-Forum beschweren sich einige Leute über unplausible Temperatur-Werte. Auch während der Sensor die Trainingsdaten liest weden Temperaturen gemessen, Da für die Gas-Messung der Sensor recht stark aufgeheizt wird – bis 350 °C – und das mehr oder weniger kontinuierlich passiert, kein Wunder, dass die auch so gemessene Temperatur steigt. Daher ist es wichtig später bei der realen Messung den forced mode, im Gegensatz zum “parallelen” zu verwenden, s. https://www.bosch-sensortec.com/media/boschsensortec/downloads/datasheets/bst-bme688-ds000.pdf, S. 18, Abb. 2:

Hi Clemens,

sehr interessant, vielen Dank fürs Teilen Deiner Forschungsarbeiten!

Denkst Du, das trifft zu? Ist es schlimm, oder ist das “sensor aging” hier nur von untergeordneter Relevanz?

Viele Grüße,
Andreas.

Mein Link ging auf das Posting davor, das beschreibt genau das auch von mir beobachtete Problem.

Then I open app, but buttons “testing” and “environment” are inactive.

Die Antwort darauf habe ich auch gelesen, kann mir bei Bosch aber nicht so Recht Bananaware vorstellen. Wie es bei der Antwort zu “sensor aging” kommt, kann ich nicht nachvollziehen, darum ging es ja nicht im ersten Posting oder ich verstehe den Begriff falsch.

In den zwei Videos hat’s scheinbar ja funktioniert. Entweder es funktioniert mit iOS und Android hat Probleme oder im Zusammenspiel mit der aktuellen App-Version vs. Arduino-Software und / oder AI-Studio Konfigurations-Output hakt es.

1 Like

Moin!
ja, wie wo angedeutet hatt ich mich auch mal vor einiger Zeit probiert zu dem Ding zu belesen. Hängen geblieben is grob nur noch folgendes:

  • Ja, belastbarer Anwendungsfall isses wohl eher nur wenige Stoffe voneinander zu unterscheiden.
  • Es gibt nen Satz von ~30(?) “Temperaturprofilen”: Je mit bis zu 10 Temperaturstufen und Messzeitpunkten.
  • Die Idee zum “Anlernen” isses “das Ding” – und die meinen idealerweise das Ding mit den acht Stück drauf! – für ne halbe Stunde möglichst der Reinsubstanz auszusetzen. Derweil fahren die acht Dinger wiederholt die unterschiedlichen Temperaturprofile/kurven ab.
  • Später lädste diese “fuzzy-Messungen” in die Windowssoftware und die sacht denn (AI) welche Kurven sich am besten eignen Deine verschiedenen Kandidaten (wir haben doch sicher alle möglichen Stoffe so in Reinform zur Hand!) zu unterscheiden und erzeugt denn dit config-File fürn Betrieb. (keene Cloud ;)
  • Dit macht soweit wohl nur mit Windows Spass. Irgendwas wesentliches fehlte im Arduino-Teil bzw gibts diesen AI-Quack natürlich nicht für Leenux.
  • Theoretisch sind jenseits dieser default 30 Temperaturkurven auch “eigene” möglich, nur war dit in der Windowssoftware noch nicht implementiert. Ließen sich aber via Arduino-Code setzen.
  • Ich hab nirgends ne resource/forums-kultur/library gefunden/gesehen/erspäht wo Menschen mal ihre Daten/Messungen sharen! (“Dit is dit Pattern um meinen Kaffee xy zu erkennen und der leuchtet denn so und so.” … haben die da überhaupt nen fileformat für? ;)

Aber ja, meine Erinnerung an die Recherche ist schon etwas blass. Ganz so technisch-detailiert beschrieben bzw “in seinen Atomen mit Linux benutzbar” blieb mir des leider nicht in Erinnerung. Vielleicht is da ja noch was passiert, aber wenigstens so ne Messungs-Knowledgebase/Library bekannter Stoffe hab ich doch vermisst.

Bleibe auf Deine Berichte ausm Reallife gespannt! (Dit Android-Zeugs gabs glaub ich als ich dazu las noch nicht.)

3 Likes

Darauf gab es nach einer Woche eine Antwort:

so could you upgrade firmware and app and test it again?

Erst einmal rausfinden, was neu ist:

bisher
verwendet
aktuell
publiziert
AI Studio (Win) 1.7.1 2.0.0
BME688 Development Kit App (Android) 1.1.3 1.1.3
generic BSEC 2.2.0.0 2.4.0.0
Arduino development kit software
(binary für Feather)
1.5.5 2.0.6

generic BSEC brauchen wir ja nicht, daher nur AI Studio und die Feather binary upgedated, Android-App ist gleich geblieben …

… leider wieder viel Zeit und Arbeit reingesteckt und nix geht! Gleiches Verhalten wir oben, ausgegraute Menüpunkte … vielleicht verkauft Bosch doch Bananaware!

Nochmal gepostet im Bosch-Forum: https://community.bosch-sensortec.com/t5/MEMS-sensors-forum/BME688-connection-to-Android-App/m-p/70727/highlight/true#M13751

Auch spanned, im dev kit-PDF wird erzählt, dass nur die von AI Studio erzeugte *.config nach dem Algo-Training auf die SD übertragen werden muss. In der AI Studio (2.0.0) steht nun was anderes, auch die .aiConfig müsse zusätzlich auf die SD-Karte:

Leider bringt das funktionstechnisch aber auch nix, immer noch das gleiche Problem mit der App!

Leider isses nun doch eine Mischung aus Bananaware und / oder internen Releases oder Prototypes / fake Apps die als “nutzbar” und available vermarktet werden. Möchte man das dann selbst ausprobieren kommt die Ernüchterung, allerdings gibt das Bosch nur Scheibchenweise zu:

Im Bosch Sensortec-Forum hat sich ein offizieller Moderator nun doch geäußert, enttäuschend nichtssagen:

Currently, we are working on new apk and hopefully launch around middle of march.
Let you know once apk is released.
Sorry for inconvinience.

Hier im offiziellen Video von Bosch Sensortec, publiziert im offiziellen YT-channel von Bosch Sensortec https://www.youtube.com/watch?v=Crps14LExmI wird eine App beworben, die laut Tonspur (0:22) für den BME688 entwickelt wurde “and is available for iOS and Android”. Sehr spannend ist nun, dass der deutsche Support von Bosch-Sensortec in Stuttgart gar keine iOS-App kennt.

Ich habe kein Problem damit wenn Dinge (noch) nicht funktionieren, noch nicht fertig sind. Sch…ade finde ich aber, wenn man dann ins offene Messer geschickt wird, obwohl Bosch weiß, dass es nicht funktioniert. An diversen Stellen im Bosch-Forum wir stoisch auf die Installationsanleitung hingewiesen, obwohl zig Leute von Problemen berichten. Auch die Meldung oben und besonders die davor?! Mist-Kommunikation! Warum empfiehlt der Support auf neue releases zu updaten, wenn sie doch wissen, dass ihr aktuell zum downlaod angebotenes apk uralt ist und es nicht funktioiiert?! Stefan und ich haben zig Stunden investiert, um das Ding zum Laufen zu bekommen. Wir hätten das einfach gelassen, wenn von vornherein klar gewesen wäre, dass es so nicht funktionieren kann. :-(

Gut, dann lassen wir das erst mal mit der App und versuchen es mit den Rohdaten:

Für mich ist noch nicht so ganz klar welche lib die Rohdaten des BME688 auslesen kann. Unter Solved: BME688 sensor not sensing scheint es, als ob die Bosch BME68x library mit Arduino IDE 2.x und ESP32 oder Cortex M0 die Minimalvoraussetzungen sind.

1 Like

Moin Clemens, zunächst einmal vielen Dank für deine ausführlichen Erklärungen des BME688 bzw. im Umgang mit dem Development Kit. Ich habe mir auch so ein Teil zugelegt, allerdings war ich mit meinen Messungen in Sachen “Moore” unterwegs. Das hat mit der SD-Karte und mit 688 Studio Desktop auf dem PC so weit geklappt. Das Problem mit der Temperatur habe ich auch festgestellt, es ist wohl sinnvoll einen extra Sensor herauszuführen. Ich brauche also eine extra Software. Einen Link für eine IOS APP habe ich auch noch nicht gefunden. Ratlos bin ich auch, wie ich Konzentration einzelner Gase ermitteln kann. Hast du eine Idee, z.B. einzelne Widerstandswerte – oder wie macht ihr das mit der Ameisensäure?

Wir sind da immer noch nicht weiter gekommen, da die von Bosch beworbene App zum Testen eines trainierten KI-Modells nicht mehr oder noch nicht funktioniert Solved: Re: BME688 connection to Android App - Page 7

Theoretisch sollte das auch mit einem Arduino möglich sein mit upload des Algorithmus auf die SD-Karte. Da ich bei einem ersten Versuch allerdings gescheitert bin und es nicht funktionierte habe ich aus Zeitgründen meine Aktivitäten hier erst einmal gestoppt.

Danke erst mal für deine Antwort

Wir hatten Ende Februar das Projekt auf Eis gelegt, da die Bosch-App zwar schon in der Doku auftauchte, aber noch nicht fertig war bzw. nicht publiziert war. Nun hat sich etwas geändert:

Stand
Februar
aktuell
publiziert
BME688 Development Kit App (Android) 1.1.3 2.3.3
Arduino development kit software
(binary für Feather)
2.0.6 2.0.9

AI Studio (Win) (2.0.0) und generic BSEC (2.4.0.0) haben sich seit dem nicht geändert.

Daher habe ich die Android-App heruntergeladen und die *.apk auf einem Android-Handy installiert. Schaut schon mal den screenshots in der Doku deutlich ähnlicher als die alte App vom Frühjahr.

In der Doku zur Development Kit Software steht nun auch das hier, könnte also passen!

Supported packages
• BSEC Version 2.4.0.0
• BME AI-Studio Version 2.0.0
• BME AI-Studio Mobile App Version 2.3.3

Et voilà! Jetzt geht es, sowohl Daten taggen als auch die (gelernte) Kategorisierung überprüfen!

3 Likes