Funksensor mit Bosch sensortec BME680 / Luftgüte

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

Vorheriges Thema - Nächstes Thema

hdgucken

Hallo Jürgen,

Zitat von: juergs
... Vorrausetzung ist es die Arduino IDE zu überreden die alte Struktur der Boards auf ATMEGA644 zu setzen, da AS7 diese alte Struktur erwartet um die Templates beim Import auf den 644  setzen zu können.
Evtl. geht das nur mit einer älteren Version, die noch mit <Arduino_Verzeichnis>/Hardware/boards.txt arbeitet...
Wie gesagt, der 644 ist ja nicht mehr so der "Mainstream" bei den Boards  :'(
Das ist noch ein guter Tip, probier ich mal ... 8)
Und stimmt, sind nicht mehr so ganz up to date, aber vielleicht für den Zweck noch ganz gut  :)
Zitat
Verbesserungen kann ich noch weiter Implementieren:
Sehr gerne  ;)
Zitat
Vielleicht solltes Du auch über einen Github-Account den Code dort ablegen, das hätten den Charme, dass man dort
dann zusammen arbeiten könnte  ;) und die Versionierung + Dokumentation einfacher ist ...
GitHub Account hab ich auch seit kurzem, allerdings unter einem anderen Namen, vielleicht etwas blöd ?!
Aber hatte ich auch schon drüber nachgedacht :D
Zitat
Den PALevel auf 15 setzen ist wahrscheinlich für alle Varianten zu empfehlen ...  :)
Werde ich auch mal testen, Reichweite ist durch nichts zu ersetzen, außer durch noch mehr Reichweite  ;D
Zitat
Ich kümmere mich jetzt mal um das Gehäuse und widme mich dann deinem UniversalSensor-Build  :)
Da hab ich natürlich auch Interesse, muss mir noch Gedanken dazu machen ...

Gruß Thomas


juergs

#331
ZitatGitHub Account hab ich auch seit kurzem, allerdings unter einem anderen Namen, vielleicht etwas blöd
Na dann gibt's vielleicht ein github.com/hdgucken;) ;) ;D ;D

Hat auch den Vorteil, dass man den Überblick über seine eigenen Projekte behält.
Besonders, wenn man den Rechner oder Betriessystem wechselt (... und der Backup-Fall!)   ;)


Apropos:
Maple-Version: https://github.com/juergs/Maple_BME_CC_Sensor

hdgucken

#332
Hab einfach mal den Namen hdgucken zum bestehenden account hinzugefügt, ist insgesamt besser,
dann muss ich nicht 2 accounts betreuen  :) Muss nur noch das Projekt hochladen  ;)

Edit: es ist vollbracht: https://github.com/amigatommy/BME680-UniversalSensor

Gruß Thomas

alias hdgucken / amigatommy (on github) ;)

PeMue

Hallo Jürgen,

Zitat von: juergs am 21 Januar 2018, 12:22:37
Apropos:
Maple-Version: https://github.com/juergs/Maple_BME_CC_Sensor
von welcher Bibliothek kommt den HardWire.h?

C:\temp\BME680_sensor_maple\BME680_sensor_maple.ino:133:22: fatal error: HardWire.h: No such file or directory
#include <HardWire.h>
compilation terminated.
exit status 1


Ich versuche gerade die arduino IDE für den STM32F103x einzurichten, Blink Sketch geht, Deiner leider noch nicht  :(

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

https://github.com/leaflabs/libmaple/blob/master/libraries/Wire/HardWire.h
Zitat/*
* Library created by crenn to use the new WireBase system and allow Arduino
* users easy interaction with the I2C Hardware in a familiar method.
*/
;)

hdgucken


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

Zitatthen you want to know how to wire up the pins of a BME680 breakout board with the Arduino MEGA. As a first step,
I would try to get the BME680 examples running which you can find at https://github.com/BoschSensortec/BME680_driver.

Das wäre der erste Part ohne BSEC ...

PeMue

Zitat von: juergs am 23 Januar 2018, 14:18:20
https://github.com/leaflabs/libmaple/blob/master/libraries/Wire/HardWire.h ;)
Hm, diese Bibliothek findet sich selber nicht, Fehlermeldungen:

In file included from C:\temp\BME680_sensor_maple\BME680_sensor_maple.ino:133:0:
E:\software\arduino185\portable\sketchbook\hardware\Arduino_STM32\STM32F1\libraries\Wire/HardWire.h:42:27: fatal error: Wire/WireBase.h: No such file or directory
#include <Wire/WireBase.h>
                          ^
compilation terminated.

Inhalt der Bibliothek:
28.07.2016  21:23             2.303 HardWire.cpp
28.07.2016  21:23             2.314 HardWire.h
28.07.2016  21:23               644 rules.mk
28.07.2016  21:23             4.895 Wire.cpp
28.07.2016  21:23             3.785 Wire.h
28.07.2016  21:23             4.050 WireBase.cpp
28.07.2016  21:23             4.343 WireBase.h

Header von HardWire.h:
#include <Wire/WireBase.h>
#include <wirish/wirish.h>
#include <libmaple/i2c.h>

das Unterverzeichnis Wire gibt's nicht  :o :o :o

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

#339
Hallo Peter,
....schaue mal nach...
ZitatUsing library Wire in folder: C:\Users\<js>\Documents\Arduino\hardware\Arduino_STM32\STM32F1\libraries\Wire (legacy)

Das sit bei mir ein Ordner im Projekt-Ordner, den man in Preferences einstellt.
Dieser wird wohl automatisch bei der Toolchain-Installation im Boardmanager angelegt ...

Datenträger in Laufwerk C: ist SYSTEM
Volumeseriennummer: 7096-15F4

Verzeichnis von C:\Users\js\Documents\Arduino\hardware\Arduino_STM32\STM32F1\libraries

23.01.2018  18:19    <DIR>          .
23.01.2018  18:19    <DIR>          ..
13.06.2017  01:39    <DIR>          Adafruit_GFX_AS
13.06.2017  01:39    <DIR>          Adafruit_ILI9341
13.06.2017  01:39    <DIR>          Adafruit_ILI9341_STM
13.06.2017  01:39    <DIR>          Adafruit_SSD1306
13.06.2017  01:39    <DIR>          A_STM32_Examples
13.06.2017  01:39    <DIR>          EEPROM
13.06.2017  01:39    <DIR>          Ethernet_STM
13.06.2017  01:39    <DIR>          FreeRTOS
13.06.2017  01:39    <DIR>          FreeRTOS821
13.06.2017  01:39    <DIR>          Lcd7920_STM
13.06.2017  01:39    <DIR>          LiquidCrystal
13.06.2017  01:39    <DIR>          MapleCoOS
13.06.2017  01:39    <DIR>          MapleCoOS116
13.06.2017  01:39    <DIR>          OLED_I2C
13.06.2017  01:39    <DIR>          OneWireSTM
13.06.2017  01:39    <DIR>          RTClock
13.06.2017  01:39    <DIR>          Serasidis_EtherCard_STM
13.06.2017  01:39    <DIR>          Serasidis_VS1003B_STM
13.06.2017  01:39    <DIR>          Serasidis_XPT2046_touch
13.06.2017  01:39    <DIR>          Servo
13.06.2017  01:39    <DIR>          SPI
13.06.2017  01:39    <DIR>          STM32ADC
13.06.2017  01:39    <DIR>          Touch-Screen-Library_STM
13.06.2017  01:39    <DIR>          Wire
23.01.2018  18:19            13.785 Wire.zip
13.06.2017  01:39    <DIR>          WS2812B
               1 Datei(en),         13.785 Bytes
              27 Verzeichnis(se), 146.876.633.088 Bytes frei


So sieht das bei mir aus, weiss aber leider nicht mehr genau, ob ich das manuell da reingelegt habe.
Sehr wahrscheinlich schon  :( ??? ::) Asche auf mein Haupt!

Die SPI-Lib aus diesem Verzeichnis (STM32-Standard-Library-Suchpfad) habe ich auch noch dazu gepackt.
(und eine OLED_I2C liegt auch noch dort ..)

Wo das bei Dir liegt, kannst du am Compile-Output sehen, wenn Du in Preferences "Show verbose output during *compile and *upload"
beide Checkboxen angeklickt hast.

Grüße,
Jürgen

PS:
Der Status ist aber wirklich "preliminary"... Mann kann auch die I2C-Speed noch auf FAST einstellen.
Dann ist der Display-Update schneller....

hdgucken

Bin soweit, jetzt fehlen mir nur noch meine STM32 Boards, die sind noch unterwegs ...  :)
Hab den Universalsensor V2.2 auf STM32 umgebaut, hoffe, daß alles funktionieren wird:
Der Sketch verwendet 74492 Bytes (56%) des Programmspeicherplatzes. Das Maximum sind 131072 Bytes.
Globale Variablen verwenden 5920 Bytes (28%) des dynamischen Speichers, 14560 Bytes für lokale Variablen verbleiben. Das Maximum sind 20480 Bytes.

PeMue

#341
Hallo Jürgen,

es reicht nur die Wire Bibliothek, die habe ich in Wire_leaflab umbenannt, da schon eine Wire Bibliothek vorhanden war. Dann hat die Arduino IDE anstandslos durchkompiliert (obwohl ich die BSEC Bibliothek noch nicht eingebunden habe  ???), aber es kamen immerhin rote Warnmeldungen. Das ist also anders als beim ESP8266 oder beim AVR, der Linker linkt, auch wenn die Bibliothek nicht da ist und erstellt einen Sketch  :o. Nach dem Einbinden der BSEC Bibliothek (mit Deinem Sketch aus github):

Sketch uses 72700 bytes (65%) of program storage space. Maximum is 110592 bytes.
Global variables use 5752 bytes (33%) of dynamic memory, leaving 11656 bytes for local variables. Maximum is 17408 bytes.

Jetzt muss ich mich nur noch darum kümmern, welcher der richtige Bootloader für den mapleMini ist.  :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

#342
Hallo Peter,

freut mich, dass es geklappt hat. (Die ASCII_SD1306-OLED-Lib gibt eine Warnmeldung aus bezüglich Fast-I2C-Mode (400KHz) aus und kann vernachlässigt werden)
Zitatder Linker linkt, auch wenn die Bibliothek nicht da ist
Nein, der Compiler meckert eigentlich, weil er die Einsprungspunkte in die BSEC-Funktionen nicht findet ...

Das MapleMini-Board kommt ja schon mit dem Leaflabs Bootloader, bzw. mit dem Hardware-DFU-Bootloader.
Auf einen fabrikneuen STM-Chip brauchst Du nur die manuelle Boot-Prozedur seriell (!) einmal einleiten:
Brücke zwischen Ground und BOOT1 und den Blink-Sketch über Arduino flashen (Flash-Button gedrückt halten und Reset kurz toggeln)
Danach sollte dann die Arduino-IDE über USB als DFU-Bootloader erkennen und beim Flashen vom Blink Sketch seinen Bootloader mit auf den Prozessor brennen.
Von da ab braucht man nicht mehr manuell die Button-Prozedur durchführen, sondern die Arduino-IDE schaltet automatisch in den Flashmodus.
Wie gesagt, das gilt nicht für das Maple-Board, nur für einen eigenen neuen Chip. Ansonsten kennen wir das schon aus dem MapleCUL-Thread.  ;)

Diesen Bootloader könntest Du dann auch mit dem "Flash Loader Demonstrator" auf den Chip bringen (ist aber mit der Arduino-IDE nicht erforderlich).
Wäre noch die Frage offen, wo liegt der Arduino-STM-Bootloader zum manuellen Flashen ? 

Hoffe, ich habe das noch richtig in Erinnerung.  ::)

Ansonsten, hier:
http://www.rogerclark.net/stm32f103-and-maple-maple-mini-with-arduino-1-5-x-ide/
http://www.rogerclark.net/arduino-stm32-usb-serial-and-dfu/

Bootloader binary: maple_mini_boot20.bin
https://github.com/rogerclarkmelbourne/STM32duino-bootloader/tree/master/binaries

http://born2bastel.de/2017/02/08/maple-mini-clone-bootloader-flashen/





juergs

#343
Maple + Adafruit SSD1306-OLED- Lib mit Hardware I2C_1:
(defaults, mit 0x3C-Adresse und 128x64-Auflösung)

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

#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);


im STM-Hardware-Ordner (aus preferences.txt: <lib-Path>\hardware)
ZitatC:\Users\<user>\Documents\Arduino\hardware\Arduino_STM32\STM32F1\libraries\Adafruit_SSD1306

folgende Änderungen für I2c_1 :

//#include <HWIRE.h>
#include <HardWire.h>
HardWire HWIRE(1,I2C_FAST_MODE); // I2c1
//HardWire HWIRE(2,I2C_FAST_MODE); // I2c2
#include "Adafruit_GFX.h"
#include "Adafruit_SSD1306_STM32.h"
/*
Things to know:
This adaption uses hardware I2C (hardwire.h), Port: I2c2. SDA=0, SCL=1 on maple mini
To change it to Port I2C1:
//HardWire HWIRE(1,I2C_FAST_MODE); // I2c1
HardWire HWIRE(2,I2C_FAST_MODE); // I2c2
*/


Der compiler beklagte sich, dass er swap nicht kennt, deshalb:
#define swap(x, y) do { typeof(x) SWAP = x; x = y; y = SWAP; } while (0)
in der Datei: C:\Users\<user>\Documents\Arduino\hardware\Arduino_STM32\STM32F1\libraries\Adafruit_SSD1306\Adafruit_SSD1306_STM32.cpp
geändert bzw. hinzugefügt.

Damit funktioniert auch der I2C-FastMode mit 400KHz.

Grüße,
Jürgen

PeMue

#344
Hallo Thomas,

Zitat von: hdgucken am 21 Januar 2018, 00:19:56
Hab mal wieder den Universalsensor überarbeitet, hier ist V2.2 ! Alles ist jetzt über die Defines auswähl- bzw. einstellbar,
habe mittlerweile mein nanoLGW mit der v2.2 aktualisiert:
BME680 wireless sensor V2.2
Protocol: UniversalSensor
BSEC version: 1.4.5.1
ESP Core Version: 2_4_0
ESP SDK Version: 2.1.0(deb1901)
NODE-ID : 0x6F
aktivierte Komponenten:
RFM69 - 433/868/915MHz Sender
BH1750 - Lichtsensor
OLED - 128x64 OLED Display mit SH1106 Chipsatz
Messung der Versorgungsspannung aktiv
OLED not found
Hardware-SPI fuer RFM69 aktiviert
NSS an GPIO-Pin 15
RFM69  init ...
Init LaCrosse done
Set frequency to 868.300 MHz
Set datarate to 17241 bps
done
BME680 init ... done
BH1750 init ... not present
Ready, start measuring ...

[7597.00] P: 1006.8| T: 30.55| rH: 30.33| IAQ: 25.00 (0)| Gas: 19316.00| UBat: 3.7V
transmission time: 32 ms
data:
205 111 5 25 30 255 255 255 255 255 255 255 255 0 39 83 0 0 25 0 75 116 255 255 255 22 36 255 255 255 127 182
CD 6F 5 19 1E FF FF FF FF FF FF FF FF 0 27 53 0 0 19 0 4B 74 FF FF FF 16 24 FF FF FF 7F B6
32 bytes sent.
[19598.00] P: 1006.7| T: 30.84| rH: 28.65| IAQ: 25.00 (0)| Gas: 18798.00| UBat: 3.7V

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

Verbesserungsvorschlag: Im Debug Mode auch die Höhe mit ausgeben, da sieht man dann, welche Höhe der Sensor eingestellt hat (und ich habe prompt die mit 0 m geflasht  :o).

Gruß PeMue

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.

Edit 2:
Und hier noch die mapleMini Hardware zu Einpflegen in den Code, noch ungetestet, aber geflasht:
  Hardware setup:                                                   BME680              RFM69CW
                         NodeMCU                                   +------+            +-------+
                         +--\/--+                            +3.3V | 0x76 |      +3,3V |       | GND
                VCC 3,3V |      | GND                      <-> SDA | or   |   --> MOSI |    NSS| RFM_NSS <--
    int.LED (D0) GPIO 16 |      | GPIO 1  (D10)            --> SCL | 0x77 |   <-- MISO |       |
    <-- SCL (D1)  GPIO 5 |      | GPIO 3  (D9)                 GND |      |   --> SCK  |       |
           RESET     RST |      | GPIO 15 (D8) RFM_NSS -->         +------+            +-------+
    <-> SDA (D2)  GPIO 4 |      | GPIO 13 (D7) MOSI -->             BH1750            SH1106 OLED
            (D3)  GPIO 0 |      | GPIO 12 (D6) MISO <--            +------+            +-------+
            (D4)  GPIO 2 |      | GPIO 14 (D5) SCK  -->      +3.3V | 0x23 |      +3.3V | 0x3C  |
                         +------+                              GND | or   |        GND | or    |
                                                           --> SCL | 0x5C |    --> SCL | 0x3D  |
                                                           <-> SDA |      |    <-> SDA |       |
                                                                   +------+            +-------+

                         mapleMini
                         +--\/--+                       
            <-- VCC 3.3V |      | VCC 3.3V
                 <-- GND |      | GND
                   BOOT0 |      | VBAT
            <-> SDA PB_7 |      | PC_13
        <-- SCL D10/PB_6 |      | PC_14
                    PB_5 |      | PC_15
                    PB_4 |      | RESET
                    PB_3 |      | PA_0
                   PA_15 |      | PA_1
                   PA_14 |      | PA_2
                   PA_13 |      | PA_3
                   PA_12 |      | PA_4/A2 NSS
                   PA_11 |      | PA_5/D13 SCK
                   PA_10 |      | PA_6/D12 MISO
                    PA_9 |      | PA_7/D11 MOSI
                    PA_8 |      | PB_0
                   PB_15 |      | PB_2
                   PB_14 |      | PB_10
                   PB_13 |      | PB_11
                   PB_12 |      | + 5V
                         +------+                       
                                  PB_1 LED1
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