Funksensor mit Bosch sensortec BME680 / Luftgüte

Begonnen von juergs, 28 Oktober 2017, 18:05:43

Vorheriges Thema - Nächstes Thema

juergs

#15
Die precompiled Libs wären z.B. für den STM32 (STM32F103CB) aus dem MapleCul möglicherweise geeignet ...
Dann wäre ein Umschwenken auf den Maple wohl sinnvoll ...

HCS

Zitat von: juergs am 29 Oktober 2017, 20:01:52
Dann wäre ein Umschwenken auf den Maple wohl sinnvoll ...
Für das LaCrosseGateway definitiv nicht. Aber eventuell um Referenzwerte zu produzieren.

juergs

#17
Der erste Plot-Output mit Raw- und gleitendem Mittelwert.

https://www.umweltbundesamt.de/sites/default/files/medien/pdfs/kohlendioxid_2008.pdf

Apropos Chinesen: Modul-Luft-Air-Quality-Staub-Sensor-LCD-Anzeige-Monitor

Kommentar:
Zitat
Im Alltag ist der CO2 Wert in einem Wohnraum meist im roten Bereich, ohne sich Sorgen machen zu müssen, sprich die Skala ist sehr streng ausgelegt).
AIQ-Index: https://en.wikipedia.org/wiki/Air_quality_index

https://forum.mysensors.org/topic/7788/bosch-bme680-sensor

juergs

#18
@HCS: Einbindung precompiled libs
ZitatThe last step we need to do is to ensure that the pre-build `libalgobsec.a` library is linked when we compile our project. Unfortunately, this process is somewhat tricky when it comes to Arduino IDE. We first need to find where the board support package for our board is installed.
On Windows, this could be for example in `<USER_HOME>\AppData\Local\Arduino15\packages\esp8266\hardware` or in `<ARDUINO_ROOT>\hardware`. Once we found the location, we need to perform the following steps. Please keep in mind that the target paths might differ slightly depending on the ESP8266 package version you are using.

1. We need to copy the file `binaries\staticlib\ESP8266\libalgobsec.a` from the BSEC package into the `hardware\esp8266\2.3.0\tools\sdk\lib` folder.
2. The linker file found at `hardware\esp8266\2.3.0\tools\sdk\ld\eagle.app.v6.common.ld` needs to be modifed by inserting the line `*libalgobsec.a:(.literal .text .literal.* .text.*)` after the line `*libm.a:(.literal .text .literal.* .text.*)`.
3. Finally, we need to change the linker argument, telling the linker to include BSEC. This is achieved by adding the argument `-lalgobsec` to the line `compiler.c.elf.libs=-lm -lgcc ...` found in `hardware\esp8266\2.3.0\platform.txt`.

Dann sollte eine Vergleichs-Variante mit dem ESP8266  möglich sein.  :)

HCS

Zitat von: juergs am 30 Oktober 2017, 11:12:43
Dann sollte eine Vergleichs-Variante mit dem ESP8266 möglich sein
Ja, ich habe den BSEC gestern Abend auf dem 8266 zum laufen bekommen.
Und gleich festgestellt, dass meine Widerstandsberechnung auch nicht stimmt.
Aber damit kann man evtl. Vergleiche anstellen, wie sich die IAQ bezüglich Widerstand und rH verhält.
Habe sie noch erweitert, um den Widerstand mit auszugeben (Gas:).
Es dauert einige Minuten, bis die BSEC anfängt, eine IAQ zu liefern.

Sieht dann so aus:
[459268.00] T: 20.69| rH: 53.80| IAQ: 37.18 (3)| Gas: 1705.81
[462268.00] T: 20.70| rH: 54.05| IAQ: 47.76 (3)| Gas: 1686.11
[465268.00] T: 20.69| rH: 54.24| IAQ: 57.98 (3)| Gas: 1668.97
[468268.00] T: 20.68| rH: 54.41| IAQ: 64.52 (3)| Gas: 1657.38
[471268.00] T: 20.69| rH: 54.50| IAQ: 69.20 (3)| Gas: 1649.06
[474269.00] T: 20.68| rH: 54.60| IAQ: 71.25 (3)| Gas: 1644.93
[477269.00] T: 20.67| rH: 54.70| IAQ: 77.16 (3)| Gas: 1635.71
[480269.00] T: 20.65| rH: 54.86| IAQ: 78.94 (3)| Gas: 1632.66
[483269.00] T: 20.66| rH: 54.88| IAQ: 84.28 (3)| Gas: 1623.58
[486269.00] T: 20.65| rH: 54.95| IAQ: 85.60 (3)| Gas: 1621.58
[489269.00] T: 20.63| rH: 55.04| IAQ: 88.93 (3)| Gas: 1616.59
[492269.00] T: 20.62| rH: 55.11| IAQ: 89.28 (3)| Gas: 1615.59
[495269.00] T: 20.84| rH: 55.60| IAQ: 250.00 (3)| Gas: 909.62
[498269.00] T: 21.12| rH: 57.56| IAQ: 388.20 (3)| Gas: 606.41
[501269.00] T: 21.36| rH: 58.37| IAQ: 437.31 (3)| Gas: 521.63
[504269.00] T: 21.53| rH: 59.59| IAQ: 476.07 (3)| Gas: 461.52
[507269.00] T: 21.45| rH: 60.56| IAQ: 492.55 (3)| Gas: 439.29
[510270.00] T: 21.56| rH: 59.64| IAQ: 500.00 (3)| Gas: 427.84
[513270.00] T: 21.46| rH: 58.98| IAQ: 500.00 (3)| Gas: 423.98
[516270.00] T: 21.36| rH: 57.85| IAQ: 500.00 (3)| Gas: 426.18
[519270.00] T: 21.23| rH: 57.01| IAQ: 500.00 (3)| Gas: 431.21


Ich habe den Sensor mal heftig eingenebelt, um eine Reaktion hervorzurufen.

Anbei die firmware, damit könnt ihr selbst mal testen.

juergs

#20
Hallo HCS, super!

4 Tage "BurnIn"-Zeit für den Sensor sind zu veranschlagen.  :D

ZitatThe IAQ scale ranges from 0 (clean air) to 500 (heavily polluted air). During operation, the algorithms automatically calibrate
and adapt themselves to the typical environments where the sensor is operated (e.g., home, workplace, inside a car, etc.).
This automatic background calibration ensures that users experience consistent IAQ performance. The calibration process
considers the recent measurement history (typ. up to four days) to ensure that IAQ ~ 25 corresponds to "typical good" air
and IAQ ~ 250 indicates "typical polluted" air.

ZitatEs dauert einige Minuten, bis die BSEC anfängt, eine IAQ zu liefern.
Ja, wegen Ringpuffer ...



PeMue

#21
So, habe die BIN geflasht und an den Raspberry Pi rangehängt. Diesmal ist die Baudrate 115200 baud  ;), d.h. der Code lautet:
sudo stty -F /dev/ttyUSB1 115200
sudo cat /dev/ttyUSB1 > /tmp/bme680.txt &


dann kommt (ohne das > ...) Folgendes raus:
[126249.00] T: 28.88| rH: 31.40| IAQ: 0.00 (0)| Gas: 68330.16
[129249.00] T: 28.85| rH: 31.46| IAQ: 0.00 (0)| Gas: 68497.20
[132249.00] T: 28.81| rH: 31.55| IAQ: 0.00 (0)| Gas: 69287.61


Gruß PeMue

Edit:
Lüften scheint echt zu helfen (IAQ zwischen 1 700 000 und 2 400 000)  ;D bzw. vorher kurz dagegengeblasen. Ich sollte den Raspberry Pi vielleicht mal im Schlafzimer aufstellen  ???

RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

HCS

Zitat von: PeMue am 30 Oktober 2017, 15:45:23
Diesmal ist die Baudrate 115200 baud
Das habe ich vergessen zu sagen ...  :)

Zitat von: PeMue am 30 Oktober 2017, 15:45:23
Lüften scheint echt zu helfen
Das hätte ich dir auch ohne BME680 sagen können  ;D ;D ;D

Der Kalibrierungsprozess von vier Tagen ist mir noch etwas suspekt. Das kann ja die Werte der vier Tage nur im RAM haben. Bedeutet das, dass, wenn man die Spannugsversorgung getrennt hatte, eneut vier Tage Kalibrierung erforderlich sind?
Lotet der algo vier Tage lang die obere und untere Grenze aus?

Eventuell sollten wir versuchen herauszubekommen, welcher Widerstandswert wieviel ppm Schadstoff entspricht und dann unsere eigenen Schlüsse ziehen.
Die libalgobsec.a und das irre framework von Bosch scheiden für das LGW eh aus.

juergs

#23
Zitat von: HCS am 30 Oktober 2017, 17:40:57
... herauszubekommen, welcher Widerstandswert wieviel ppm Schadstoff entspricht und dann unsere eigenen Schlüsse ziehen.
Die libalgobsec.a und das irre framework von Bosch scheiden für das LGW eh aus.

Zitatbsec_codegen_do_steps.o/
bsec_codegen_get_configuration.o/
bsec_codegen_get_state.o/
bsec_codegen_get_version.o/
bsec_codegen_init.o/
bsec_codegen_reset_output.o/
bsec_codegen_rtwutil.o/
bsec_codegen_sensor_control.o/
bsec_codegen_set_configuration.o/
bsec_codegen_set_state.o/
bsec_codegen_update_subscription.o/
bsec_interface.o/
constructor_bsec.o/
convertHumidity.o/
ExpSmoothingBsec.o/
GasHumidityBaselineTracker.o/
GasHumidityPreProcessor.o/
HumidityTemperatureCorrector.o/
normalizeFilterBw.o/
RingBufferBsec.o/
SensorHeatCompensator.o/
SensorStatusTracker.o/
absHum.o/

Da ist Temperatur und Feuchte ebenfalls darin "vermauschelt".
Das wird mathematisch interessant.  ;)

Entäuschend, dass sensortec nur die 32-Bitter im Fokus hat...

juergs

#24
Der ESP-Compile ist mir jetzt endlich auch gelungen!
:D

Liebe Boschler, das wäre auch einfacher zu machen gewesen!

ZitatOnce we are set with our hardware and development environment, we need two pieces of software to get the most out of our BME680 sensor
Das hat mich in die Irre geleitet und hatte die bme680.c + .h aus dem BME680-Driver genommen.
Ist nicht notwendig: die Richtigen Basis-Dateien liegen im "\API"-Verzeichnis des BSEC-Frameworks.

Dann muss ich noch schauen, ob ich mein ESP8266 endlich geflasht bekomme.

@Peter, HCS
Wie  habt Ihr den ESP verbunden?

Grüße
Jürgen

PeMue

Zitat von: juergs am 30 Oktober 2017, 22:13:03
@Peter, HCS
Wie  habt Ihr den ESP verbunden?
Ich habe einen nanoCUL, der aber dieselbe Beschaltung hat wie z.B. der NodeMCU. Dann per USB mit dem NodeMCU Flasher oder dem ESPTool flashen.

Gruß PeMue
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

hdgucken

Meiner läuft jetzt schon einige Stunden mit. Fing mit IAQ Werten um 25-30 an ging dann hoch bis 180,
jetzt ist er wieder bei ca. 110. Schwingt sich wohl gerade ein  :)
Bild vom aktuellen Stand:

Markus M.

Zitat von: KölnSolar am 29 Oktober 2017, 19:21:05
Beim CO2-Sensor(Velux etc.) genügen 1-2 Zigaretten  ;)

Ich weiss ja nicht was du rauchst, aber der einfachste Weg das Ding auf Anschlag zu bringen, ist den Sensor kurz an der Spiritus-Flasche schnüffeln zu lassen.
FHEM dev + HomeBridge + Lenovo Flex15 + HM-CFG-USB + RFXtrx433 + Fritz!Box 7590/7580/546E

HM Aktor/Sensor/Winmatic/Keymatic/Thermostat, HUE, Netatmo Weather/Security/Heating, Xiaomi AirPurifier/Vacuum, Withings Aura/BPM/Cardio/Go/Pulse/Thermo, VSX828, Harmony, Siro ERB15LE
https://paypal.me/mm0

juergs

#28
tutorial-multiple-values-in-the-arduino-ide-serial-plotter

ZitatWhen the serial plotter receives a line break, it plots all values on that line as one time step. Each variable need to be seperated by either a comma, tab or a space (might work with other characters as well).

oder TelemetryViewer zum Speichern der Daten als CSV.
Beispiel: Öffnen- und Schließen des Fensters.

HCS

Zitat von: juergs am 30 Oktober 2017, 18:37:07
Da ist Temperatur und Feuchte ebenfalls darin "vermauschelt".
Das wird mathematisch interessant.  ;)
Mir ist noch unklar, ob Temperatur und Feuchte zur Kompensation oder als Wohlfühlanteil eingerechnet werden.

Jetzt wäre zu klären, was wir eigentlich als Ergebnis wollen. Mir schwebt da eher die reine Schadstoffkonzentration vor.
Einen Wohlfühlwert kann man dann in FHEM immern noch aus VOC, rH und Temperatur berechnen, sofern man will.