Funksensor mit Bosch sensortec BME680 / Luftgüte

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

Vorheriges Thema - Nächstes Thema

hdgucken

#345
Hallo PeMue,

Zitat von: PeMue
habe mittlerweile mein nanoLGW mit der v2.2 aktualisiert:
[19598.00] P: 1006.7| T: 30.84| rH: 28.65| IAQ: 25.00 (0)| Gas: 18798.00| UBat: 3.7V[/code]
FHEM empfängt dieselben Werte:
2018-01-28 19:19:37 LaCrosse LaCrosse_6F gas1: 25
2018-01-28 19:19:37 LaCrosse LaCrosse_6F gas2: 18798

Das ist merkwürdig, habe heute mein 2. LGM auf die Platine gebracht und mit BME680 bestückt. Habe bei beiden LGM's jetzt auch so niedrige Gas Werte
(13 -15 kOhm, obwohl der eine Sensor vorher am Universalsensor "normale" Werte geliefert hat (zwischen 300 und 500 kOhm). Evtl. Timing Problem ?
Die Kurven sind aber im Vergleich zum Universalsensor ziemlich identisch.
Zitat
Edit 1:
Und den Sprung im Druck kann man sehr gut sehen: ursprünglich Berlin, dann 0 m und jetzt die Höhe, die für meinen Wohnort passt  ;D Deckt sich jetzt auch mit den anderen Drucksensoren.
Ok, die Höhenkorrektur werde ich erstmal als Debug-Ausgabe mit einbauen  ;)

ZitatUnd hier noch die mapleMini Hardware zu Einpflegen in den Code, noch ungetestet, aber geflasht:
Danke, hab sogar schon getestet, stimmt soweit, man kann die Pins direkt als "PA4" oder "PB6" im Quellcode verwenden, wird korrekt verarbeitet ;)

V2.2 läuft jetzt komplett auf der STM32 Hardware (BluePill hab ich), es gibt nur ein Problem bei mir, der RFM69 arbeitet soweit normal, es kommt aber nichts an den LGM's an  :o
Heute sind über den Tag dann doch ganz sporadisch ca. 5 Werte angekommen, da weiß ich noch nicht so recht weiter. Hab schon einen zweiten RFM und mit weniger Sendeleistung,
wie Jürgen schon geschrieben hatte, probiert, keine Veränderung. Hab dann mit dem SPI Takt gespielt, der geht problemlos mit relativ sauberen Signalen bis ca. 2.5MHz, bin jetzt
bei etwa 285kHz, Soft-SPI macht ca. 400kHz, aber geht auch nicht besser oder schlechter. Na mal schauen ...  :-[

Dann ist mir noch etwas sehr interessantes aufgefallen, hab mein altes SSD1306 Display vom Steckbrett-LGM einfach mal so an den Universalsensor gehangen, ohne
auf SSD1306 in der Adafruit Lib zurück zu stellen, es läuft :D
Das bedeutet, SH1106 und SSD1306 funktionieren ohne Änderung !

Gruß Thomas


hdgucken

#347
Hallo Jürgen,

nochmal zur Adafruit Lib: das Problem, daß diese mit dem STM32 nicht funktioniert, liegt an dem zweiten Aufruf von Wire.begin() in der Adafruit Lib selbst.
Den hab ich dort für STM32 deaktiviert, damit läuft es ! Gleiches gilt für die BH1750.cpp  ;)

Edit: In der RFMxx.cpp ist vor "SPI.begin()" folgendes für den SPI Clock eingestellt:
SPI.setClockDivider(SPI_BAUD_PCLK_DIV_128);
bedeutet: 72MHz / 128 = 562.5kHz
so läuft es seit heute Morgen  :D

Gruß Thomas

juergs

#348
Hallo Thomas,

danke für den Hinweis!

Ok, in der setup()-Methode, nicht RFMxx.cpp:
#if(HAS_RFM_MODULE)
      /* --- RFM69CW init --- */
      SPI.begin();
      rfm.Begin();
      ...

Mit welcher SPI-Speed läuft es dann eigentlich unter den Default-Einstellungen?
Möglicherweise zu schnell für einige, aber nicht alle RFMs?

Zitat... liegt an dem zweiten Aufruf von Wire.begin()
Bei mir geht es ja (eigentlich) aber gut zu wissen, woran es scheitern könnte.

War in der letzten Zeit mit dem Gehäuse zu stark beschäftigt.
Habe gerade noch mal eine LGW-Gateway mit der FW 1.31 aufgebaut, mein ältester Sensor mit alten Einstellungen wird
aus 1m  Entfernung nicht empfanden, dort habe ich noch nicht den PA-Level gesetzt ...
Die anderen beiden aber sofort....

Bei einem Update auf FHEM kommt nicht die CustomSensor-Version, ist der UniveralSensor gesetzt?
Dann muss ich das noch aktualisieren.

Die Adafruit-Lib funktioniert bei mir auch auf dem Maple mit den vorher geschilderten Einstellungen  ;)
Die ASCIISD1306-Lib aktualisiert das Display noch zu langsam, dort muss ich auch noch auf FAST :) umstellen ... 
Aber sonst alles ok!

Dann fehlt nur noch ein Gehäuse für WemosD1mini und die STMs.
Langsam gehen mir die BME's aus ... Vielleicht werde ich doch mal eine Bestückung probieren ... (7€ bei 10er Abnahme + 0.80 Cent für die Platine)
Nachschub ist momentan rar, ähm ausverkauft ...  :-X :'(

Dann klappt es ja schon richtig Klasse mit den STMs, Respekt!  :D

Dann wäre das nächste Ziel: Batterie-Betrieb ?

Grüße,
Jürgen



hdgucken

Hallo Jürgen,

Zitat von: juergs
Ok, in der setup()-Methode, nicht RFMxx.cpp:
#if(HAS_RFM_MODULE)
      /* --- RFM69CW init --- */
      SPI.begin();
      rfm.Begin();
      ...

In der Setup-Methode nicht "SPI.begin();", in der RFMxx.cpp, siehe V2.2 !

Zitat
Mit welcher SPI-Speed läuft es dann eigentlich unter den Default-Einstellungen?
Möglicherweise zu schnell für einige, aber nicht alle RFMs?
Bei mir geht es ja (eigentlich) aber gut zu wissen, woran es scheitern könnte.
Ich meine, es war Standard SPI_CLOCK_DIV16, also 4.5MHz.
Sollte der RFM69 ja auch locker können, laut Datenblatt bis 10MHz !

Zitat
Habe gerade noch mal eine LGW-Gateway mit der FW 1.31 aufgebaut, mein ältester Sensor mit alten Einstellungen wird
aus 1m  Entfernung nicht empfanden, dort habe ich noch nicht den PA-Level gesetzt ...
Die anderen beiden aber sofort....
Das ist noch interessant, hab noch keine Versuche mit der Reichweite gemacht, wird spannend  :-[

Zitat
Bei einem Update auf FHEM kommt nicht die CustomSensor-Version, ist der UniveralSensor gesetzt?
Dann muss ich das noch aktualisieren.
Stimmt, in den Updates ist nur Universalsensor implementiert, weil Du Dir das CustomSensor Modul sparst, bei dieser Variante  ;)

Zitat
Langsam gehen mir die BME's aus ... Vielleicht werde ich doch mal eine Bestückung probieren ... (7€ bei 10er Abnahme + 0.80 Cent für die Platine)
Nachschub ist momentan rar, ähm ausverkauft ...  :-X :'(
Meine drei Stück sind jetzt auch verbaut, mal schauen, wann es wieder welche gibt  8)

Zitat
Dann klappt es ja schon richtig Klasse mit den STMs, Respekt!  :D
Ja, so langsam geht es voran  :D

Zitat
Dann wäre das nächste Ziel: Batterie-Betrieb ?
Wäre natürlich genial, wie sieht es denn mit der Akkulaufzeit auf dem WEMOS Board aus, mußtest Du schon mal nachladen ?

Gruß Thomas

juergs

Kaum beschwert man sich über fehlenden Nachschub ... gibt es wieder  :)


PeMue

Ich habe mir bei den Chinesen dieses Board http://www.watterott.com/de/STM32F103C8T6-Minimum-System-Board bestellt, aber für 5 € in Deutschland auch ziemlich preiswert.

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

Zitat von: PeMue
Ich habe mir bei den Chinesen dieses Board http://www.watterott.com/de/STM32F103C8T6-Minimum-System-Board bestellt, aber für 5 € in Deutschland auch ziemlich preiswert.
Das habe ich auch, ist das "BluePill". Zwei sind noch unterwegs ...  ;)

Bin noch am arbeiten, wegen der Parameter Eingaben. Ist doch etwas aufwändiger als gedacht ...  :o

Gruß Thomas

juergs

#354
Hallo Thomas,

hier gibt es ein Menü, das meiner Meinung nach, sehr einfach zum seriellen Parametrieren benutzt werden kann:

https://playground.arduino.cc/Code/Menu
Menu#Download

void loop()
{
  if (Serial.available())
  {
    byte read = Serial.read();
    switch (read)
    {
      case 'w': menu.moveUp(); break;
      case 's': menu.moveDown(); break;
      case 'd': menu.moveRight(); break;
      case 'a': menu.moveLeft(); break;
      case 'e': menu.use(); break;
    }
  }
}


hdgucken

#355
Hallo Jürgen,

Zitat von: juergs
hier gibt es ein Menü, das meiner Meinung nach, sehr einfach zum seriellen Parametrieren benutzt werden kann ...
So ungefähr dachte ich auch, hab mal was zusammengebaut, ist noch nicht der endgültige Stand, aber geht erstmal  ;)
Die erste Abfrage (Settings löschen) kommt bei jedem Start und hat einen 5 sek. Timeout, heißt, wenn man nichts eingibt, geht es nach 5 sek.
mit "N" weiter. Ist nur für den Fall, daß man später mal etwas ändern will.
Die Abfragen zu den Settings kommen normalerweise nur beim ersten Start, wenn im EEPROM alles "0xFF" ist.
Aber auch, wenn nur einer der Werte einem gelöschten EEPROM entspricht, dann wird nur der oder die noch nicht geänderten Werte abgefragt.
Diese Version (3.0) ist nur für STM32 ! Überlege noch, ob man das dann zusammenführt mit dem ESP8266 oder
beide Versionen für sich laufen sollten ?

Gruß Thomas
 
Anbei ein paar Bilder:

hdgucken

#356
So, bin mal wieder ein ganzes Stück weiter gekommen. Version 3.0 ist online !
Ab sofort werden der ESP8266 UND der STM32F103Cx unterstützt.
Getestet habe ich mit einer NodeMCU V1.0 (ESP8266) und dem BluePill (STM32F103C8T6).
Zusätzlich werden jetzt die Settings (NodeID, Höhe über NN und Temperatur Offset) im EEPROM gespeichert.
Was noch nicht geht: VCC Messung beim STM32, steht im Moment konstant auf 3,3V , kommt aber demnächst.
Verfügbar ab sofort hier: https://github.com/amigatommy/BME680-UniversalSensor  :)

Gruß Thomas

Anbei 2 Bilder, einmal Start mit dem BluePill, dann noch der Start mit der NodeMCU ...

PeMue

Zitat von: hdgucken am 18 Februar 2018, 01:19:14
Version 3.0 ist online !
Cool, vielen Dank dafür!

ZitatThe Lightsensor (BH1750) is also optional, it can but not must be connected.
Zitat... the RFM69CW must also not be connected, in this case, no wireless transmission is possible. The data where transmitted by the serial port only (115200 Baud).
Ui, man darf keinen Lichtsensor bzw.  Display anschließen  8) 8) 8), ich glaube, das war so nicht gemeint.

Ich würde das so formulieren:

The Lightsensor (BH1750) is also optional, it can be but does not need to be connected.
... the RFM69CW is also optional, in this case, no wireless transmission is possible. In this case the values are transmitted only by serial port (115200 Baud).


Ich muss mal heute Nachmittag schauen, wie ich die IDE umbauen muss, um die BSEC Bibliothek einzubinden. Vermutlich geht das ohne irgendwelche Umbauten.
Im übrigen habe ich gesehen, dass die Widerstandswerte wieder im 200-300 kOhm Bereich sind, welcher Bereich ist denn nun richtig?

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

Hallo Peter,

Zitat von: PeMue
Ui, man darf keinen Lichtsensor bzw.  Display anschließen  8) 8) 8), ich glaube, das war so nicht gemeint.
Oh je, ich sollte manchmal doch eher ins Bett gehen, was man nachts so für einen Mist zusammen schreibt  ;D
Vielen Dank für den Hinweis jedenfalls, habe das gleich mal verbessert, ich hoffe, so ist es jetzt richtig zu verstehen  ;)
Zitat
Ich muss mal heute Nachmittag schauen, wie ich die IDE umbauen muss, um die BSEC Bibliothek einzubinden. Vermutlich geht das ohne irgendwelche Umbauten.
Ich hab das in der Doku geschrieben, wie es bei mir funktioniert hat, ist eigentlich nicht weiter schlimm.
Zitat
Im übrigen habe ich gesehen, dass die Widerstandswerte wieder im 200-300 kOhm Bereich sind, welcher Bereich ist denn nun richtig?
Ich würde sagen, 200-300kOhm Bereich ist richtig, hab auch immer noch Probleme mit dem BME680 an meinem zweiten LGM. Hab an diesem ein
Nextion Display angeschlossen, jetzt ist das Phänomen, daß der Gas Wert nach einiger Zeit komplett einfriert (bei ca. 808kOhm!) und generell auch nur im zweistelligen KiloOhm Bereich
misst, die Kurve passt allerdings im Vergleich zum UniversalSensor.
So sieht es im Moment bei mir aus (Bilder) ...

Gruß Thomas

PeMue

#359
Hallo Thomas,

die Software läuft auf meinem nanoLGW, siehe
BME680 wireless sensor V3.0
Compiled: Sun Feb 18 14:21:12 2018
Protocol: UniversalSensor
BSEC version: 1.4.5.1
ESP Core Version: 2_4_0
ESP SDK Version: 2.1.0(deb1901)
OLED init ... not found
Node-ID is: 255 (0xFF)
Node-ID set to: 111 (0x6F)
Save permanently (Y/N)?
OK.
Altitude is: 65560.5m
new value (0.0-8848.9):
Altitude set to: 240.0m
Save permanently (Y/N)?
OK.
Temperature offset: -1.1 degrees celsius
new value (+-10.0):
Temperature offset set to: 0.0 degrees celsius
Save permanently (Y/N)?
OK.
Save settings ...
Node-ID           : 111 (0x6F)
Altitude          : 240.0m
Temperature offset: 0.0 degrees celsius
RFM69  init ... done
BME680 init ... done
BH1750 init ... not present
Ready, start measuring ...
[142299.00] P: 1026.6| T: 37.61| rH: 15.03| IAQ: 25.00 (0)| Gas: 33767.00| UBat: 3.7V
[445308.00] P: 1026.3| T: 33.34| rH: 18.32| IAQ: 20.21 (1)| Gas: 44664.00| UBat: 3.7V
[448308.00] P: 1026.4| T: 33.30| rH: 18.33| IAQ: 17.01 (1)| Gas: 44902.00| UBat: 3.7V
[451308.00] P: 1026.3| T: 33.28| rH: 18.34| IAQ: 16.64 (1)| Gas: 44950.00| UBat: 3.7V
[454308.00] P: 1026.3| T: 33.28| rH: 18.33| IAQ: 20.48 (1)| Gas: 44807.00| UBat: 3.7V
[457308.00] P: 1026.3| T: 33.24| rH: 18.36| IAQ: 20.50 (1)| Gas: 44902.00| UBat: 3.7V

Ein paar Anmerkungen von meiner Seite:
- Die RFM69xx Library fehlt in github.
- Meine Widerstandswerte sind und bleiben im 30-40 kOhm Bereich, auch mit der v2.2.
- Die Einstellungen müssen ohne CR/LF gemacht werden, sonst kapiert es die Software nicht.
- Beim maple Mini ist mir nicht klar, wie man so rechtzeitig auf die serielle Schnittstelle zugreift, dass man was ändern kann. Das liegt aber ggf. daran, dass ich noch keinen BME680 dran habe, da schaltet die interne LED auf hell  ;D
Ich lass' den mal weiterrennen.

Gruß Peter

Edit:
Der Widerstand geht hoch in den 100k Bereich  :o

2018-02-18_16:49:12 LaCrosse_6F gas1: 29
2018-02-18_16:49:12 LaCrosse_6F gas2: 117735
2018-02-18_16:54:12 LaCrosse_6F gas1: 24
2018-02-18_16:54:12 LaCrosse_6F gas2: 120606
2018-02-18_16:59:12 LaCrosse_6F gas1: 27
2018-02-18_16:59:12 LaCrosse_6F gas2: 121128
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