Funksensor mit Bosch sensortec BME680 / Luftgüte

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

Vorheriges Thema - Nächstes Thema

juergs

#165
Zitat
noch eine Frage zu Deiner Software: würde diese auch auf einem Atmega328p (mit RFM69, BH1750, etc.) laufen? Da müsste man vermutlich einen anderen Teil der BSEC Library einbinden ..
STM32 (MapleMini) geht. Läuft bei mir mit CUL_TX.

hdgucken

Hallo Peter,

Zitat von: PeMue
würde diese auch auf einem Atmega328p (mit RFM69, BH1750, etc.) laufen? Da müsste man vermutlich einen anderen Teil der BSEC Library einbinden ...
Diese Frage hat HCS ja schon beantwortet, geht leider nicht, vermutlich aber auf nem ATMega 644 oder 1284, müßte man mal testen.

Zitat von: PeMue
Welche I2C Adresse des BME680 sollte gewählt werden, oder ist das ggf. egal?
Das läßt sich in der Software auswählen, standard ist 0x77, einstellbar ist aber auch 0x76  ;)

Gruß Thomas

PeMue

Zitat von: juergs am 20 November 2017, 20:12:10
Nach einigen Versuchen ist mir der Compile für den MapleMini STM32 ARM M3  ebenfalls gelungen ...
Und was braucht der an Hardware? Maple mini + BME680? Oder auch noch das OLED?

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

juergs

#168
ZitatUnd was braucht der an Hardware? Maple mini + BME680? Oder auch noch das OLED?
Ich wollte nur die BOSCH - ARM Lib - Variante prüfen. (MapleCUL-Aufbau mit dem STM32F103 + Erweiterungsmöglichkeiten nach Bedarf)
Ich vermute sogar, dass hdgucken's FW in dieser Variante ebenfalls laufen würde ...

Wie es von da aus weitergeht ist ja offen. Das CUL-TX-Protokoll verträgt Werte bis max. um die 110. Dann müsste man IAQ/10 übertragen   
und in FHEM wieder  zurückrechnen, geht ja mit Userreadings.

Als weitere Möglichkeit mit der NewASKSIN-Library  classTHSensor auf CC1101-Basis mit einem Arduino zu agieren.
Mit Homematic kenne ich mich aber nicht aus,  vielleicht kann mich da jemand auf's Gleis heben...


Prinzipiell sehe ich auch die Firmware von hdgucken als bereits existierenden und guten Weg IAQ-Werte zu übertragen.
Mittlerweile habe ich zwei der ESP-OLED-Module bekommen und werde die mit hdguckens FW bestücken und über die LGW empfangen ...
Ggf. mit den Platinen-Resourcen erweitern Joggle-Button etc.

Dann versuche ich den BME-Resistancewert ohne BME-Lib mit Temp + Hum über CUL_TX-Protokoll zu berücksichtigen  (mit dem SegmentedSignal-Algorithmus).
Das Ergebnis wäre wohl ein iAQ-ähnlicher Wert. Aber eigentlich reicht auch nur eine Einstufung des Signals in
Tendenz und eine Unterteilung in "sehrgut", "gut", "annehmbar", "schlecht", "sehr schlecht" aus.
Also nur eine momentane Beurteilung der Luftqualität ... Je nachdem wie man den Output verwerten möchte (Regelung/Visualisierung?)

Diese LoRa-Variante fände ich auch interressant: http://www.kh-gps.de/lora_bt.htm  Schaltung. (tnx@ranseyer)
Da stellt sich aber wieder die Gateway-Frage....

Und da wäre noch die djbugs-BLE-Variante: https://forum.fhem.de/index.php/topic,78098.15.html. Leider hat er seine Ergebnisse bisher noch nicht veröffentlicht....

Schauen wir mal, wie man die Prios verteilen kann ...  :D

Jürgen




juergs

#169
Apropos Pläne:

Interessehalber hatte ich auch ein AMS-CCS811-Breakout bestellt (~10..17€, Kombi mit  CCS811+SI7021+BMP280).
air-quality-sensors
Nach den guten Erfahrungen mit dem iAQ-core ...

Der kam leider mit abgehobenem Gehäuse an  >:(.

ZitatNo need for continuous monitoring in software

Vielleicht funktioniert er trotzdem....

juergs

#170
Für die Wemos® D1 Esp-Wroom-02 Motherboard ESP8266 Mini-WiFi-Boards (ohne OLED) gibt es wohl kein Schaltplan (!) ....
Zitatscheme is not available, libraries is here: https://github.com/LilyGO/ESP32-OLED0.96-ssd1306


Hier mal die OLED-LIB für die Demo dazu ( nach langer Sucherei gefunden):
https://github.com/squix78/esp8266-oled-ssd1306
Funktioniert ...

ZitatProgrammable LED, you can use GPIO16
OLED's SDA and SCL connect to the D1 pin and the D2 pin respectively.
The five buttons are controlled by FLASH, RSET, D5, D6, and D7 respectively.

Auf den Boards ist das "SSD1306SimpleDemo" geladen ...  ;)

LiPo
PacketMonitor
Board-Varianten
Antenne

juergs

Die vorkompilierte-BSEC-Lib "libalgobsec.a" ist immer noch vom 16.11.2017.

juergs

#172
Die Adafruit-OLED-Lib die von hdgucken verwendet wird, läuft nicht auf dem Board.
Diese funktioniert für die Verwendung von display.println:
https://github.com/klarsys/esp8266-OLED

@hdgucken:
wird die INT-Port-Verbindung  DIO0 zum Senden beim RFM69CW benötigt?

Grüße,
Jürgen

hdgucken

#173
Hallo Jürgen,

Zitat von: juergs
Die Adafruit-OLED-Lib die von hdgucken verwendet wird, läuft nicht auf dem Board.
Diese funktioniert für die Verwendung von display.println:
https://github.com/klarsys/esp8266-OLED
Da musst Du nur in \libraries\Adafruit_SSD1306\Adafruit_SSD1306.h Zeile  81: "#define SH1106" auskommentieren,
da auf Deinem Board der SSD1306 verwendet wird, ich hab den SH1106 Controller  ;)

Zitat
@hdgucken:
wird die INT-Port-Verbindung zum Senden beim RFM69CW benötigt?
eigentlich definitiv nicht, da der Sensor ja nichts empfangen muss (ist bei mir auch nicht angeschlossen, muss ich in der Doku ändern) :-[

Gruß Thomas

juergs

#174
Hallo Thomas,
vielen Dank.

Der Controllertyp ist schon eingestellt, vermute aber, dass I2C auf SCL/SDA mit D1,D2 nicht zieht....
I2C wir nur mittels Konstruktor mit OLED_RESET  und Adresse eingestellt...
Vielleicht finde ich noch die Stelle in der Lib um das ggf. vom Default D4/D5  (ist ja ESP und soll nodeMCU komp. sein ...) wegzubekommen.
Vermutlich bei Wire.begin (); im Konstruktor....

/*=========================================================================
    SSD1306 Displays
    -----------------------------------------------------------------------
    The driver is used in multiple displays (128x64, 128x32, etc.).
    Select the appropriate display below to create an appropriately
    sized framebuffer, etc.
    SSD1306_128_64  128x64 pixel display
    SSD1306_128_32  128x32 pixel display
    SSD1306_96_16
    -----------------------------------------------------------------------*/
   #define SSD1306_128_64
//   #define SSD1306_128_32
//   #define SSD1306_96_16
/*=========================================================================*/


Ggf. implentiere ich die display.println()-Funktion in der Lib, die geht, nach und verzichte auf die Adafruit-Variante.

Die Hardware-Verdrahtung des RFM69CWs habe ich so ausgeführt:

Zitat
RFM.MISO  [8]      = ESP.D9   [GPIO3]
RFM.NSS    [7]      = ESP.D8   [GPIO15]
RFM.SCK    [6]      = ESP.D4   [GPIO14]
RFM.MOSI  [5]      = ESP.D3   [GPIO0]
RFM.GND   [3]      = ESP.GND [15] 
RFM.3V3    [2]      = ESP.VCC  [8]

Den (belegten) OLED-I2C Anschluss für den BME muss ich noch auf dem Board suchen
und separat herausführen ... Reicht evtl. direkt den ESP.D1 und ESP.D2 -Anschluss zu nehmen.

Das LGW mit den RFMs ist aufgebaut und muss noch in Betrieb genommen werden,
dann den Sensor-Sender prüfen .....

Doch etwas aufwändiger, als ich dachte ...

Einfach Mist, wenn weder Schaltplan noch Infos dazu geliefert werden ...
Edit: oder man findet einen Ähnlichen  :D

Grüße,
Jürgen

juergs

Die Adafruit-LIB geht auch, wenn:

Zitat// OLED display TWI address
#define OLED_ADDR   0x3C
Adafruit_SSD1306 display(-1);

der Konstruktor so definiert wird.  Tssss. :o

hdgucken

@Jürgen: ich hatte die Adafruit Lib extra für meine Zwecke (SH1106) verändert, deshalb müsstest Du dort die Zeile 81 auskommentieren,
oder noch einfacher die original SSD1306 Lib von Adafruit verwenden.

Zitat von: juergs
Die Adafruit-LIB geht auch, wenn:

der Konstruktor so definiert wird.  Tssss. :o
interessant ...

juergs

Hallo Thomas,
hatte die Orginal-LIB heruntergeladen und benutzt ...  :)


hdgucken

Zitat von: juergs
Die Hardware-Verdrahtung des RFM69CWs habe ich so ausgeführt:
SPI läuft in meiner Config über Hardware, also D5,D6,D7 und D8 vom ESP.
Ich hatte das mal als Softwarevariante genutzt, müsste man in den RFMxx Dateien ein paar Sachen anpassen.
Dann kann man die SPI Pins im Sketch nach Wunsch definieren  :)

Zitat
Den (belegten) OLED-I2C Anschluss für den BME muss ich noch auf dem Board suchen
und separat herausführen ... Reicht evtl. direkt den ESP.D1 und ESP.D2 -Anschluss zu nehmen.
Genau.

Gruß Thomas

juergs

#179
Hier die Lösung für die ADAFRUIT-Bibliothek und den OLED-SSD1306-Controller:

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define OLED_RESET  D0  // RST-PIN for OLED (not used)
#define OLED_SDA     D1  // SDA-PIN for I2C OLED
#define OLED_SCL     D2  // SCL-PIN for I2C OLED
Adafruit_SSD1306 display(OLED_RESET);


Und das wars (!):

  // initial I2C bus and OLED display
  Wire.begin(OLED_SDA, OLED_SCL);
  Wire.setClock(400000);
  // by default, we'll generate the high voltage from the 3.3v line internally! (neat!)
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  // initialize with the I2C addr 0x3C (for the 128x64)
  // init done


Wire.begin(OLED_SDA, OLED_SCL);
Wire.setClock(400000);



Deshalb liefen die Adafruit-Beispiele nicht.