Funksensor mit Bosch sensortec BME680 / Luftgüte

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

Vorheriges Thema - Nächstes Thema

hdgucken

#180
Hallo Jürgen,

so müsste es auch funktionieren:

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

Adafruit_SSD1306 display();


  // initial I2C bus and OLED display
  Wire.begin();
  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


Hab die Tage auch etwas an meiner Software gearbeitet:
Beim starten des Sensors wird die BSEC Version angezeit.
Vcc Messung ist jetzt, ebenso wie das OLED Display, abwählbar.
Dann hatte ich ja ab und an CRC-Fehler bei der Übertragung, das lag am SPI Clock (RFM69),
der war zu hoch, bin jetzt runter auf 400kHz, seitdem keine Fehler mehr  :D

anbei die aktuelle Version  :)

P.S.: hab eben die 36_CustomSensor.pm noch korrigiert und mit eingepackt ...

juergs

#181
Hallo Thomas,
dann kann ich an dem System auch weitermachen.
Ich denke das ist der Knackpunkt gewesen:
  Wire.setClock(400000);

Interessant ist auch, dass die Einstellung zufällig beim Ausprobieren verschiedener Libs bestehen bleibt.
Schaltet man komplett aus und wieder ein, funktioniert plötzlich nichts mehr ...
Die Einstellung gehört eigentlich in den Konstruktor ...

Ursache war eigentlich die Suche nach display.println ... (Wenn jetzt die Adafruit-Lib geht ...)
Weder in der Lib noch in der GFX.h ist diese Methode enthalten. (print.h?)

In der OLED Lib für den STM32 sind noch einige zusätzliche Methoden zum Anzeigen von Float mit dabei ....
Bei mir unter:
ZitatC:\Users\<user>\Documents\Arduino\hardware\Arduino_STM32\STM32F1\libraries\OLED_I2C

Bei den WEMOS-Esp-Wroom-02-Modulen mit integriertem OLED-Display kommt jetzt das Problem hoch, dass sich die Seriellen immer wieder
ab- und einschalten.  Vermutlich Resetten die CP2102 oder es ist das USB-Kabel...  :(

Edit: Flashen bei eingelegtem 18650 Akku mag die Schaltung wohl nicht, ohne 18650 ist der Reset-Effekt weg. 

Grüße,
Jürgen

juergs

#182
OK, die display.println zickt:


BME680 wireless sensor V1.5
Protocol: CustomSensor
BSEC Version: 1.4.5.1
NODE-ID : 6
begin init Wire.
init wire done.
init OLED.
basic inits OLED done.
before yield.


Hatte die  display.println-Statements auskommentiert. Vorher kam die Exception vor den println-Statements.
Der compiler meckert nicht (?).
Yield hatte ich in die 8 Sekunden Warteschleife eingebaut.

PeMue

Hallo Jürgen,

Zitat von: juergs am 21 Dezember 2017, 15:55:57
STM32 (MapleMini) geht. Läuft bei mir mit CUL_TX.
Du bekommst aber die Daten über die USB Schnittstelle an FHEM, oder? Bei Thomas werden die Daten über den RFM69 geschickt (denke ich mal).

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

juergs

#184
Hallo Peter,

war ja nur eine Machbarkeitsstudie, da ich Probleme mit den ESP-Exceptions hatte (... yield) .

Aber: den RFM69 an den Maple (bzw. den F103) anzuschließen sollte auch einfach gehen.
War eigentlich mein erster Plan. Als Basis könnte man ebenfalls hdgucken's Sketch nehmen.
Die Einbindung der BSEC-vorkompilierten Libs beim Maple geht ja.

Mit fehlen bis jetzt nur die separaten OLED-Displays, deshalb bin ich gerade dabei den WEMOS
mit integrierten OLED anzubinden. Wie man sieht mit einigen Hürden  ;)

Anbei eine mögliche Implementierung für OLED für den Maple mit Anbindung eines BMP085/180 und I2C von hier:
ZitatThis is a hacked version of the official library only I2C1 on Maple Mini

oder dieses Beispiel:
ZitatC:\Users\<user>\Documents\Arduino\hardware\Arduino_STM32\STM32F1\libraries\OLED_I2C

Der Maple mit RFM und OLED mit BME680 wäre das nächste Ziel, wenn das Wroom2-Board soweit zum Laufen zu bringen ist ....  ;)

juergs

BME680 wireless sensor V1.5
Protocol: CustomSensor
BSEC Version: 1.4.5.1
NODE-ID : 6
begin init Wire.
init wire done.
init OLED.
basic inits OLED done.
before yield.
after yield.
begin init RFM.


Immerhin etwas weiter ....

PeMue

Hallo Jürgen,

Zitat von: juergs am 28 Dezember 2017, 19:14:48
Anbei eine mögliche Implementierung für OLED für den Maple mit Anbindung eines BMP085/180 und I2C von hier:
oder dieses Beispiel:
Der Maple mit RFM und OLED mit BME680 wäre das nächste Ziel, wenn das Wroom2-Board soweit zum Laufen zu bringen ist ....  ;)
ich hätte da vorher ziemliche Probleme, die Entwicklungsumgebung für den maple Mini zu installieren. Daher bleibe ich erst mal bei der Arduino IDE für Atmega's bzw. ESP8266  ;D

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

ZitatProbleme, die Entwicklungsumgebung für den maple Mini zu installieren
Die Arduino-Maple-HW oder die BOSCH-BSEC-LIBS?

PeMue

Zitat von: juergs am 28 Dezember 2017, 19:35:08
Die Arduino-Maple-HW oder die BOSCH-BSEC-LIBS?
eher (erstmal) ersteres, aber ich habe es auch nicht wirklich ernsthaft probiert ...

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

Arm- / Maple ja eigentlich nur, weil Bosch die 8-Bitter nicht  unterstüzt ... schade.
Aber im Prinzip geht ja der BME-Wiederstand über CUL_TX in 433MHz-OOK.  ;)

juergs

#190
Hmm, habe die Originl-Libs von https://learn.adafruit.com/adafruit-oled-featherwing/usage Adafruit heruntergeladen ....
... und siehe da: Das Beispiel stürzt beim ersten display.println ebenfalls ab. 

Ein Diff auf Thomas Lib-Version zeigt nur die /* --- SH1106 --- */ - Patchs ... sonst eigentlich identisch. 

Ist es die ESP-SDK-Version ?
ZitatArduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26

Aha, hier:
https://github.com/sparkfun/SparkFun_Micro_OLED_Arduino_Library/issues/5

OK, diese hier funktioniert bei dem Wemos-D1-Board:
https://github.com/greiman/SSD1306Ascii 
wegen http://www.esp8266.com/viewtopic.php?f=29&t=7841 und https://github.com/adafruit/Adafruit_SSD1306/issues/54

trotz:
src/SSD1306AsciiWire.h:61:2: warning: #warning set400kHz() disabled for this CPU. [-Wcpp]
#warning set400kHz() disabled for this CPU.


Fragezeichen, und staune ! (Edit: Wire-Setting auf 400KHz reicht aus)

Das Board und die OLED-Lib-Fehler/Unzulänglichkeiten nerven schon etwas....

Dann werfe ich die Adafruit-Lib bis auf Weiteres raus ...  :'(

BME680 wireless sensor V1.5
Protocol: CustomSensor
BSEC Version: 1.4.5.1
NODE-ID : 6
begin init Wire.
init wire done.
init OLED.
basic inits OLED done.
text display tests.
Test OLED done.
before yield.
after yield.
begin init RFM.
RFM69 failed, stop!
Soft WDT reset


Hatte den RFM noch nicht angeschlossen, das Display zeigt den Text an ...  :)

Bei angeschlossenem RFM geht nichts mehr, also erst mal Aufbau, Verdrahtung und die Soft-SPI-Funktionalität prüfen...


PeMue

Hallo Jürgen,

Zitat von: juergs am 28 Dezember 2017, 20:09:44
Arm- / Maple ja eigentlich nur, weil Bosch die 8-Bitter nicht  unterstüzt ... schade.
Aber im Prinzip geht ja der BME-Widerstand über CUL_TX in 433MHz-OOK.  ;)
wenn ich mir die BSEC Library anschaue, dann müsste aber der ATXMEGA32 eigentlich funktionieren, oder?
Meine Idee ist es, Dirk's Innensensor um einen Atxmega 32 bzw. einem BME680 zu erweitern, ggf. noch einen RFM69 draufzumachen und zu schauen, ob die Sache auch mit Batteriebetrieb funktionieren könnte. Ggf. findet sich ja auch jemand, der sich um die Homematic Software kümmert ...

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

#192
Hallo Peter,
hatte die XMega-Variante auch gesehen, aber noch nicht eingeordnet ...

ZitatDirk's Innensensor
Falls das geht, wäre das eine super Lösung.

Ich habe hier noch zwei ATXMega32-A4-AU hier auf DIP-Extention-Boards herumliegen.
War damals ein Fehlkauf, hatte sie mit ATMEGA32-U4 "verwechselt"  :'(
Zum Testen kann ich sie Dir gerne zuschicken ...

Mir ist in der neuen Doku aufgefallen, dass sie die Beschreibung für den Einbau der vorkompilierten Libs in Arduino herausgenommen haben ....   

In der Release_20171214 ist auch der megaAVR mit dabei, also nicht unbedingt XMega.  :D
Unter BSEC_1.4.5.1_Generic_Release_20171214\algo\bin\avr
ZitatAVR32
AVR8_megaAVR
AVR8_XMEGA

Dann müsste ja auch ein NANO usw. direkt mit der Innensensor-Platine gehen ...

PeMue

Hallo Jürgen,

Zitat von: juergs am 28 Dezember 2017, 22:17:04
Mir ist in der neuen Doku aufgefallen, dass sie die Beschreibung für den Einbau der vorkompilierten Libs in Arduino herausgenommen haben ....   
hast Du die alte Beschreibung noch irgendwo?

Danke + 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

HCS

Zitat von: juergs am 28 Dezember 2017, 22:17:04
Mir ist in der neuen Doku aufgefallen, dass sie die Beschreibung für den Einbau der vorkompilierten Libs in Arduino herausgenommen haben ....   
Möglicherweise weil man ab der kommenden Aduino-Version (> 1.8.5) wohl compiled libs ohne Gebastel verwenden können soll