Funksensor mit Bosch sensortec BME680 / Luftgüte

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

Vorheriges Thema - Nächstes Thema

hdgucken

#255
Guten Morgen Peter,

hier nochmal die Versionen mit Adresse 0x76 und 0x77  ;)
D1 mini und NodeMCU sind eigentlich fast identisch, D1 mini hat weniger Pins nach außen geführt und die LED sitzt woanders,
und die USB Chips sind verschieden, aber da baut ja eh jeder Hersteller was anderes ein  :o
Edit: die LED an GPIO16 (D0) der NodeMCU gibt es beim D1 mini nicht.

Für Jürgen hab ich auch was zusammengestellt, die Version mit SoftSPI !
Funktioniert, hab bei mir getestet  :D
Änderungen sind im Sketch und den Dateien RFMxx.h / RFMxx.cpp.
Edit: einfach im Sketch die gewünschten Pins für MOSI,MISO,SCLK und CS eintragen, fertig  :)

Gruß Thomas

juergs

#256
Hallo Thomas,

das ist ja ein Service, vielen Dank!  :D

Mein Maple-Aufbau ist diese Nacht durchgelaufen und reagiert
(was hätte man anders erwartet!) stabil mit durchaus plausiblen Werten.
Auch mit schneller Reaktion z.B. beim Fenster öffnen (von 150 wieder auf 30 zurück) ....
Da muss ich aber die BurnIn-Phase von 4 Tagen noch abwarten ...  :)

Nach dem die SW auf dem ESP nicht  mehr bei der Analyse her gibt. Müsste ich mich noch auf den I2C-Bus konzentrieren.
Vielleicht liegt da das Problem ...

Dann kann ich den Code schon mal im Wroom-Board einbauen ....

Grüße,
Jürgen

juergs

#257
Macht es Sinn?
https://forum.fhem.de/index.php/topic,52921.135.html
https://forum.fhem.de/index.php/topic,52921.msg527954.html#msg527954

Zitatch habe auch diverse NodeMCUs (v0.9, v2, v3) und ESP12, ESP12e, z.T. mit den unterschiedlichsten Problemen. Nachdem ich aber das BIOS ESP8266_NONOS_SDK_V2.0.0 (http://bbs.espressif.com/viewtopic.php?f=46&t=2502) aufgespielt habe, sind meine Probleme alle weg.

juergs

#258
Maple-Mini: Soft SPI scheint mal zu "zucken"
#if (HAS_RFM_MODULE)
    /* RFM69, PIN-config SPI (GPIO XX): */
    #define RFM_SS           PA4 //(15,D8)   SS  -> RFM69 (NSS)
    #define RFM_MISO         D12 //(12,D6) MISO  <- RFM69 (MOSI) //only used by soft spi
    #define RFM_MOSI         D11 //(13,D7) MOSI  -> RFM69 (MISO) //only used by soft spi
    #define RFM_SCK          D13 //(14,D5)  SCK  -> RFM69 (SCK)  //only used by soft spi
    #define RFM_IRQ          PB0 //(2,D4)  IRQ  <- RFM69 (DIO0) (Not Connected)
   
    //--- create rfm instance
    RFMxx                    rfm(RFM_MOSI, RFM_MISO, RFM_SCK, RFM_SS, RFM_IRQ);
#endif

LGW empfängt aber noch nichts .... muss noch gegen den ESP checken ...

juergs

#259
ESP8266-SPI

Der Maple (~96KHz) taktet den SPI doppelt so schnell wie der ESP (~40KHz) ...

juergs

Na, geht doch...  ;D

DeviceId=7

Während der ESp immer noch schön WDT-resettet ...   :(

juergs

#261
Noch zum Thema "WDT-Reset":

https://www.hackster.io/rayburne/esp8266-turn-off-wifi-reduce-current-big-time-1df8ae

Das sollte die Lösung sein:

    1) Include a minimum of the below before setup(void)

// ------------------begin ESP8266'centric----------------------------------
#define FREQUENCY    160                  // valid 80, 160
//
#include "ESP8266WiFi.h"
extern "C" {
#include "user_interface.h"
}
// ------------------end ESP8266'centric------------------------------------

    2) Include a minimum of the below in setup(void)

/* Initializations */
// ------------------begin ESP8266'centric----------------------------------
WiFi.forceSleepBegin();                  // turn off ESP8266 RF
delay(1);                                // give RF section time to shutdown
system_update_cpu_freq(FREQUENCY);
// ------------------end ESP8266'centric------------------------------------

    3) Include a minimum of the below in loop(void)

// ------------------begin ESP8266'centric----------------------------------
// patch the watchdog timer
wdt_reset();
// ------------------end ESP8266'centric------------------------------------


In unserem Fall also in Funktion output_ready  :D

Und läuft seit einer Stunde ohne WDT-Reset!  :D :) :)
(.. obwohl ich das Frequenzsetting auf 160 belassen hatte, sollte 80 sein ...)

EDIT:
Der ESP ist die ganze Nacht ohne WDT-Reset durchgelaufen !  :D :)

hdgucken

Hallo Jürgen,

Zitat von: juergs
https://www.hackster.io/rayburne/esp8266-turn-off-wifi-reduce-current-big-time-1df8ae
Das hatte ich mir auch schon angesehen, könnte tatsächlich die Lösung sein.

Wobei dieses hier "ESP8266_NONOS_SDK_V2.0.0" sich noch besser anhört, finde ich, weil man da offensichtlich
nichts mehr weiter am Programm machen muss. Für mich hört sich das so an, als ob mit dieser Firmware der
ESP8266 ohne WiFi im Hintergrung läuft, wenn das überhaupt machbar ist ?!

Gruß Thomas

juergs

#263
Hi,

läuft immer noch ...  :)
Die Stromreduzierung sollte auch beachtlich sein ...
Schaue mir das morgen früh mal an, wie stabil das Ganze jetzt ist ....
Der BME muss auch mit dem ESP mal Laufzeit zum BurnIn bekommen ...

Edit: Läuft stabil! (Laut Log, die gesamte Nacht ohne WDT-Reset)  :)

Das Thema "ESP8266_NONOS_SDK_V2.0.0" werde ich mal in Ruhe separat betrachten  ;)

Grüße,
Jürgen

juergs

Hallo hdgucken,

hatte Deine Anmerkung im Thread:
https://forum.fhem.de/index.php/topic,78128.msg740119.html#msg740119
gesehen und werde mal mit dem Maple etwas experimentieren müssen ...

hdgucken

Hallo Jürgen,

beim Maple wäre es mal interessant, wie hoch man mit dem SPI Takt kommt, laut Datenblatt sollte der RFM69CW bis 10MHz können !
Ich denke, 1MHz bei der Hardware-SPI Variante sollte kein Problem sein (1MHz ergibt sich beim ESP8266, wenn man keine Frequenz vorgibt),
bei mir (mit Hardware-SPI) geht es tatsächlich nur mit 400kHz, hab gestern mal mein neues "Spielzeug" ausprobiert, siehe Bild  :)


Gruß Thomas

juergs

Ist der Lüfter des Rigols auch so laut wie mein DS?   :(

hdgucken

Ja, leider. Ist mir auch gleich als erstes sehr unangenehm aufgefallen  :-[

juergs

#268
Ich habe mir eine Haube 3D-gedruckt, die den Luftstrom nach hinten ablenkt ....
Jetzt ist das Geräusch auf Dauer erträglicher ...  ;)
Aber trotzdem, dass die Rigol'er das nicht besser können ....

Schön, mit Seriell-Modul ....  :)

juergs

#269
Anmerkung zum Wroom2-Oled-Board:

/* init I2C */
    #if (IS_WROOM2_BOARD) 
      //--- für Wroom2-Board geht nur diese Variante(!):
      //--- Grund: https://github.com/esp8266/Arduino/blob/master/libraries/Wire/Wire.cpp
  //--- Konstruktor: TwoWire::begin(int sda, int scl)
  //--- ESP8266-Hardware: SDA = D2 und SCL = D1, ergo: auf dem Wroom2-Board ist die Standard-I2C-Belegung verdreht!
      Wire.begin(D1,D2);         
    #else
      Wire.begin();         
    #endif


Deswegen funktioniert die übliche Variante nicht.