Funksensor mit Bosch sensortec BME680 / Luftgüte

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

Vorheriges Thema - Nächstes Thema

juergs

#240
Hallo Zusammen,

ich habe heute noch die Installation der ESP-Lib auf die 2.4 hochgehoben und die BSEC für den ESP
auf meinem Laptop installiert, außer den einfachen Hürden bei der Konfiguration nachzujagen.    ;) ;) ;)

Ziel: Abhängigkeit der WDT-Fehler zum verwendeten 2.4RC-Package zu prüfen.
Leider ohne Erfolg. Es kommen immer noch zu viele WDT-Resets zustande, aber in geringerer Häufigkeit ....

Dann habe ich heute die 18650-Powerbank-Platinen bekommen, die ein StepUp-Regler für 5V (5A) und einen für 3V3 (3A) haben ...
Jetzt lassen sich die WemosD1 auch autark über längere Zeit betreiben.

Dann probiere ich auch mal hdgucken's BIN-Version aus:
Edit: geht nicht mit D1 mini + 0x77 + oled ...

Grüße,
Jürgen

By-the-way "Deep Sleep": https://myesp8266.blogspot.de/2017/07/battery-powered-wemos-d1-with-wemoss.html

hdgucken

Hallo Jürgen,

Zitat von: juergs
Dann probiere ich auch mal hdgucken's BIN-Version aus:
Edit: geht nicht mit D1 mini + 0x77 + oled ...
Ist nur NodeMCU(D1mini) und RFM69, ohne OLED usw., kommt was auf der seriellen ?

Gruß Thomas

juergs

Nein, immer das "Aufhäng"-Problem: bläst gefühlt 80MHZ auf D3 raus... New Serial im Sekundentakt.....
Schwierig den Mini da wieder herauszubekommen. Geht nur manchmal mit "Blank" über den ESP6288-Flasher ...

hdgucken

OK, nicht schön.
Dann teste ich morgen mal ein wenig,
mal sehen ob es auf einer NodeMCU läuft.

Gruß Thomas

juergs

Kein Problem ...
Man sollte über ein Auto-Config nachdenken ...

Was mich noch stört ist, dass bei Dir die Adafruit-Lib geht ....

Für Peter kann ich gerne eine Version ohne OLED bauen ...


Jürgen


hdgucken

#246
So, hab jetzt mal zwei Binarys kompiliert, einmal für NodeMCU und einmal für D1 mini.
Jeweils nur mit BME680 und RFM69. Ohne OLED und Lichtsensor, keine Vcc Messung.
Vielleicht klappt es ja jetzt mit dem D1 mini :)

Gruß Thomas

Edit: für NodeMCU funktioniert es bei mir:

juergs

#247
Hallo Thomas,

D1 mini geht, aber (auch) WDT-Problem:
ZitatBME680 wireless sensor V1.6
Protocol: CustomSensor
BSEC Version: 1.4.5.1
NODE-ID : 6
RFM69 found.
RFM69 initialized.
BME680: try init on 0x77 ... done.
Ready, start measuring ...

[3091.00] P: 988.27| T: 17.48| rH: 51.32| IAQ: 25.00 (0)| Gas: 115885.00
[6091.00] P: 988.25| T: 17.48| rH: 51.33| IAQ: 25.00 (0)| Gas: 123246.00
[9091.00] P: 988.25| T: 17.50| rH: 51.18| IAQ: 25.00 (0)| Gas: 129060.00
[12091.00] P: 988.27| T: 17.51| rH: 51.06| IAQ: 25.00 (0)| Gas: 132126.00
[15091.00] P: 988.25| T: 17.52| rH: 50.98| IAQ: 25.00 (0)| Gas: 135450.00

ets Jan  8 2013,rst cause:4, boot mode:(3,7)

wdt reset
load 0x4010f000, len 1384, room 16
tail 8
chksum 0x2d
csum 0x2d
ve9e0c112
~ld

Grüße,
Jürgen

juergs

Ich habe noch mal das Bosch-Original-Beispiel laufen lassen (ausser: Luftdruck noch in die serielle Ausgabe gepackt)

Zitat[213275.00] T: 16.49| rH: 56.84| P: 98837.00| IAQ: 25.00 (0)
[216275.00] T: 16.49| rH: 56.83| P: 98835.00| IAQ: 25.00 (0)

ets Jan  8 2013,rst cause:4, boot mode:(1,6)

wdt reset

Was zu beweisen war ...  :'(

juergs

#249
Daraufhin habe ich geprüft, wie die sleep-Methode aus der Lib aufgerufen wird:
Zitat[12082.00] T: 16.56| rH: 57.51| P: 98825.00| IAQ: 25.00 (0)
sleep: 2756
sleep: 218
sleep: 5
sleep: 5
sleep: 5
sleep: 5
[15082.00] T: 16.57| rH: 57.42| P: 98825.00| IAQ: 25.00 (0)
sleep: 2755

Der Wert "sleep: 2756" mit ca. 2.7 Sekunden ist mit den anderen Aktivitäten OLED und RFM sehr nahe an den kritischen 3.6 Sekunen!

Mit micros() Auflösung:
Zitat*9*   [6.32]  T: 16.76| rH: 57.35| P: 98746| IAQ: 25.00 (0)
*10*   [9.32]  T: 16.78| rH: 57.06| P: 98744| IAQ: 25.00 (0)
*9*   [12.32]  T: 16.80| rH: 56.68| P: 98744| IAQ: 25.00 (0)
*10*   [15.32]  T: 16.80| rH: 56.49| P: 98746| IAQ: 25.00 (0)
*195*   [18.32]  T: 16.81| rH: 56.29| P: 98744| IAQ: 25.00 (0)
*10*   [21.32]  T: 16.81| rH: 56.18| P: 98744| IAQ: 25.00 (0)
*9*   [24.32]  T: 16.83| rH: 56.02| P: 98746| IAQ: 25.00 (0)
*9*   [27.32]  T: 16.82| rH: 55.89| P: 98744| IAQ: 25.00 (0)
*10*   [30.32]  T: 16.82| rH: 55.74| P: 98746| IAQ: 25.00 (0)
*9*   [33.33]  T: 16.83| rH: 55.64| P: 98746| IAQ: 25.00 (0)
*10*   [36.33]  T: 16.84| rH: 55.63| P: 98746| IAQ: 25.00 (0)
*9*   [39.33]  T: 16.83| rH: 55.70| P: 98746| IAQ: 25.00 (0)
*9*
ets Jan  8 2013,rst cause:4, boot mode:(3,6)

wdt reset
load 0x4010f000, len 1384, room 16
tail 8
chksum 0x2d
csum 0x2d
vf6d232f1
~ld


Lib sleep-Anforderungen mit yield():
Zitat*2756046µS,    2756mS *
*218045µS,    218mS *
*5035µS,    5mS *
*5026µS,    5mS *
*5028µS,    5mS *
*5028µS,    5mS *
   [27.60]  T: 16.86| rH: 58.12| P: 987| IAQ: 25.00 (0)

Zitat/*!
* @brief           System specific implementation of sleep function
* @param[in]       t_ms    time in milliseconds
* @return          none
*/
void sleep(uint32_t t_ms)
{
    int32_t duration = 0;
    int32_t duration_all = 0;
    int32_t start = micros();;
         
    yield();   
    delay(t_ms);   
    yield();
   
    duration_all = (micros() - start);       
   
    Serial.print("*");     
    Serial.print(duration_all);Serial.print("µS, \t");
    Serial.print(t_ms);Serial.println("mS *");
}

2 * yield() läuft bisher am "stabilsten"...

Umsonst, nach 24 Sekunden:
Zitat[3]  T: 17.3 | rH: 57.6 | P: 987 | IAQ: 25 (0)
   [6]  T: 17.3 | rH: 57.6 | P: 987 | IAQ: 25 (0)
   [9]  T: 17.3 | rH: 57.4 | P: 987 | IAQ: 25 (0)
   [12]  T: 17.3 | rH: 57.4 | P: 987 | IAQ: 25 (0)
   [15]  T: 17.3 | rH: 57.3 | P: 987 | IAQ: 25 (0)
   [18]  T: 17.3 | rH: 57.3 | P: 987 | IAQ: 25 (0)
   [21]  T: 17.3 | rH: 57.3 | P: 987 | IAQ: 25 (0)
   [24]  T: 17.3 | rH: 57.2 | P: 987 | IAQ: 25 (0)

ets Jan  8 2013,rst cause:4, boot mode:(3,6)

wdt reset
load 0x4010f000, len 1384, room 16
tail 8
chksum 0x2d
csum 0x2d
vf6d232f1
~ld

juergs

#250
Wegen den WDT-Fehlern habe ich versucht, mal ohne den ESP8266 auszukommen
und habe einen ehemaligen MapleCUL (MapleMini) wieder auf den Arduino-DFU-Bootloader  "zurückgeholt",
(was wirklich nicht einfach ist...) und den BME680_CC-Sketch auf STM32-MapleMini gehievt.

Es ist noch ohne Senden über RFM und Vcc-Erkennung implementiert, funktioniert soweit mit 100 KHz I2C
an I2C-Schnittstelle 1 des Maples. Das lässt sich wahrscheinlich noch optimieren ...

Wichtig ist ja die 4-Tage-Einlaufphase .... (Mit WDT-Fehlern beim ESP wird das nichts...)

Mal schauen, wie es auf dieser Plattform funktioniert.
Dann kommt der RFM noch hinzu....

Zitat[2555705] P: 991.67| T: 20.79| rH: 50.39| IAQ: 26  30 (1)| Gas: 181.28| UBat: 3.59V| Light: 0lx
[2558705] P: 991.69| T: 20.78| rH: 50.36| IAQ: 36  31 (1)| Gas: 180.11| UBat: 3.59V| Light: 0lx
[2561705] P: 991.65| T: 20.79| rH: 50.29| IAQ: 32  32 (1)| Gas: 180.69| UBat: 3.59V| Light: 0lx
[2564705] P: 991.65| T: 20.79| rH: 50.29| IAQ: 28  31 (1)| Gas: 181.47| UBat: 3.59V| Light: 0lx

hdgucken

Hey, das sieht doch mal gut aus ;)
Habe heute auch meine Software überarbeitet, hatte einen kleinen Verrechnungsfehler beim Gas Wert  entdeckt :o,
ist aber behoben. Bin jetzt doch auf die Vcc intern Methode gegangen, entsprechend korrigiert,
sieht ganz gut aus. Debug für den RFMxx etwas erweitert, einige Kleinigkeiten korrigiert, alle Extras sind jetzt An/Abwählbar.
Muss alles noch ordentlich verpacken  ;D Stelle ich Euch morgen früh zur Verfügung  :)

Gruß Thomas


hdgucken

Hier wie versprochen das komplette Paket auf dem neuesten Stand (V1.7):

Gruß Thomas

PeMue

Guten Morgen Thomas,

vielen Dank. Zwei Punkte von meiner Seite:
- Was ist der Unterschied zwischen NodeMCU und WemosD1 mini?
- Könntest Du die beiden bitte noch für 0x76 (ist leider bei meinem nanoLGW eingestellt, der Jumper ist unter dem ESP8266 (ich könnte den Layouter killen  ::) ::) ::))) compilieren?

Danke + Gruß

Peter
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