Arduino compiliert nicht für BME680 (Bosch-Bibliothek)

wifi

#1

Endlich funktioniert die Datenübertragung zu openSenseMap: Downgraded wifi firmware to 19.5.4 from 19.6.1. Ein Tipp in der Anleitung wäre echt hilfreich.
Was den BME680 betrifft: Blockly scheint ja seit dem April-Update mit den Bosch-Treibern zu compilieren, und das funktioniert soweit auch.
Wenn ich aber versuche, den Sketch in der Arduino-IDE zu kompilieren (BSEC Software Library), bekomme ich Fehlermeldungen der Art:
undefined reference to `Bsec::begin(unsigned char, TwoWire&, void (*)(unsigned long))’
Kennt jemand DEN Trick?
Danke schön!


#2

Um den Code, der in Blockly erstellt wird auch Local auf deinem Computer mit der Arduino IDE kompilieren zu können, muss die Bosch BSEC Library installiert werden.

Alle Infos dazu findest du hier:

Achte allerdings darauf, dass es keine einfache Installation ist, sondern auch eine Anpassung in der Platform.txt in dem Arduino SAMD Core durchgeführt werden.

Viele Grüße
Mario


#3

Vielen Dank, lieber Mario, für die prompte Unterstützung!

Die Änderungen an der Datei …\Arduino15\packages\arduino\hardware\samd\1.8.6\platform.txt hatte ich auch schon anzupassen versucht, leider ohne Erfolg.

Abweichend von der SenseBox-Anleitung habe ich die aktuelle Arduino-Version mit Installer eingerichtet, alles als Admin. Die BSEC-Library hatte ich übers Arduino-Menü, aber auch als ZIP installiert. Alles ohne Erfolg. Frischen Rechner, frische Arduino-Installation, um Seiteneffekte zu vermeiden. Keine Änderung.
Habe wenig Ahnung von den gnu-Compilern, aber ich kann mir auch ein Pfad-Problem als Ursache vorstellen.

Falls nochmal jemand draufsehen mag, hier die kompletten Fehlermeldungen:

sketch\innenraumluftqualitaet.ino.cpp.o: In function `setup':

...\innenraumluftqualitaet/innenraumluftqualitaet.ino:143: undefined reference to `Bsec::begin(unsigned char, TwoWire&, void (*)(unsigned long))'

...\innenraumluftqualitaet/innenraumluftqualitaet.ino:159: undefined reference to `Bsec::updateSubscription(bsec_virtual_sensor_t*, unsigned char, float)'

...\innenraumluftqualitaet/innenraumluftqualitaet.ino:164: undefined reference to `Bsec::delay_ms(unsigned long)'

sketch\innenraumluftqualitaet.ino.cpp.o: In function `__static_initialization_and_destruction_0':

...\innenraumluftqualitaet/innenraumluftqualitaet.ino:23: undefined reference to `Bsec::Bsec()'

sketch\innenraumluftqualitaet.ino.cpp.o: In function `loop':

...\innenraumluftqualitaet/innenraumluftqualitaet.ino:169: undefined reference to `Bsec::run(long long)'

collect2.exe: error: ld returned 1 exit status

exit status 1
Fehler beim Kompilieren für das Board senseBox MCU.

Danke!


#4

Hallo,

ab Arduino Version 1.8.12 kommt es leider zu Problemen mit der Bosch Library, die noch nicht behoben scheinen. Für den Online Compiler in Blockly verwenden wir Version 1.8.11.

Siehe auch https://community.bosch-sensortec.com/t5/MEMS-sensors-forum/BSEC-Library-for-BME680-on-Mega-2560/m-p/13018#M2937

Probiere es doch nochmal mit einer älteren Arduino Version :slight_smile:


#5

Vielen Dank für die Hilfsbereitschaft! Es funktioniert mit den Anpassungen der platform.txt und der Arduino-Version 1.8.11. Getestet unter MacOS und Windows 10.

Danke nochmal!