From a44accafeeb2b71f158d94f80d17cefe52401381 Mon Sep 17 00:00:00 2001 From: SV-Zanshin <Zanshin@SV-Zanshin.Com> Date: Wed, 27 May 2020 13:15:33 +0200 Subject: [PATCH 01/49] Update SDLoggerSPIDemo.ino --- examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino b/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino index 679e4ab..86219fe 100644 --- a/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino +++ b/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino @@ -70,7 +70,7 @@ Version | Date | Developer | Comments ** Declare all program constants ** *******************************************************************************************************************/ const uint8_t BME_680_SPI_CS_PIN = SS; ///< Use the standard SS pin for the BME680 -const uint8_t SD_CARD_SPI_CS_PIN = 24; ///< Use Pin A6 for the SD Card +const uint8_t SD_CARD_SPI_CS_PIN = 24; ///< Use Pin A6/D4 for the SD Card const uint32_t SERIAL_SPEED = 115200; ///< Set the baud rate for Serial I/O const uint8_t NUMBER_READINGS = 10; ///< Number of readings to average const uint32_t LONG_DELAY = 10000; ///< Long delay in milliseconds - 10 seconds From 056791d99b1af27b40e933727aabfc92f7a26884 Mon Sep 17 00:00:00 2001 From: Zanshin <Arnd_Github@SV-Zanshin.com> Date: Wed, 27 May 2020 13:35:28 +0200 Subject: [PATCH 02/49] Update SDLoggerSPIDemo.ino --- examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino b/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino index 86219fe..8b66cfe 100644 --- a/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino +++ b/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino @@ -28,7 +28,7 @@ This example program was designed as a simple data logger which defaults to meas Once either the temperature, pressure or humidity changes at a rate above that set in the constants TEMPERATURE_TRIP, PRESSURE_TRIP or HUMIDITY_TRIP then the measurement rate is sped up to read every second and to read more accurately. This was intended as a data logger inside a refrigerator or freezer, where most of the time there are constant -values but when the door is opened or the anti-icing cycle kicks in then readings need to be done more often. +values but when the door is opened or the defrosting cycle kicks in then readings need to be done more often. This example program initializes the BME680 to use SPI for communications. The library does not using floating point numbers to save on memory space and computation time. The values for Temperature, Pressure and Humidity are From 27dd60f73ff09e3f8f8b6b509430532dcd01d25c Mon Sep 17 00:00:00 2001 From: Zanshin <Arnd_Github@SV-Zanshin.com> Date: Wed, 27 May 2020 13:36:10 +0200 Subject: [PATCH 03/49] Check signature on commit --- examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino b/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino index 8b66cfe..e9e4c7e 100644 --- a/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino +++ b/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino @@ -63,7 +63,7 @@ Version | Date | Developer | Comments 1.0.0b | 2020-05-22 | https://github.com/SV-Zanshin | Cloned from original SPIDemo program and modified */ #include "Zanshin_BME680.h" // Include the BME680 Sensor library -#include <SPI.h> // Include the SPI standard library (it is also included in the BME680 library) +#include <SPI.h> // Include the SPI standard library (also included in the BME680 library) #include <SD.h> // Include the SD Card standard library /******************************************************************************************************************* From 2843e6d35ddde46e907181ce0bae7793ddc1b895 Mon Sep 17 00:00:00 2001 From: Zanshin <Zanshin_Github@SV-Zanshin.com> Date: Wed, 27 May 2020 13:44:15 +0200 Subject: [PATCH 04/49] Checking GPG --- examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino b/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino index e9e4c7e..0ab6e0c 100644 --- a/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino +++ b/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino @@ -145,10 +145,10 @@ void setup() and then control goes to the main "loop()" method, from which control never returns @return void */ - digitalWrite(SD_CARD_SPI_CS_PIN, HIGH); // Write a high value to it in order to deselect device - digitalWrite(BME_680_SPI_CS_PIN, HIGH); // Write a high value to it in order to deselect device pinMode(BME_680_SPI_CS_PIN, OUTPUT); // Declare the Chip-Select pin for the BME680 as output pinMode(SD_CARD_SPI_CS_PIN, OUTPUT); // Declare the Chip-Select pin for the SD Card as output + digitalWrite(SD_CARD_SPI_CS_PIN, HIGH); // Write a high value to it in order to deselect device + digitalWrite(BME_680_SPI_CS_PIN, HIGH); // Write a high value to it in order to deselect device Serial.begin(SERIAL_SPEED); // Start serial port at Baud rate #ifdef __AVR_ATmega32U4__ // If this is a 32U4 processor, delay(3000); // then wait 3 seconds to initialize USB port From a31a7eb1376286b7abe339941c0a84ae0e65c494 Mon Sep 17 00:00:00 2001 From: Zanshin <Zanshin_Github@SV-Zanshin.com> Date: Wed, 27 May 2020 13:47:19 +0200 Subject: [PATCH 05/49] Test commit for checking GPG key --- examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino b/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino index 0ab6e0c..090104e 100644 --- a/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino +++ b/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino @@ -200,7 +200,8 @@ void loop() */ if (loopCounter % 25 == 0) // Header every 25 loops { // - Serial.print(F("\nLoop Temp\xC2\xB0\x43 Humid% Press hPa Avg Tmp Avg Hum Avg hPa\n==== ====== ====== ========= ======= ====== =========\n")); // Show header plus unicode "°C" symbol + Serial.print(F("\nLoop Temp\xC2\xB0\x43 Humid% Press hPa Avg Tmp Avg Hum Avg hPa\n" + "==== ====== ====== ========= ======= ====== =========\n")); // Show header plus unicode "°C" symbol } // if-then time to show headers // idx = (idx+1) % NUMBER_READINGS; // increment and clamp BME680.getSensorData(data[idx].temperature, data[idx].humidity, // Read once at beginning From 65e89d3396e85328f56784f62eb19e133d8ff5db Mon Sep 17 00:00:00 2001 From: Zanshin <Zanshin_Github@SV-Zanshin.com> Date: Thu, 28 May 2020 13:26:31 +0200 Subject: [PATCH 06/49] commented out serial on SDLoggerSPIDemo program, test upload to Travis-CI for other platforms --- examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino | 21 +++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino b/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino index 090104e..e7d48c7 100644 --- a/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino +++ b/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino @@ -66,11 +66,24 @@ Version | Date | Developer | Comments #include <SPI.h> // Include the SPI standard library (also included in the BME680 library) #include <SD.h> // Include the SD Card standard library +//#define SERIAL_ATTACHED // When commented out then no output is done to the serial port +#ifndef SERIAL_ATTACHED +// disable Serial output +#define Serial SomeOtherwiseUnusedName +static class { +public: + void begin(...) {} + void print(...) {} + void println(...) {} +} Serial; +#endif + /******************************************************************************************************************* ** Declare all program constants ** *******************************************************************************************************************/ const uint8_t BME_680_SPI_CS_PIN = SS; ///< Use the standard SS pin for the BME680 const uint8_t SD_CARD_SPI_CS_PIN = 24; ///< Use Pin A6/D4 for the SD Card +const uint8_t LED_PIN = LED_BUILTIN; ///< Built-in LED pin const uint32_t SERIAL_SPEED = 115200; ///< Set the baud rate for Serial I/O const uint8_t NUMBER_READINGS = 10; ///< Number of readings to average const uint32_t LONG_DELAY = 10000; ///< Long delay in milliseconds - 10 seconds @@ -147,10 +160,12 @@ void setup() */ pinMode(BME_680_SPI_CS_PIN, OUTPUT); // Declare the Chip-Select pin for the BME680 as output pinMode(SD_CARD_SPI_CS_PIN, OUTPUT); // Declare the Chip-Select pin for the SD Card as output + pinMode(LED_PIN, OUTPUT); // Declare the builtin LED to be an output digitalWrite(SD_CARD_SPI_CS_PIN, HIGH); // Write a high value to it in order to deselect device digitalWrite(BME_680_SPI_CS_PIN, HIGH); // Write a high value to it in order to deselect device + digitalWrite(LED_PIN, LOW); // Turn off the LED Serial.begin(SERIAL_SPEED); // Start serial port at Baud rate - #ifdef __AVR_ATmega32U4__ // If this is a 32U4 processor, + #ifdef __AVR_ATmega32U4__ // If this is a 32U4 processor, delay(3000); // then wait 3 seconds to initialize USB port #endif Serial.print(F("Starting SDLoggerSPIDemo example program for BME680\n- Initializing BME680 sensor\n")); @@ -200,8 +215,8 @@ void loop() */ if (loopCounter % 25 == 0) // Header every 25 loops { // - Serial.print(F("\nLoop Temp\xC2\xB0\x43 Humid% Press hPa Avg Tmp Avg Hum Avg hPa\n" - "==== ====== ====== ========= ======= ====== =========\n")); // Show header plus unicode "°C" symbol + Serial.print(F("\nLoop Temp\xC2\xB0\x43 Humid% Press hPa Avg Tmp Avg Hum Avg hPa\n" // Show header plus the + "==== ====== ====== ========= ======= ====== =========\n")); // unicode "°C" symbol } // if-then time to show headers // idx = (idx+1) % NUMBER_READINGS; // increment and clamp BME680.getSensorData(data[idx].temperature, data[idx].humidity, // Read once at beginning From 9e17fe7502c5e6384ffa54338e530ec4da5bad14 Mon Sep 17 00:00:00 2001 From: Arnd <Zanshin_Github@sv-zanshin.com> Date: Fri, 29 May 2020 14:56:12 +0200 Subject: [PATCH 07/49] Update README.md --- .github/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/README.md b/.github/README.md index 257a84b..7e31a66 100644 --- a/.github/README.md +++ b/.github/README.md @@ -1,4 +1,4 @@ -# BME680 library<br>[](https://travis-ci.org/SV-Zanshin/BME680) [](https://zenodo.org/badge/latestdoi/139349456) [](https://www.ardu-badge.com/BME680) +# BME680 library<br>[](https://travis-ci.org/SV-Zanshin/BME680) [](https://www.ardu-badge.com/BME680) [](https://zenodo.org/badge/latestdoi/139349456) *Arduino* library for using the [Bosch BME680](https://www.bosch-sensortec.com/bst/products/all_products/bme680) sensor which senses temperature, humidity and pressure. The BME680 is a tiny package and no hobbyist is going to be breadboarding this sensor directly, so one will be part of a breakout board. Here are some breakout board examples: | Supplier | Image | Instructions | Comments | From 18a440c7b5054dcfc5bccf6ab8fef2b6973a950f Mon Sep 17 00:00:00 2001 From: Zanshin <Zanshin_Github@SV-Zanshin.com> Date: Sun, 31 May 2020 13:41:03 +0200 Subject: [PATCH 08/49] Initial Commit of ESP32FeatherWiFiDemo program --- examples/ESP32FeatherWiFiDemo/.due.test.skip | 0 .../ESP32FeatherWiFiDemo/.esp8266.test.skip | 0 .../ESP32FeatherWiFiDemo/.leonardo.test.skip | 0 examples/ESP32FeatherWiFiDemo/.m4.test.skip | 0 .../ESP32FeatherWiFiDemo/.mega2560.test.skip | 0 examples/ESP32FeatherWiFiDemo/.uno.test.skip | 0 examples/ESP32FeatherWiFiDemo/.zero.test.skip | 0 .../ESP32FeatherWiFiDemo/Authentication.h | 3 + .../ESP32FeatherWiFiDemo.ino | 258 ++++++++++++++++++ .../ESP32FeatherWiFiDemo/WebPageContents.h | 157 +++++++++++ examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino | 22 +- 11 files changed, 436 insertions(+), 4 deletions(-) create mode 100644 examples/ESP32FeatherWiFiDemo/.due.test.skip create mode 100644 examples/ESP32FeatherWiFiDemo/.esp8266.test.skip create mode 100644 examples/ESP32FeatherWiFiDemo/.leonardo.test.skip create mode 100644 examples/ESP32FeatherWiFiDemo/.m4.test.skip create mode 100644 examples/ESP32FeatherWiFiDemo/.mega2560.test.skip create mode 100644 examples/ESP32FeatherWiFiDemo/.uno.test.skip create mode 100644 examples/ESP32FeatherWiFiDemo/.zero.test.skip create mode 100644 examples/ESP32FeatherWiFiDemo/Authentication.h create mode 100644 examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino create mode 100644 examples/ESP32FeatherWiFiDemo/WebPageContents.h diff --git a/examples/ESP32FeatherWiFiDemo/.due.test.skip b/examples/ESP32FeatherWiFiDemo/.due.test.skip new file mode 100644 index 0000000..e69de29 diff --git a/examples/ESP32FeatherWiFiDemo/.esp8266.test.skip b/examples/ESP32FeatherWiFiDemo/.esp8266.test.skip new file mode 100644 index 0000000..e69de29 diff --git a/examples/ESP32FeatherWiFiDemo/.leonardo.test.skip b/examples/ESP32FeatherWiFiDemo/.leonardo.test.skip new file mode 100644 index 0000000..e69de29 diff --git a/examples/ESP32FeatherWiFiDemo/.m4.test.skip b/examples/ESP32FeatherWiFiDemo/.m4.test.skip new file mode 100644 index 0000000..e69de29 diff --git a/examples/ESP32FeatherWiFiDemo/.mega2560.test.skip b/examples/ESP32FeatherWiFiDemo/.mega2560.test.skip new file mode 100644 index 0000000..e69de29 diff --git a/examples/ESP32FeatherWiFiDemo/.uno.test.skip b/examples/ESP32FeatherWiFiDemo/.uno.test.skip new file mode 100644 index 0000000..e69de29 diff --git a/examples/ESP32FeatherWiFiDemo/.zero.test.skip b/examples/ESP32FeatherWiFiDemo/.zero.test.skip new file mode 100644 index 0000000..e69de29 diff --git a/examples/ESP32FeatherWiFiDemo/Authentication.h b/examples/ESP32FeatherWiFiDemo/Authentication.h new file mode 100644 index 0000000..9f5c9ae --- /dev/null +++ b/examples/ESP32FeatherWiFiDemo/Authentication.h @@ -0,0 +1,3 @@ +#pragma once +const char* WIFI_SSID = "YourNetworkNameGoesHere"; ///< Network to connect to +const char* WIFI_PASSWORD = "EnterPasswordHere"; ///< Network authentication code diff --git a/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino b/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino new file mode 100644 index 0000000..7ed8e28 --- /dev/null +++ b/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino @@ -0,0 +1,258 @@ +/*! @file ESP32FeatherWiFiDemo.ino + +@section ESP32FeatherWiFiDemo_intro_section Description + +Example program for using an Arduino ESP32 based system (this sketch was developed and tested on a ESP32 Huzzah32 +Feather board from https://www.adafruit.com/product/3405) along with a BME680 connected via I2C to monitor the +temperature, pressure and humidity and report the values in a dynamic chart on a web page hosted by the ESP32 +and connected to a local network. + +Prior to compiling the program, the contents of the include file "Authentication.h" need to be updated to reflect +the local WiFi network to use and the corresponding authentication code. + +Once started, the IP-Address is set by the WiFi router and displayed on the serial output of the ESP32, this IP +address should then be entered as the URL in a web browser of a computer attached to the same network and the +data should be presented there, updated every 5 seconds. + +The Bosch BME680 sensor measures temperature, pressure, humidity and air quality and is described at +https://www.bosch-sensortec.com/bst/products/all_products/BME680. The datasheet is available from Bosch at +https://ae-bst.resource.bosch.com/media/_tech/media/datasheets/BST-BME680_DS001-11.pdf \n\n + +The most recent version of the BME680 library is available at https://github.com/SV-Zanshin/BME680 and the +documentation of the library as well as example programs are described in the project's wiki pages located at +https://github.com/SV-Zanshin/BME680/wiki. \n\n + +The BME680 is an extremely small physical package that is so tiny as to be impossible to solder at home, hence it +will be used as part of a third-party breakout board. There are several such boards available at this time, for +example \n +Company | Link +------- | ---------- +Sparkfun | https://www.sparkfun.com/products/14570 +BlueDot | https://www.bluedot.space/sensor-boards/bme680/ +Adafruit | https://learn.adafruit.com/adafruit-BME680-humidity-barometric-pressure-temperature-sensor-breakout \n\n + +Bosch supplies sample software that runs on various platforms, including the Arduino family; this can be downloaed +at https://github.com/BoschSensortec/BSEC-Arduino-library . This software is part of the Bosch "BSEC" (Bosch +Sensortec Environmental Cluster) framework and somewhat bulky and unwieldy for typical Arduino applications, hence +the choice to make a more compact and rather less abstract library. + +The pressure reading needs to be adjusted for altitude to get the adjusted pressure reading. There are numerous +sources on the internet for formulae converting from standard sea-level pressure to altitude, see the data sheet +for the BME180 on page 16 of http://www.adafruit.com/datasheets/BST-BMP180-DS000-09.pdf. Rather than put a +floating-point function in the library which may not be used but which would use space, an example altitude +computation function has been added to this example program to show how it might be done. + +@section ESP32FeatherWiFiDemolicense License + +This program is free software: you can redistribute it and/or modify it under the terms of the GNU General +Public License as published by the Free Software Foundation, either version 3 of the License, or (at your +option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. + +@section ESP32FeatherWiFiDemoauthor Author + +Written by Arnd\@SV-Zanshin + +@section ESP32FeatherWiFiDemoversions Changelog + +Version | Date | Developer | Comments +------- | ---------- | ----------------------------- | ------------------------------------------- +1.0.0b | 2020-05-30 | https://github.com/SV-Zanshin | Initial coding +*/ + +#if !defined(ESP32) + #error This example program is designed specifically for the ESP32 platform and might not work on other platforms +#endif + +/******************************************************************************************************************* +** Declare all include files required ** +*******************************************************************************************************************/ +#include <SPI.h> ///< Include the SPI standard library +#include <SD.h> ///< Include the SD Card standard library +#include <WiFi.h> ///< ESP32 WiFi Library +#include <WiFiClient.h> ///< WiFi Client library +#include <WebServer.h> ///< WiFi Web Server library +#include "WebPageContents.h" ///< Include external HTML and JavaScript definitions +#include "Authentication.h" ///< Contains the network SSID and authentication code +#include "Zanshin_BME680.h" ///< The BME680 sensor library + +/******************************************************************************************************************* +** Declare all program constants ** +*******************************************************************************************************************/ +const uint32_t SERIAL_SPEED = 115200; ///< Set the baud rate for Serial I/O +const uint8_t POWER_PIN = A13; ///< Supply voltage through a divider +const uint8_t LED_PIN = 13; ///< This pin is the on-board red LED +const uint8_t SD_CARD_SPI_CS_PIN = 21; ///< Use Pin 21 (general GPIO) on the ESP32 for chip select +const uint8_t SD_CARD_SPI_CD_PIN = A5; ///< Use Pin A5 (general GPIO) on the ESP32 for carrier detect +const char* FILE_NAME = "/BME_680.csv"; ///< Filename on SD-Card +const uint32_t SD_LOG_INTERVAL = 1000; ///< Milliseconds between measurements to SD-Card +const uint8_t SD_FLUSH_INTERVAL = 60; ///< do a "flush" after this number of writes + +/******************************************************************************************************************* +** Declare all program macros ** +*******************************************************************************************************************/ +#define VOLTAGE (analogRead(POWER_PIN)/4095.0*3.3*2*1.1) ///< Macro for floating point voltage +/******************************************************************************************************************* +** Declare all global variables ** +*******************************************************************************************************************/ +WebServer server(80); ///< Instantiate a web server on port 80 +BME680_Class BME680; ///< Create an instance of the BME680 class +File dataFile; ///< Class for a SD-Card file +int32_t temperature; ///< BME680 temperature value +int32_t humidity; ///< BME680 humidity value +int32_t pressure; ///< BME680 pressure value +int32_t gas; ///< BME680 gas resistance value +int32_t start_pressure; ///< Initial pressure reading +bool sd_card_present = false; ///< Switch set when SD-Card detected +String jsonData; ///< JSON data string +uint16_t loopCounter = 0; ///< Counter for number of write operations since startup +uint32_t next_log_millis; ///< Millis() value for next SD-Card measurement + +void setup() +{ + pinMode(SD_CARD_SPI_CS_PIN, OUTPUT); // Declare the Chip-Select pin for the SD Card as output + pinMode(SD_CARD_SPI_CD_PIN, INPUT_PULLUP); // Declare the Carrier detect pin for the SD Card as input + digitalWrite(SD_CARD_SPI_CS_PIN, HIGH); // Write a high value to it in order to deselect device + pinMode(LED_PIN, OUTPUT); // make the LED an output pin + Serial.begin(115200); + Serial.print(F("Starting ESP32FeatherWiFiDemo example program for BME680\n")); + /********************** + ** Initialize BME680 ** + **********************/ + Serial.print(F("- Initializing BME680 sensor\n")); + while (!BME680.begin(I2C_STANDARD_MODE)) // Start BME680 using I2C, use first device found + { + Serial.print(F("- Unable to find BME680. Trying again in 5 seconds.\n")); + delay(5000); + } // of loop until device is located + Serial.print(F("- Setting 16x oversampling for all sensors\n")); + BME680.setOversampling(TemperatureSensor, Oversample16); // Use enumerated type values to set value + BME680.setOversampling(HumiditySensor, Oversample16); // Use enumerated type values to set value + BME680.setOversampling(PressureSensor, Oversample16); // Use enumerated type values to set value + Serial.print(F("- Setting IIR filter to a value of 4 samples\n")); + BME680.setIIRFilter(IIR4); // Use enumerated type values + Serial.print(F("- Turning off gas measurements\n")); + BME680.setGas(0, 0); // Setting either to 0 turns off gas measurement + BME680.getSensorData(temperature, humidity, start_pressure, gas); // Get most recent readings + /*************************************************************** + ** Initialize SD-Card for logging, if not found then continue ** + ***************************************************************/ + Serial.print(F("- Checking to see if SD Card connected\n")); + if (!digitalRead(SD_CARD_SPI_CD_PIN)) + { + sd_card_present = false; // if pin is high then no card inserted + } + else + { + uint8_t loopCounter = 10; ///< countdown to 0 to detect car + while (--loopCounter && !SD.begin(SD_CARD_SPI_CS_PIN)) // Try to start card using SPI + { + Serial.print(F("- Unable to find SD Card. Trying again in 5 seconds.\n")); + for (uint8_t i = 0; i < 50; i++) + { + digitalWrite(LED_PIN, !digitalRead(LED_PIN)); + delay(100); + } // loop to toggle LED light 10 times + } // of loop until device is located + if (loopCounter) sd_card_present = true; + } // if-then card is inserted + if (!sd_card_present) + { + Serial.print(F("- No SD-Card detected, continuing\n")); + } + else + { + Serial.print(F("- SD-Card Initialized\n")); + dataFile = SD.open(FILE_NAME, FILE_WRITE); // Open the logfile for writing and position to end-of-file + if (!dataFile) + { + Serial.print(F("Unable to open file \"")); + Serial.print(FILE_NAME); + Serial.print(F("\" on SD-Card. Error. Skipping SD writes.")); + sd_card_present = false; // turn off card + } + else + { + Serial.print(F("- File \"")); + Serial.print(FILE_NAME); + Serial.print(F("\" successfully opened. Appending data.\n")); + dataFile.print("Counter,Seconds,SupplyVoltage,Temperature,Humidity,Pressure\n"); + } // if-then-else the file could be opened + } // if-then-else SD-Card located + /********************************************** + ** Connect to the specified wireless network ** + **********************************************/ + Serial.print(F("- Connecting to Wireless network \"")); + Serial.print(WIFI_SSID); + Serial.print(F("\".")); + WiFi.begin(WIFI_SSID, WIFI_PASSWORD); // Connect to the specified WiFi router + while (WiFi.status() != WL_CONNECTED) // Loop until the connection is established + { + delay(1000); // wait one second before trying again + Serial.print("."); + } // for-next connection not established + WiFi.setHostname("BME680"); // Give our device a name + // Show connection data + Serial.print("\n- Open browser to IP address \""); + Serial.print(WiFi.localIP()); + Serial.print("\"\n- or to \"http://BME680\" to view data.\n"); + server.on("/", handleRoot); // Routine for root page call + server.on("/readADC", handleADC); // Page called by AJAX + server.begin(); //Start server + Serial.println("HTTP server started"); +} // of method "setup()" + +void handleRoot() +{ + //=============================================================== + // This routine is executed when you open its IP in browser + //=============================================================== + String s = MAIN_page; //Read HTML contents + server.send(200, "text/html", s); //Send web page +} // of method "handleRoot()" + +void handleADC() +{ + server.send(200, "text/plain", jsonData); // Send JSON to client ajax request +} + +void loop() +{ + server.handleClient(); // Handle client requests + if (millis() > next_log_millis) + { + next_log_millis = millis() + SD_LOG_INTERVAL; // set next timer + getSensorData(); // get the BME680 data + } // if-then time to get a measurement +} // of method "loop()" + +void getSensorData() +{ + Serial.print("."); + digitalWrite(LED_PIN, !digitalRead(LED_PIN)); // Toggle LED each loop + BME680.getSensorData(temperature, humidity, pressure, gas); // Get the most recent readings from the BME680 + if (sd_card_present) // Log data to the SD-Card, if present + { + dataFile.print(++loopCounter); + dataFile.print(","); + dataFile.print(millis() / 1000); + dataFile.print(","); + dataFile.print(VOLTAGE); + dataFile.print(","); + dataFile.print(temperature / 100.0, 2); + dataFile.print(","); + dataFile.print(humidity / 1000.0, 2); + dataFile.print(","); + dataFile.println(pressure / 100.0, 2); + if (loopCounter % SD_FLUSH_INTERVAL == 0) + { + dataFile.flush(); + Serial.print("\nFlushed data to SD-Card\n"); + } // flush the buffer + } // if-then SD card is present + jsonData = "{\"SupplyVoltage\":\"" + String(VOLTAGE) + "\", \"Temperature\":\"" + + String(temperature / 100.0) + "\", \"Humidity\":\"" + String(humidity / 1000.0) + + "\", \"Pressure\":\"" + String((start_pressure - pressure) / 100.0) + "\"}"; +} // of method "getSensorData()" diff --git a/examples/ESP32FeatherWiFiDemo/WebPageContents.h b/examples/ESP32FeatherWiFiDemo/WebPageContents.h new file mode 100644 index 0000000..60896e3 --- /dev/null +++ b/examples/ESP32FeatherWiFiDemo/WebPageContents.h @@ -0,0 +1,157 @@ +const char MAIN_page[] PROGMEM = R"=====( + <!doctype html> + <html> + <head> + <title>ESP32 Feather BME680 WiFi Program</title> + <script src = "https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.3/Chart.min.js"></script> + <style> + canvas{ + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + } + #dataTable { + font-family: "Trebuchet MS", Arial, Helvetica, sans-serif; + border-collapse: collapse; + width: 100%; + } + #dataTable td, #dataTable th { + border: 1px solid #ddd; + padding: 8px; + } + #dataTable tr:nth-child(even){background-color: #f2f2f2;} + #dataTable tr:hover {background-color: #ddd;} + #dataTable th { + padding-top: 12px; + padding-bottom: 12px; + text-align: left; + background-color: #4CAF50; + color: white; + } + </style> + </head> + <body> + <div style="text-align:center;"><img src="https://www.sv-zanshin.com/r/images/site/gif/zanshinkanjitiny.gif" alt="Zanshin Logo"> <b>Zanshin</b></div> + <div class="chart-container" position: relative; height:350px; width:100%"> + <canvas id="Chart" width="400" height="400"></canvas> + </div> + <div> + <table id="dataTable"> + <tr><th>Time</th><th>Supply Voltage</th><th>Temperature °C</th><th>Relative Humidity %</th><th>Pressure Pa</th></tr> + </table> + </div> + <br> + <br> + + <script> + //Graphs visit: https://www.chartjs.org + var SupplyVoltage = []; + var Tvalues = []; + var Hvalues = []; + var Pvalues = []; + var timeStamp = []; + function showGraph() + { + var ctx = document.getElementById("Chart").getContext('2d'); + var Chart2 = new Chart(ctx, { + type: 'line', + data: { + labels: timeStamp, + datasets: [{ + label: "SupplyVoltage", + fill: false, + backgroundColor: 'rgba( 243,18, 156 , 1)', + borderColor: 'rgba( 243, 18, 156 , 1)', + data: SupplyVoltage, + },{ + label: "Temperature", + fill: false, + backgroundColor: 'rgba( 243, 156, 18 , 1)', + borderColor: 'rgba( 243, 156, 18 , 1)', + data: Tvalues, + }, + { + label: "Humidity", + fill: false, + backgroundColor: 'rgba(156, 18, 243 , 1)', + borderColor: 'rgba(156, 18, 243 , 1)', + data: Hvalues, + }, + { + label: "Pressure", + fill: false, + backgroundColor: 'rgba(156, 18, 243 , 1)', + borderColor: 'rgba(156, 18, 243 , 1)', + data: Pvalues, + }], + }, + options: { + title: { + display: true, + text: "Real-Time BME680 Data Display" + }, + maintainAspectRatio: false, + elements: { + line: { + tension: 0.5 // Smooth data lines + } + } +// , +// scales: { +// yAxes: [{ +// ticks: { +// beginAtZero:true +// } +// }] +// } + } + }); + } + window.onload = function() { + console.log(new Date().toLocaleTimeString()); + }; + + // Get a new measurement every 5 Seconds + setInterval(function() { + getData(); + }, 5000); // 5000ms update rate + + function getData() { + var xhttp = new XMLHttpRequest(); + xhttp.onreadystatechange = function() { + if (this.readyState == 4 && this.status == 200) { + //Push the data in array + var time = new Date().toLocaleTimeString(); + var txt = this.responseText; + var obj = JSON.parse(txt); //Ref: https://www.w3schools.com/js/js_json_parse.asp + SupplyVoltage.push(obj.SupplyVoltage); + Tvalues.push(obj.Temperature); + Hvalues.push(obj.Humidity); + timeStamp.push(time); + showGraph(); //Update Graphs + var table = document.getElementById("dataTable"); + var row = table.insertRow(1); //Add after headings + var cell1 = row.insertCell(0); + var cell2 = row.insertCell(1); + var cell3 = row.insertCell(2); + var cell4 = row.insertCell(3); + var cell5 = row.insertCell(4); + cell1.innerHTML = time; + cell2.innerHTML = obj.SupplyVoltage; + cell3.innerHTML = obj.Temperature; + cell4.innerHTML = obj.Humidity; + cell5.innerHTML = obj.Pressure; + } + }; + xhttp.open("GET", "readADC", true); + xhttp.send(); + } + </script> + </body> + </html><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> + <html xmlns="http://www.w3.org/1999/xhtml"> + <head> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + <title>Untitled Document</title> + </head><body></body></html> +)====="; \ No newline at end of file diff --git a/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino b/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino index e7d48c7..fbec078 100644 --- a/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino +++ b/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino @@ -163,7 +163,7 @@ void setup() pinMode(LED_PIN, OUTPUT); // Declare the builtin LED to be an output digitalWrite(SD_CARD_SPI_CS_PIN, HIGH); // Write a high value to it in order to deselect device digitalWrite(BME_680_SPI_CS_PIN, HIGH); // Write a high value to it in order to deselect device - digitalWrite(LED_PIN, LOW); // Turn off the LED + digitalWrite(LED_PIN, HIGH); // Turn on the LED Serial.begin(SERIAL_SPEED); // Start serial port at Baud rate #ifdef __AVR_ATmega32U4__ // If this is a 32U4 processor, delay(3000); // then wait 3 seconds to initialize USB port @@ -172,7 +172,11 @@ void setup() while (!BME680.begin(BME_680_SPI_CS_PIN)) // Start BME680 using hardware SPI protocol { Serial.print(F("- Unable to find BME680. Trying again in 5 seconds.\n")); - delay(5000); + for (uint8_t i = 0; i < 50; i++) + { + digitalWrite(LED_PIN, !digitalRead(LED_PIN)); + delay(100); + } // loop to toggle LED light 10 times } // of loop until device is located normalMode(); BME680.getSensorData(data[idx].temperature, data[idx].humidity, data[idx].pressure, unused_gas); @@ -182,7 +186,11 @@ void setup() while (!SD.begin(SD_CARD_SPI_CS_PIN)) // Start card using hardware SPI protocol { Serial.print(F("- Unable to find SD Card. Trying again in 5 seconds.\n")); - delay(5000); + for (uint8_t i = 0; i < 50; i++) + { + digitalWrite(LED_PIN, !digitalRead(LED_PIN)); + delay(100); + } // loop to toggle LED light 10 times } // of loop until device is located Serial.print(F("- SD-Card Initialized\n")); dataFile = SD.open(FILE_NAME, FILE_WRITE); // Open the logfile for writing and position to end-of-file @@ -203,6 +211,7 @@ void setup() data[i].humidity = data[0].humidity; data[i].pressure = data[0].pressure; } // of for-next each array element + digitalWrite(LED_PIN, LOW); // turn off LED } // of method setup() void loop() { @@ -286,6 +295,11 @@ void loop() (uint8_t)(data[idx].pressure % 100)); dataFile.print(buf); - if (idx == 0) dataFile.flush(); // force a SD write every cycle + if (idx == 0) + { + digitalWrite(LED_PIN, HIGH); // turn on LED + dataFile.flush(); // force a SD write every cycle + digitalWrite(LED_PIN, LOW); // turn off LED + } // if-then time to flush buffer to SD-Card delay(delayTime); // Wait appropriate amount of time } // of method loop() \ No newline at end of file From 671f2ddb2313e0aeb484fdbfc38d64217cc37792 Mon Sep 17 00:00:00 2001 From: Arnd <Zanshin_Github@sv-zanshin.com> Date: Sun, 31 May 2020 13:45:22 +0200 Subject: [PATCH 09/49] Created file to ignore this header The header contains sensitive information, so is skipped on commits --- examples/ESP32FeatherWiFiDemo/.gitignore | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 examples/ESP32FeatherWiFiDemo/.gitignore diff --git a/examples/ESP32FeatherWiFiDemo/.gitignore b/examples/ESP32FeatherWiFiDemo/.gitignore new file mode 100644 index 0000000..265fb85 --- /dev/null +++ b/examples/ESP32FeatherWiFiDemo/.gitignore @@ -0,0 +1,10 @@ +######################################################################## +# This file defines which file types are to be ignroed and skipped by # +# git so that they are not transferred and committed. # +# # +# Date Author Comments # +# ========== ============================= =========================== # +# 2020-05-31 https://github.com/SV-Zanshin Ignore for authentication # +# # +######################################################################## +Authentication.h From 1ab28fd2aba116f415d70b677b3c170790359dce Mon Sep 17 00:00:00 2001 From: Arnd <Zanshin_Github@sv-zanshin.com> Date: Sun, 31 May 2020 13:51:04 +0200 Subject: [PATCH 10/49] Added ignore for Authentication.h File can contain sensitive information, don't commit --- .gitignore | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index fb86e28..57ef430 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,10 @@ ######################################################################## -# This file defines which file types are to be ignroed and skipped by # +# This file defines which file types are to be ignored and skipped by # # git so that they are not transferred and committed. # # # # Date Author Comments # # ========== ============================= =========================== # +# 2020-05-31 https://github.com/SV-Zanshin Ignore for Authentication # # 2019-02-02 https://github.com/SV-Zanshin Ignores for Doxygen # # 2018-09-22 https://github.com/SV-Zanshin Ignores for MS VS 2017 # # 2018-06-24 https://github.com/SV-Zanshin Changed file # @@ -94,3 +95,7 @@ Release ######################################################################## html +######################################################################## +# Files that contain sensitive information # +######################################################################## +Authentication.h From f1b5e19789992ff35062ed7d1e1047298789e794 Mon Sep 17 00:00:00 2001 From: Zanshin <Zanshin_Github@SV-Zanshin.com> Date: Sun, 31 May 2020 13:53:18 +0200 Subject: [PATCH 11/49] Corrected Data --- examples/ESP32FeatherWiFiDemo/.gitignore | 10 ---------- examples/ESP32FeatherWiFiDemo/Authentication.h | 5 +++-- 2 files changed, 3 insertions(+), 12 deletions(-) delete mode 100644 examples/ESP32FeatherWiFiDemo/.gitignore diff --git a/examples/ESP32FeatherWiFiDemo/.gitignore b/examples/ESP32FeatherWiFiDemo/.gitignore deleted file mode 100644 index 265fb85..0000000 --- a/examples/ESP32FeatherWiFiDemo/.gitignore +++ /dev/null @@ -1,10 +0,0 @@ -######################################################################## -# This file defines which file types are to be ignroed and skipped by # -# git so that they are not transferred and committed. # -# # -# Date Author Comments # -# ========== ============================= =========================== # -# 2020-05-31 https://github.com/SV-Zanshin Ignore for authentication # -# # -######################################################################## -Authentication.h diff --git a/examples/ESP32FeatherWiFiDemo/Authentication.h b/examples/ESP32FeatherWiFiDemo/Authentication.h index 9f5c9ae..d0a24a8 100644 --- a/examples/ESP32FeatherWiFiDemo/Authentication.h +++ b/examples/ESP32FeatherWiFiDemo/Authentication.h @@ -1,3 +1,4 @@ #pragma once -const char* WIFI_SSID = "YourNetworkNameGoesHere"; ///< Network to connect to -const char* WIFI_PASSWORD = "EnterPasswordHere"; ///< Network authentication code +const char* WIFI_SSID = "Zanshin"; ///< Network to connect to +const char* WIFI_PASSWORD = "TANSTAAFl1!"; ///< Network authentication code + From 9262f9823aa8e060a5c12179d96787a450a69b6b Mon Sep 17 00:00:00 2001 From: Zanshin <Zanshin_Github@SV-Zanshin.com> Date: Sun, 31 May 2020 13:59:42 +0200 Subject: [PATCH 12/49] Update Authentication.h --- examples/ESP32FeatherWiFiDemo/Authentication.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/ESP32FeatherWiFiDemo/Authentication.h b/examples/ESP32FeatherWiFiDemo/Authentication.h index d0a24a8..3e188fd 100644 --- a/examples/ESP32FeatherWiFiDemo/Authentication.h +++ b/examples/ESP32FeatherWiFiDemo/Authentication.h @@ -1,4 +1,4 @@ #pragma once -const char* WIFI_SSID = "Zanshin"; ///< Network to connect to -const char* WIFI_PASSWORD = "TANSTAAFl1!"; ///< Network authentication code +const char* WIFI_SSID = "YourNetworkNameGoesHere"; ///< Network to connect to +const char* WIFI_PASSWORD = "EnterPasswordHere"; ///< Network authentication code From f702a242bfb602c61d33aa150e18e6c67fc12a9e Mon Sep 17 00:00:00 2001 From: Zanshin <Zanshin_Github@SV-Zanshin.com> Date: Mon, 1 Jun 2020 14:04:10 +0200 Subject: [PATCH 13/49] Initial commit of ESP32FeatherWiFiDemo.ino Initial program commit. Functioning prototype, but need to see what Travis CI has to say about it. --- .gitignore | 6 +- .../ESP32FeatherWiFiDemo/Authentication.h | 4 - .../ESP32FeatherWiFiDemo.ino | 198 +++++++++++------- .../ESP32FeatherWiFiDemo/WebPageContents.h | 54 ++--- 4 files changed, 149 insertions(+), 113 deletions(-) delete mode 100644 examples/ESP32FeatherWiFiDemo/Authentication.h diff --git a/.gitignore b/.gitignore index 57ef430..3356502 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ # # # Date Author Comments # # ========== ============================= =========================== # +# 2020-06-01 https://github.com/SV-Zanshin Removed ignore again # # 2020-05-31 https://github.com/SV-Zanshin Ignore for Authentication # # 2019-02-02 https://github.com/SV-Zanshin Ignores for Doxygen # # 2018-09-22 https://github.com/SV-Zanshin Ignores for MS VS 2017 # @@ -94,8 +95,3 @@ Release # Files and directories from Doxygen # ######################################################################## html - -######################################################################## -# Files that contain sensitive information # -######################################################################## -Authentication.h diff --git a/examples/ESP32FeatherWiFiDemo/Authentication.h b/examples/ESP32FeatherWiFiDemo/Authentication.h deleted file mode 100644 index 3e188fd..0000000 --- a/examples/ESP32FeatherWiFiDemo/Authentication.h +++ /dev/null @@ -1,4 +0,0 @@ -#pragma once -const char* WIFI_SSID = "YourNetworkNameGoesHere"; ///< Network to connect to -const char* WIFI_PASSWORD = "EnterPasswordHere"; ///< Network authentication code - diff --git a/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino b/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino index 7ed8e28..581854a 100644 --- a/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino +++ b/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino @@ -69,31 +69,29 @@ Version | Date | Developer | Comments /******************************************************************************************************************* ** Declare all include files required ** *******************************************************************************************************************/ -#include <SPI.h> ///< Include the SPI standard library -#include <SD.h> ///< Include the SD Card standard library -#include <WiFi.h> ///< ESP32 WiFi Library -#include <WiFiClient.h> ///< WiFi Client library -#include <WebServer.h> ///< WiFi Web Server library -#include "WebPageContents.h" ///< Include external HTML and JavaScript definitions -#include "Authentication.h" ///< Contains the network SSID and authentication code -#include "Zanshin_BME680.h" ///< The BME680 sensor library +#include <SPI.h> ///< Include the SPI standard library +#include <SD.h> ///< Include the SD Card standard library +#include <WiFi.h> ///< ESP32 WiFi Library +#include <WiFiClient.h> ///< WiFi Client library +#include <WebServer.h> ///< WiFi Web Server library +#include "WebPageContents.h" ///< Include external HTML and JavaScript definitions +#include "Zanshin_BME680.h" ///< The BME680 sensor library /******************************************************************************************************************* ** Declare all program constants ** *******************************************************************************************************************/ -const uint32_t SERIAL_SPEED = 115200; ///< Set the baud rate for Serial I/O -const uint8_t POWER_PIN = A13; ///< Supply voltage through a divider -const uint8_t LED_PIN = 13; ///< This pin is the on-board red LED -const uint8_t SD_CARD_SPI_CS_PIN = 21; ///< Use Pin 21 (general GPIO) on the ESP32 for chip select -const uint8_t SD_CARD_SPI_CD_PIN = A5; ///< Use Pin A5 (general GPIO) on the ESP32 for carrier detect -const char* FILE_NAME = "/BME_680.csv"; ///< Filename on SD-Card -const uint32_t SD_LOG_INTERVAL = 1000; ///< Milliseconds between measurements to SD-Card -const uint8_t SD_FLUSH_INTERVAL = 60; ///< do a "flush" after this number of writes - -/******************************************************************************************************************* -** Declare all program macros ** -*******************************************************************************************************************/ -#define VOLTAGE (analogRead(POWER_PIN)/4095.0*3.3*2*1.1) ///< Macro for floating point voltage +const char* FILE_NAME = "/BME_680.csv"; ///< Filename on SD-Card +const char* HOSTNAME = "BME680"; ///< Give the device a name +const char* WIFI_SSID = "Zanshin"; ///< Network SSID for connection +const char* WIFI_PASSWORD = "TANSTAAFl1!"; ///< Network authentication code +const uint32_t SERIAL_SPEED = 115200; ///< Set the baud rate for Serial I/O +const uint8_t POWER_PIN = A13; ///< Supply voltage through a divider +const uint8_t LED_PIN = 13; ///< This pin is the on-board red LED +const uint8_t SD_CARD_SPI_CS_PIN = 21; ///< Use Pin 21 (general GPIO) on the ESP32 for chip select +const uint8_t SD_CARD_SPI_CD_PIN = A5; ///< Use Pin A5 (general GPIO) on the ESP32 for carrier detect +const uint32_t SD_LOG_INTERVAL = 1000; ///< Milliseconds between measurements to SD-Card +const uint8_t SD_FLUSH_INTERVAL = 60; ///< do a "flush" after this number of writes +const float SEA_LEVEL_PRESSURE = 1013.25; ///< Standard atmosphere sea level pressure /******************************************************************************************************************* ** Declare all global variables ** *******************************************************************************************************************/ @@ -108,48 +106,63 @@ int32_t start_pressure; ///< Initial pressure readi bool sd_card_present = false; ///< Switch set when SD-Card detected String jsonData; ///< JSON data string uint16_t loopCounter = 0; ///< Counter for number of write operations since startup -uint32_t next_log_millis; ///< Millis() value for next SD-Card measurement + +/******************************************************************************************************************* +** Macro that returns the floating point voltage. The formula is the analog value of POWER_PIN. Since this goes ** +** through a voltage divider the value is multiplied by 2. The register is 12-bit (0-4095) so we divide by 4095 ** +** and then by the 3.3V reference voltage and, finally, by the ADC reference voltage of 1.1V. The formula is: ** +** analogRead(POWER_PIN) / 4095.0 * 3.3v * 2 * 1.1v) ** +*******************************************************************************************************************/ +#define VOLTAGE ( analogRead(POWER_PIN) / 4095.0 * 3.3 * 2 * 1.1) void setup() { - pinMode(SD_CARD_SPI_CS_PIN, OUTPUT); // Declare the Chip-Select pin for the SD Card as output - pinMode(SD_CARD_SPI_CD_PIN, INPUT_PULLUP); // Declare the Carrier detect pin for the SD Card as input - digitalWrite(SD_CARD_SPI_CS_PIN, HIGH); // Write a high value to it in order to deselect device - pinMode(LED_PIN, OUTPUT); // make the LED an output pin - Serial.begin(115200); - Serial.print(F("Starting ESP32FeatherWiFiDemo example program for BME680\n")); + /*! + @brief Arduino method called once at startup to initialize the system + @details This is an Arduino IDE method which is called first upon boot or restart. It is only called one time + and then control goes to the main "loop()" method, from which control never returns. The BME680, then + the SD-Card (if present, if not present then it is ignored), then the Wi-Fi connection are initialized + and configured here. + @return void + */ + pinMode(SD_CARD_SPI_CS_PIN, OUTPUT); // Declare the Chip-Select pin for the SD Card as output + pinMode(SD_CARD_SPI_CD_PIN, INPUT_PULLUP); // Declare the Carrier detect pin for the SD Card as input + digitalWrite(SD_CARD_SPI_CS_PIN, HIGH); // Write a high value to it in order to deselect device + pinMode(LED_PIN, OUTPUT); // make the on-board LED an output pin so we can change it + Serial.begin(SERIAL_SPEED); // Start the Serial port with the specified speed + Serial.print("Starting ESP32FeatherWiFiDemo example program for BME680\n"); /********************** ** Initialize BME680 ** **********************/ - Serial.print(F("- Initializing BME680 sensor\n")); - while (!BME680.begin(I2C_STANDARD_MODE)) // Start BME680 using I2C, use first device found + Serial.print("- Initializing BME680 sensor\n"); + while (!BME680.begin(I2C_STANDARD_MODE)) // Start BME680 using I2C, use first device found { - Serial.print(F("- Unable to find BME680. Trying again in 5 seconds.\n")); + Serial.print("- Unable to find BME680. Trying again in 5 seconds.\n"); delay(5000); } // of loop until device is located - Serial.print(F("- Setting 16x oversampling for all sensors\n")); - BME680.setOversampling(TemperatureSensor, Oversample16); // Use enumerated type values to set value - BME680.setOversampling(HumiditySensor, Oversample16); // Use enumerated type values to set value - BME680.setOversampling(PressureSensor, Oversample16); // Use enumerated type values to set value - Serial.print(F("- Setting IIR filter to a value of 4 samples\n")); + Serial.print("- Setting 16x oversampling for all sensors\n"); + BME680.setOversampling(TemperatureSensor, Oversample16); // Use enumerated type values to set value + BME680.setOversampling(HumiditySensor, Oversample16); // Use enumerated type values to set value + BME680.setOversampling(PressureSensor, Oversample16); // Use enumerated type values to set value + Serial.print("- Setting IIR filter to a value of 4 samples\n"); BME680.setIIRFilter(IIR4); // Use enumerated type values - Serial.print(F("- Turning off gas measurements\n")); - BME680.setGas(0, 0); // Setting either to 0 turns off gas measurement + Serial.print("- Turning off gas measurements\n"); + BME680.setGas(0, 0); // Setting either to 0 turns off gas measurement BME680.getSensorData(temperature, humidity, start_pressure, gas); // Get most recent readings /*************************************************************** ** Initialize SD-Card for logging, if not found then continue ** ***************************************************************/ - Serial.print(F("- Checking to see if SD Card connected\n")); + Serial.print("- Checking to see if SD Card connected\n"); if (!digitalRead(SD_CARD_SPI_CD_PIN)) { - sd_card_present = false; // if pin is high then no card inserted + sd_card_present = false; // if pin is high then no card inserted } else { - uint8_t loopCounter = 10; ///< countdown to 0 to detect car - while (--loopCounter && !SD.begin(SD_CARD_SPI_CS_PIN)) // Try to start card using SPI + uint8_t loopCounter = 10; ///< countdown to 0 to detect car + while (--loopCounter && !SD.begin(SD_CARD_SPI_CS_PIN)) // Try to start card using SPI { - Serial.print(F("- Unable to find SD Card. Trying again in 5 seconds.\n")); + Serial.print("- Unable to find SD Card. Trying again in 5 seconds.\n"); for (uint8_t i = 0; i < 50; i++) { digitalWrite(LED_PIN, !digitalRead(LED_PIN)); @@ -160,83 +173,104 @@ void setup() } // if-then card is inserted if (!sd_card_present) { - Serial.print(F("- No SD-Card detected, continuing\n")); + Serial.print("- No SD-Card detected, continuing\n"); } else { - Serial.print(F("- SD-Card Initialized\n")); + Serial.print("- SD-Card Initialized\n"); dataFile = SD.open(FILE_NAME, FILE_WRITE); // Open the logfile for writing and position to end-of-file if (!dataFile) { - Serial.print(F("Unable to open file \"")); + Serial.print("Unable to open file \""); Serial.print(FILE_NAME); - Serial.print(F("\" on SD-Card. Error. Skipping SD writes.")); + Serial.print("\" on SD-Card. Error. Skipping SD writes."); sd_card_present = false; // turn off card } else { - Serial.print(F("- File \"")); + Serial.print("- File \""); Serial.print(FILE_NAME); - Serial.print(F("\" successfully opened. Appending data.\n")); - dataFile.print("Counter,Seconds,SupplyVoltage,Temperature,Humidity,Pressure\n"); + Serial.print("\" successfully opened. Appending data.\n"); + dataFile.print("Seconds,SupplyVoltage,Temperature,Humidity,Altitude\n"); } // if-then-else the file could be opened } // if-then-else SD-Card located /********************************************** ** Connect to the specified wireless network ** **********************************************/ - Serial.print(F("- Connecting to Wireless network \"")); + Serial.print("- Connecting to Wireless network \""); Serial.print(WIFI_SSID); - Serial.print(F("\".")); + Serial.print("\"."); WiFi.begin(WIFI_SSID, WIFI_PASSWORD); // Connect to the specified WiFi router while (WiFi.status() != WL_CONNECTED) // Loop until the connection is established { delay(1000); // wait one second before trying again Serial.print("."); } // for-next connection not established - WiFi.setHostname("BME680"); // Give our device a name + WiFi.setHostname(HOSTNAME); // Give our device a name // Show connection data Serial.print("\n- Open browser to IP address \""); Serial.print(WiFi.localIP()); Serial.print("\"\n- or to \"http://BME680\" to view data.\n"); - server.on("/", handleRoot); // Routine for root page call - server.on("/readADC", handleADC); // Page called by AJAX - server.begin(); //Start server - Serial.println("HTTP server started"); -} // of method "setup()" + server.on("/", handleRoot); // Routine for root page call + server.on("/readADC", handleADC); // Page called by AJAX + server.begin(); // Start server + Serial.print("HTTP server started\n"); + digitalWrite(LED_PIN, false); // Turn the LED off +} // of method "setup()" void handleRoot() { - //=============================================================== - // This routine is executed when you open its IP in browser - //=============================================================== - String s = MAIN_page; //Read HTML contents - server.send(200, "text/html", s); //Send web page + /*! + @brief Called when a request is sent from a browser client + @details When the ESP32 gets an IP address and that address is entered in a browser then this ISR get called to + handle that request. The response is to send the HTML page which is contained in the variable "MAIN_page" + which is set in the "WebPageContents.h" include file + @return void + */ + String s = MAIN_page; // Read HTML contents into a string + server.send(200, "text/html", s); // Send the string as HTML to the requester } // of method "handleRoot()" - void handleADC() { - server.send(200, "text/plain", jsonData); // Send JSON to client ajax request -} - + /*! + @brief Called when a "readADC"" request is sent from a browser client + @details When the browser client sends a GET request for a "readADC" this ISR is called, which then returns + the current value in the jsonData string, which is continuously updated in the main loop + @return void + */ + server.send(200, "text/plain", jsonData); // Send JSON to client ajax request +} // of method "handleADC()" void loop() { - server.handleClient(); // Handle client requests - if (millis() > next_log_millis) - { - next_log_millis = millis() + SD_LOG_INTERVAL; // set next timer + /*! + @brief Arduino method for the main program loop + @details This is the main program for the Arduino IDE, it is an infinite loop and keeps on repeating. + The timed measurements from the BME680 are handled here, while the actual web page serving and + responses are handled by the 2 ISRs - "handleADC()" and "handleRoot()". + @return void + */ + static uint32_t next_log_millis; ///< Millis() value for next SD-Card measurement time + server.handleClient(); // Handle client requests + if (millis() > next_log_millis) // if time to get another measurement from the BME680 + { // + next_log_millis = millis() + SD_LOG_INTERVAL; // set next time to get a reading getSensorData(); // get the BME680 data } // if-then time to get a measurement } // of method "loop()" - void getSensorData() { - Serial.print("."); - digitalWrite(LED_PIN, !digitalRead(LED_PIN)); // Toggle LED each loop + /*! + @brief Function to read the BME680 data and optionally write it to the SD-Card + @details The BME680 data is read in and if an SD-Card is present the values are written to it. The "jsonData" + string is also put together here so that a client request can immediately send the current data. This + is done because the frequency with which the data is written to the SD-Card is higher than that of the + web page refresh. + @return void + */ BME680.getSensorData(temperature, humidity, pressure, gas); // Get the most recent readings from the BME680 + float altitude = 44330.0 * (1.0 - pow(((float)pressure/100) / SEA_LEVEL_PRESSURE, 0.1903)); if (sd_card_present) // Log data to the SD-Card, if present { - dataFile.print(++loopCounter); - dataFile.print(","); dataFile.print(millis() / 1000); dataFile.print(","); dataFile.print(VOLTAGE); @@ -245,14 +279,18 @@ void getSensorData() dataFile.print(","); dataFile.print(humidity / 1000.0, 2); dataFile.print(","); - dataFile.println(pressure / 100.0, 2); - if (loopCounter % SD_FLUSH_INTERVAL == 0) + dataFile.print(altitude, 2); + dataFile.print("\n"); + + if (++loopCounter % SD_FLUSH_INTERVAL == 0) { + digitalWrite(LED_PIN, !digitalRead(LED_PIN)); // Toggle LED before flushing buffer dataFile.flush(); - Serial.print("\nFlushed data to SD-Card\n"); + digitalWrite(LED_PIN, !digitalRead(LED_PIN)); // Toggle LED after flushing is complete + Serial.print("Flushed data to SD-Card\n"); } // flush the buffer } // if-then SD card is present jsonData = "{\"SupplyVoltage\":\"" + String(VOLTAGE) + "\", \"Temperature\":\"" + String(temperature / 100.0) + "\", \"Humidity\":\"" + String(humidity / 1000.0) + - "\", \"Pressure\":\"" + String((start_pressure - pressure) / 100.0) + "\"}"; + "\", \"Altitude\":\"" + String(altitude) + "\"}"; } // of method "getSensorData()" diff --git a/examples/ESP32FeatherWiFiDemo/WebPageContents.h b/examples/ESP32FeatherWiFiDemo/WebPageContents.h index 60896e3..6629269 100644 --- a/examples/ESP32FeatherWiFiDemo/WebPageContents.h +++ b/examples/ESP32FeatherWiFiDemo/WebPageContents.h @@ -1,8 +1,17 @@ +/*! + This character string "MAIN_page" is loaded into program memory and contains the web page that is served when a + browser calls up the site. It uses the javascript from https://www.chartjs.org to generate a page with a dynamic + chart and lists the data in tabular form underneath as well. + + Since this is used for demonstration purposes it has been kept basic and simple. + +*/ + const char MAIN_page[] PROGMEM = R"=====( <!doctype html> <html> <head> - <title>ESP32 Feather BME680 WiFi Program</title> + <title>ESP32FeatherWiFiDemo - BME680 demononstration program</title> <script src = "https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.3/Chart.min.js"></script> <style> canvas{ @@ -37,7 +46,7 @@ const char MAIN_page[] PROGMEM = R"=====( </div> <div> <table id="dataTable"> - <tr><th>Time</th><th>Supply Voltage</th><th>Temperature °C</th><th>Relative Humidity %</th><th>Pressure Pa</th></tr> + <tr><th>Time</th><th>Supply (V)</th><th>Temperature (°C)</th><th>Relative Humidity (%)</th><th>Altitude (m/10)</th></tr> </table> </div> <br> @@ -58,7 +67,7 @@ const char MAIN_page[] PROGMEM = R"=====( data: { labels: timeStamp, datasets: [{ - label: "SupplyVoltage", + label: "Supply", fill: false, backgroundColor: 'rgba( 243,18, 156 , 1)', borderColor: 'rgba( 243, 18, 156 , 1)', @@ -78,17 +87,17 @@ const char MAIN_page[] PROGMEM = R"=====( data: Hvalues, }, { - label: "Pressure", + label: "Altitude", fill: false, - backgroundColor: 'rgba(156, 18, 243 , 1)', - borderColor: 'rgba(156, 18, 243 , 1)', + backgroundColor: 'rgba(60, 60, 60, 1)', + borderColor: 'rgba(60, 60, 60, 1)', data: Pvalues, }], }, options: { title: { display: true, - text: "Real-Time BME680 Data Display" + text: "Real-Time BME680 Data Display with 10 second auto-refresh" }, maintainAspectRatio: false, elements: { @@ -96,14 +105,14 @@ const char MAIN_page[] PROGMEM = R"=====( tension: 0.5 // Smooth data lines } } -// , -// scales: { -// yAxes: [{ -// ticks: { -// beginAtZero:true -// } -// }] -// } + , + scales: { + yAxes: [{ + ticks: { + beginAtZero:true + } + }] + } } }); } @@ -111,11 +120,7 @@ const char MAIN_page[] PROGMEM = R"=====( console.log(new Date().toLocaleTimeString()); }; - // Get a new measurement every 5 Seconds - setInterval(function() { - getData(); - }, 5000); // 5000ms update rate - + setInterval(function() { getData(); }, 10000); // Get a new measurement every 10 Seconds function getData() { var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { @@ -123,14 +128,15 @@ const char MAIN_page[] PROGMEM = R"=====( //Push the data in array var time = new Date().toLocaleTimeString(); var txt = this.responseText; - var obj = JSON.parse(txt); //Ref: https://www.w3schools.com/js/js_json_parse.asp + var obj = JSON.parse(txt); SupplyVoltage.push(obj.SupplyVoltage); Tvalues.push(obj.Temperature); Hvalues.push(obj.Humidity); + Pvalues.push(obj.Altitude); timeStamp.push(time); - showGraph(); //Update Graphs + showGraph(); var table = document.getElementById("dataTable"); - var row = table.insertRow(1); //Add after headings + var row = table.insertRow(1); var cell1 = row.insertCell(0); var cell2 = row.insertCell(1); var cell3 = row.insertCell(2); @@ -140,7 +146,7 @@ const char MAIN_page[] PROGMEM = R"=====( cell2.innerHTML = obj.SupplyVoltage; cell3.innerHTML = obj.Temperature; cell4.innerHTML = obj.Humidity; - cell5.innerHTML = obj.Pressure; + cell5.innerHTML = obj.Altitude; } }; xhttp.open("GET", "readADC", true); From 9e6fff7468c14eae7d05554fbaa4984553709c56 Mon Sep 17 00:00:00 2001 From: Zanshin <Zanshin_Github@SV-Zanshin.com> Date: Mon, 1 Jun 2020 14:26:21 +0200 Subject: [PATCH 14/49] Corrected SDLoggerSPIDemo.ino for Doxygen warnings --- Doxyfile | 3 ++- examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino | 25 +++++++++++++------- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/Doxyfile b/Doxyfile index 82242d0..7e0c445 100644 --- a/Doxyfile +++ b/Doxyfile @@ -3,6 +3,7 @@ ## ## ## Date Developer Comments ## ## ========== ============================= ======================================================= ## +## 2020-06-01 https://github.com/SV-Zanshin Added "PREDEFINED = DOXYGEN_SHOULD_SKIP_THIS" ## ## 2020-05-23 https://github.com/SV-Zanshin Removed e-mail addresses from file and updated version ## ## 2020-05-21 https://github.com/SV-Zanshin Updated "PROJECT_NUMBER" value to 1.0.5 ## ## 2020-05-17 https://github.com/SV-Zanshin Updated "PROJECT_NUMBER" value to 1.0.4 ## @@ -244,7 +245,7 @@ EXPAND_ONLY_PREDEF = NO SEARCH_INCLUDES = YES INCLUDE_PATH = INCLUDE_FILE_PATTERNS = -PREDEFINED = +PREDEFINED = DOXYGEN_SHOULD_SKIP_THIS EXPAND_AS_DEFINED = SKIP_FUNCTION_MACROS = YES TAGFILES = diff --git a/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino b/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino index fbec078..4d85034 100644 --- a/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino +++ b/examples/SDLoggerSPIDemo/SDLoggerSPIDemo.ino @@ -58,7 +58,8 @@ Written by https://github.com/SV-Zanshin @section SDLoggerSPIDemoversions Changelog Version | Date | Developer | Comments -------- | ---------- | ----------------------------- | ------------------------------------------------- +------- | ---------- | ----------------------------- | ----------------------------------------------------- +1.0.1 | 2020-06-01 | https://github.com/SV-Zanshin | Added Doxygen commenting for redefine of serial class 1.0.0 | 2020-05-27 | https://github.com/SV-Zanshin | Completed and tested 1.0.0b | 2020-05-22 | https://github.com/SV-Zanshin | Cloned from original SPIDemo program and modified */ @@ -66,16 +67,24 @@ Version | Date | Developer | Comments #include <SPI.h> // Include the SPI standard library (also included in the BME680 library) #include <SD.h> // Include the SD Card standard library -//#define SERIAL_ATTACHED // When commented out then no output is done to the serial port +#define SERIAL_ATTACHED // When commented out then no output is done to the serial port + #ifndef SERIAL_ATTACHED -// disable Serial output -#define Serial SomeOtherwiseUnusedName -static class { +#ifndef DOXYGEN_SHOULD_SKIP_THIS +// override Serial output +#define Serial DummySerial +static class +{ + /*! + @class Serial + @Brief Redefine a dummy Serial class when no serial port is attached + */ public: - void begin(...) {} - void print(...) {} - void println(...) {} + void begin(...) {} ///< Redefine a dummy begin + void print(...) {} ///< Redefine a dummy print + void println(...) {} ///< Redefine a dummy println } Serial; +#endif // of skipped Doxygen code #endif /******************************************************************************************************************* From a10857b9bce07bf1d471a33ed564ded4675f27a0 Mon Sep 17 00:00:00 2001 From: Zanshin <Zanshin_Github@SV-Zanshin.com> Date: Mon, 1 Jun 2020 14:40:26 +0200 Subject: [PATCH 15/49] Updated contents --- Doxyfile | 3 ++- examples/ESP32FeatherWiFiDemo/WebPageContents.h | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Doxyfile b/Doxyfile index 7e0c445..84cffc0 100644 --- a/Doxyfile +++ b/Doxyfile @@ -3,6 +3,7 @@ ## ## ## Date Developer Comments ## ## ========== ============================= ======================================================= ## +## 2020-06-01 https://github.com/SV-Zanshin Updated version to 1.0.7 ## ## 2020-06-01 https://github.com/SV-Zanshin Added "PREDEFINED = DOXYGEN_SHOULD_SKIP_THIS" ## ## 2020-05-23 https://github.com/SV-Zanshin Removed e-mail addresses from file and updated version ## ## 2020-05-21 https://github.com/SV-Zanshin Updated "PROJECT_NUMBER" value to 1.0.5 ## @@ -12,7 +13,7 @@ ###################################################################################################### DOXYFILE_ENCODING = UTF-8 PROJECT_NAME = BME680 -PROJECT_NUMBER = "Version 1.0.6" +PROJECT_NUMBER = "Version 1.0.7" PROJECT_BRIEF = "Arduino Library for the Bosch BME680 Temperature, Humidity, Pressure and Gas sensor" PROJECT_LOGO = OUTPUT_DIRECTORY = diff --git a/examples/ESP32FeatherWiFiDemo/WebPageContents.h b/examples/ESP32FeatherWiFiDemo/WebPageContents.h index 6629269..aee1987 100644 --- a/examples/ESP32FeatherWiFiDemo/WebPageContents.h +++ b/examples/ESP32FeatherWiFiDemo/WebPageContents.h @@ -46,7 +46,7 @@ const char MAIN_page[] PROGMEM = R"=====( </div> <div> <table id="dataTable"> - <tr><th>Time</th><th>Supply (V)</th><th>Temperature (°C)</th><th>Relative Humidity (%)</th><th>Altitude (m/10)</th></tr> + <tr><th>Time</th><th>Supply (V)</th><th>Temperature (°C)</th><th>Relative Humidity (%)</th><th>Altitude (m)</th></tr> </table> </div> <br> From fa98e569c44ee1f1054ec8895d83ef179e065509 Mon Sep 17 00:00:00 2001 From: Zanshin <Zanshin_Github@SV-Zanshin.com> Date: Tue, 2 Jun 2020 07:14:12 +0200 Subject: [PATCH 16/49] Update ESP32FeatherWiFiDemo.ino Initial commit for v1.0.7 --- .../ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino b/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino index 581854a..a12c798 100644 --- a/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino +++ b/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino @@ -59,6 +59,7 @@ Written by Arnd\@SV-Zanshin Version | Date | Developer | Comments ------- | ---------- | ----------------------------- | ------------------------------------------- +1.0.0 | 2020-06-02 | https://github.com/SV-Zanshin | Ready to commit and publish 1.0.0b | 2020-05-30 | https://github.com/SV-Zanshin | Initial coding */ @@ -80,10 +81,16 @@ Version | Date | Developer | Comments /******************************************************************************************************************* ** Declare all program constants ** *******************************************************************************************************************/ + + /************************************************************************* + ** Please change the "WIFI_SSID", "WIFI_PASSWORD", "SD_CARD_SPI_CS_PIN" ** + ** and "SD_CARD_SPI_CD_PIN" constants to match your installation ** + *************************************************************************/ + const char* FILE_NAME = "/BME_680.csv"; ///< Filename on SD-Card const char* HOSTNAME = "BME680"; ///< Give the device a name -const char* WIFI_SSID = "Zanshin"; ///< Network SSID for connection -const char* WIFI_PASSWORD = "TANSTAAFl1!"; ///< Network authentication code +const char* WIFI_SSID = "NetworkSSID"; ///< Network SSID for connection +const char* WIFI_PASSWORD = "Password"; ///< Network authentication code const uint32_t SERIAL_SPEED = 115200; ///< Set the baud rate for Serial I/O const uint8_t POWER_PIN = A13; ///< Supply voltage through a divider const uint8_t LED_PIN = 13; ///< This pin is the on-board red LED From ab6203636aeb531418fdb0a741615cc08f7a3da6 Mon Sep 17 00:00:00 2001 From: Zanshin <Zanshin_Github@SV-Zanshin.com> Date: Tue, 2 Jun 2020 13:42:04 +0200 Subject: [PATCH 17/49] Added Wiki and Doxygen badges to images --- Images/Documentation-wiki.svg | 1 + Images/Doxygen-complete-brightgreen.svg | 1 + Images/README.md | 2 ++ 3 files changed, 4 insertions(+) create mode 100644 Images/Documentation-wiki.svg create mode 100644 Images/Doxygen-complete-brightgreen.svg diff --git a/Images/Documentation-wiki.svg b/Images/Documentation-wiki.svg new file mode 100644 index 0000000..b8617bb --- /dev/null +++ b/Images/Documentation-wiki.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="162" height="20"><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="162" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="93" height="20" fill="#555"/><rect x="93" width="69" height="20" fill="#4c1"/><rect width="162" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text x="475" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="830">Documentation</text><text x="475" y="140" transform="scale(.1)" textLength="830">Documentation</text><text x="1265" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="590">wiki pages</text><text x="1265" y="140" transform="scale(.1)" textLength="590">wiki pages</text></g></svg> \ No newline at end of file diff --git a/Images/Doxygen-complete-brightgreen.svg b/Images/Doxygen-complete-brightgreen.svg new file mode 100644 index 0000000..b3afa67 --- /dev/null +++ b/Images/Doxygen-complete-brightgreen.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="120" height="20"><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="120" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="59" height="20" fill="#555"/><rect x="59" width="61" height="20" fill="#4c1"/><rect width="120" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text x="305" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="490">Doxygen</text><text x="305" y="140" transform="scale(.1)" textLength="490">Doxygen</text><text x="885" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="510">complete</text><text x="885" y="140" transform="scale(.1)" textLength="510">complete</text></g></svg> \ No newline at end of file diff --git a/Images/README.md b/Images/README.md index 43bd8af..5ca5ec2 100644 --- a/Images/README.md +++ b/Images/README.md @@ -10,6 +10,8 @@ The [Fritzing](https://fritzing.org/home/) sources are also included in the dire | Mega_SW_SPI_BME280_bb.png | <img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/Mega_SW_SPI_BME280_bb.png" width="50%"/> | | Micro_BME280_bb.png |<img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/Micro_BME280_bb.png" width="50%"/> | | TwoBME680.jpg | <img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/TwoBME680.jpg" width="50%"/> | +| Doxygen-complete.svg | <img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/Doxygen-complete.svg" width="50%"/> | +| Documentation-wiki.svg | <img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/Documentation-wiki.svg" width="50%"/> |  <img src="https://www.sv-zanshin.com/r/images/site/gif/zanshintext.gif" width="75"/> From d3676a70d05f722f493a7975795f9131298ff969 Mon Sep 17 00:00:00 2001 From: Zanshin <Zanshin_Github@SV-Zanshin.com> Date: Tue, 2 Jun 2020 13:49:17 +0200 Subject: [PATCH 18/49] New badges uploaded --- ...{Doxygen-complete-brightgreen.svg => Doxygen-complete.svg} | 0 Images/README.md | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) rename Images/{Doxygen-complete-brightgreen.svg => Doxygen-complete.svg} (100%) diff --git a/Images/Doxygen-complete-brightgreen.svg b/Images/Doxygen-complete.svg similarity index 100% rename from Images/Doxygen-complete-brightgreen.svg rename to Images/Doxygen-complete.svg diff --git a/Images/README.md b/Images/README.md index 5ca5ec2..92fc109 100644 --- a/Images/README.md +++ b/Images/README.md @@ -10,8 +10,8 @@ The [Fritzing](https://fritzing.org/home/) sources are also included in the dire | Mega_SW_SPI_BME280_bb.png | <img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/Mega_SW_SPI_BME280_bb.png" width="50%"/> | | Micro_BME280_bb.png |<img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/Micro_BME280_bb.png" width="50%"/> | | TwoBME680.jpg | <img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/TwoBME680.jpg" width="50%"/> | -| Doxygen-complete.svg | <img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/Doxygen-complete.svg" width="50%"/> | -| Documentation-wiki.svg | <img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/Documentation-wiki.svg" width="50%"/> | +| Doxygen-complete.svg | [] | +| Documentation-wiki.svg | [] |  <img src="https://www.sv-zanshin.com/r/images/site/gif/zanshintext.gif" width="75"/> From fe7d40e585356922596d5bcafb46d2f1029e73ad Mon Sep 17 00:00:00 2001 From: Arnd <Zanshin_Github@sv-zanshin.com> Date: Tue, 2 Jun 2020 13:51:15 +0200 Subject: [PATCH 19/49] Update README.md --- Images/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Images/README.md b/Images/README.md index 92fc109..a5f6cd6 100644 --- a/Images/README.md +++ b/Images/README.md @@ -10,8 +10,8 @@ The [Fritzing](https://fritzing.org/home/) sources are also included in the dire | Mega_SW_SPI_BME280_bb.png | <img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/Mega_SW_SPI_BME280_bb.png" width="50%"/> | | Micro_BME280_bb.png |<img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/Micro_BME280_bb.png" width="50%"/> | | TwoBME680.jpg | <img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/TwoBME680.jpg" width="50%"/> | -| Doxygen-complete.svg | [] | -| Documentation-wiki.svg | [] | +| Doxygen-complete.svg | [] | +| Documentation-wiki.svg | [] |  <img src="https://www.sv-zanshin.com/r/images/site/gif/zanshintext.gif" width="75"/> From bfb306e81faa0655605a0b1b655a15ddd1bbc515 Mon Sep 17 00:00:00 2001 From: Zanshin <Zanshin_Github@SV-Zanshin.com> Date: Tue, 2 Jun 2020 13:53:11 +0200 Subject: [PATCH 20/49] Update README.md --- Images/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Images/README.md b/Images/README.md index 92fc109..5ca5ec2 100644 --- a/Images/README.md +++ b/Images/README.md @@ -10,8 +10,8 @@ The [Fritzing](https://fritzing.org/home/) sources are also included in the dire | Mega_SW_SPI_BME280_bb.png | <img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/Mega_SW_SPI_BME280_bb.png" width="50%"/> | | Micro_BME280_bb.png |<img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/Micro_BME280_bb.png" width="50%"/> | | TwoBME680.jpg | <img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/TwoBME680.jpg" width="50%"/> | -| Doxygen-complete.svg | [] | -| Documentation-wiki.svg | [] | +| Doxygen-complete.svg | <img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/Doxygen-complete.svg" width="50%"/> | +| Documentation-wiki.svg | <img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/Documentation-wiki.svg" width="50%"/> |  <img src="https://www.sv-zanshin.com/r/images/site/gif/zanshintext.gif" width="75"/> From 9f6231cdbc49ff4bba6bfcebd1082fb839313e38 Mon Sep 17 00:00:00 2001 From: Arnd <Zanshin_Github@sv-zanshin.com> Date: Tue, 2 Jun 2020 13:59:28 +0200 Subject: [PATCH 21/49] Added link to Doxygen badge --- .github/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/README.md b/.github/README.md index 7e31a66..aaa8969 100644 --- a/.github/README.md +++ b/.github/README.md @@ -1,4 +1,4 @@ -# BME680 library<br>[](https://travis-ci.org/SV-Zanshin/BME680) [](https://www.ardu-badge.com/BME680) [](https://zenodo.org/badge/latestdoi/139349456) +# BME680 library<br>[](https://travis-ci.org/SV-Zanshin/BME680) [](https://www.ardu-badge.com/BME680) [](https://zenodo.org/badge/latestdoi/139349456) [](https://sv-zanshin.github.io/BME680/html/index.html) *Arduino* library for using the [Bosch BME680](https://www.bosch-sensortec.com/bst/products/all_products/bme680) sensor which senses temperature, humidity and pressure. The BME680 is a tiny package and no hobbyist is going to be breadboarding this sensor directly, so one will be part of a breakout board. Here are some breakout board examples: | Supplier | Image | Instructions | Comments | From 326d87182bd6c89ecff3d4fe04ea824cbeaf9d67 Mon Sep 17 00:00:00 2001 From: Arnd <Zanshin_Github@sv-zanshin.com> Date: Tue, 2 Jun 2020 14:04:43 +0200 Subject: [PATCH 22/49] Added Badges Added Doxygen and Wiki badges --- .github/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/README.md b/.github/README.md index aaa8969..b83b71f 100644 --- a/.github/README.md +++ b/.github/README.md @@ -1,4 +1,4 @@ -# BME680 library<br>[](https://travis-ci.org/SV-Zanshin/BME680) [](https://www.ardu-badge.com/BME680) [](https://zenodo.org/badge/latestdoi/139349456) [](https://sv-zanshin.github.io/BME680/html/index.html) +# BME680 library<br>[](https://travis-ci.org/SV-Zanshin/BME680) [](https://www.ardu-badge.com/BME680) [](https://zenodo.org/badge/latestdoi/139349456) [](https://sv-zanshin.github.io/BME680/html/index.html) [](https://github.com/SV-Zanshin/BME680/wiki) *Arduino* library for using the [Bosch BME680](https://www.bosch-sensortec.com/bst/products/all_products/bme680) sensor which senses temperature, humidity and pressure. The BME680 is a tiny package and no hobbyist is going to be breadboarding this sensor directly, so one will be part of a breakout board. Here are some breakout board examples: | Supplier | Image | Instructions | Comments | From a47d797cfdc3761c700b694474c81aa12c225b67 Mon Sep 17 00:00:00 2001 From: Arnd <Zanshin_Github@sv-zanshin.com> Date: Tue, 2 Jun 2020 14:17:31 +0200 Subject: [PATCH 23/49] Added ESP32FeatherWiFiDemo.ino --- examples/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/examples/README.md b/examples/README.md index 410061e..40ca17b 100644 --- a/examples/README.md +++ b/examples/README.md @@ -9,5 +9,6 @@ Various example programs illustrating the use of the *Arduino* BME680 library ar | software SPI Demo | [SoftSPIDemo.ino](https://github.com/SV-Zanshin/BME680/wiki/SoftSPIDemo.ino) | Identical to the I2C Demo program, but using SPI connectivity emulated in software | | Two I2C BME680s | [TwoDevicesI2CDemo.ino](https://github.com/SV-Zanshin/BME680/wiki/TwoDevicesI2CDemo.ino) | Example to illustrate attaching 2 BME680 devices with different addresses using I2C | | SD-Card Logging | [SDLoggerSPIDemo.ino](https://github.com/SV-Zanshin/BME680/wiki/SDLoggerSPIDemo.ino) | Example sketch using SPI for the BME680 and a SD-Card to log data at variable rates - faster logging when the measurements change rapidly and less frequent measurements when there is little change. | +| ESP32 WiFi demo | [ESP32FeatherWiFiDemo.ino](https://github.com/SV-Zanshin/BME680/wiki/ESP32FeatherWiFiDemo.ino) | Example sketch using I2C for the BME680 (and an optional SD-Card to log data) to connect to WiFi and dynamically display measurement data on a web page. |  <img src="https://www.sv-zanshin.com/r/images/site/gif/zanshintext.gif" width="75"/> From 7b638788ace4c717bf54705386959b4300690d8a Mon Sep 17 00:00:00 2001 From: Zanshin <Zanshin_Github@SV-Zanshin.com> Date: Tue, 2 Jun 2020 14:34:50 +0200 Subject: [PATCH 24/49] Updated comments --- examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino | 6 +++--- examples/ESP32FeatherWiFiDemo/WebPageContents.h | 6 +++++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino b/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino index a12c798..141831f 100644 --- a/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino +++ b/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino @@ -59,7 +59,7 @@ Written by Arnd\@SV-Zanshin Version | Date | Developer | Comments ------- | ---------- | ----------------------------- | ------------------------------------------- -1.0.0 | 2020-06-02 | https://github.com/SV-Zanshin | Ready to commit and publish +1.0.0 | 2020-06-02 | https://github.com/SV-Zanshin | Ready to commit and publish as Issue #20 1.0.0b | 2020-05-30 | https://github.com/SV-Zanshin | Initial coding */ @@ -291,9 +291,9 @@ void getSensorData() if (++loopCounter % SD_FLUSH_INTERVAL == 0) { - digitalWrite(LED_PIN, !digitalRead(LED_PIN)); // Toggle LED before flushing buffer + digitalWrite(LED_PIN, !digitalRead(LED_PIN)); // Toggle LED before flushing buffer dataFile.flush(); - digitalWrite(LED_PIN, !digitalRead(LED_PIN)); // Toggle LED after flushing is complete + digitalWrite(LED_PIN, !digitalRead(LED_PIN)); // Toggle LED after flushing is complete Serial.print("Flushed data to SD-Card\n"); } // flush the buffer } // if-then SD card is present diff --git a/examples/ESP32FeatherWiFiDemo/WebPageContents.h b/examples/ESP32FeatherWiFiDemo/WebPageContents.h index aee1987..aad4a4a 100644 --- a/examples/ESP32FeatherWiFiDemo/WebPageContents.h +++ b/examples/ESP32FeatherWiFiDemo/WebPageContents.h @@ -5,13 +5,17 @@ Since this is used for demonstration purposes it has been kept basic and simple. + Version | Date | Developer | Comments + ------- | ---------- | ----------------------------- | ------------------------------------------- + 1.0.0 | 2020-06-02 | https://github.com/SV-Zanshin | Ready to commit and publish as Issue #20 + */ const char MAIN_page[] PROGMEM = R"=====( <!doctype html> <html> <head> - <title>ESP32FeatherWiFiDemo - BME680 demononstration program</title> + <title>ESP32FeatherWiFiDemo - BME680 demonstration program</title> <script src = "https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.3/Chart.min.js"></script> <style> canvas{ From ad0005c15dc2f4897ec30434b055e58d43ad0a85 Mon Sep 17 00:00:00 2001 From: Zanshin <Zanshin_Github@SV-Zanshin.com> Date: Tue, 2 Jun 2020 14:41:21 +0200 Subject: [PATCH 25/49] Issue #20 --- .../ESP32FeatherWiFiDemo.ino | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino b/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino index 141831f..99088ba 100644 --- a/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino +++ b/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino @@ -132,29 +132,29 @@ void setup() and configured here. @return void */ - pinMode(SD_CARD_SPI_CS_PIN, OUTPUT); // Declare the Chip-Select pin for the SD Card as output - pinMode(SD_CARD_SPI_CD_PIN, INPUT_PULLUP); // Declare the Carrier detect pin for the SD Card as input - digitalWrite(SD_CARD_SPI_CS_PIN, HIGH); // Write a high value to it in order to deselect device - pinMode(LED_PIN, OUTPUT); // make the on-board LED an output pin so we can change it - Serial.begin(SERIAL_SPEED); // Start the Serial port with the specified speed - Serial.print("Starting ESP32FeatherWiFiDemo example program for BME680\n"); + pinMode(SD_CARD_SPI_CS_PIN, OUTPUT); // Chip-Select pin for the SD Card as output + pinMode(SD_CARD_SPI_CD_PIN, INPUT_PULLUP); // Carrier detect pin for the SD Card as input + digitalWrite(SD_CARD_SPI_CS_PIN, HIGH); // Deselect device by writing HIGH to it + pinMode(LED_PIN, OUTPUT); // Make the on-board LED an output pin + Serial.begin(SERIAL_SPEED); // Start the Serial comms at specified speed /********************** ** Initialize BME680 ** **********************/ + Serial.print("Starting ESP32FeatherWiFiDemo for BME680\n"); Serial.print("- Initializing BME680 sensor\n"); - while (!BME680.begin(I2C_STANDARD_MODE)) // Start BME680 using I2C, use first device found + while (!BME680.begin(I2C_STANDARD_MODE)) // Start using I2C, use first device found { Serial.print("- Unable to find BME680. Trying again in 5 seconds.\n"); delay(5000); } // of loop until device is located Serial.print("- Setting 16x oversampling for all sensors\n"); - BME680.setOversampling(TemperatureSensor, Oversample16); // Use enumerated type values to set value - BME680.setOversampling(HumiditySensor, Oversample16); // Use enumerated type values to set value - BME680.setOversampling(PressureSensor, Oversample16); // Use enumerated type values to set value Serial.print("- Setting IIR filter to a value of 4 samples\n"); - BME680.setIIRFilter(IIR4); // Use enumerated type values Serial.print("- Turning off gas measurements\n"); - BME680.setGas(0, 0); // Setting either to 0 turns off gas measurement + BME680.setOversampling(TemperatureSensor, Oversample16); // Use enumerated type values to set value + BME680.setOversampling(HumiditySensor, Oversample16); // Use enumerated type values to set value + BME680.setOversampling(PressureSensor, Oversample16); // Use enumerated type values to set value + BME680.setIIRFilter(IIR4); // Use enumerated type values to set value + BME680.setGas(0, 0); // Setting either to 0 turns off gas BME680.getSensorData(temperature, humidity, start_pressure, gas); // Get most recent readings /*************************************************************** ** Initialize SD-Card for logging, if not found then continue ** From e89b4e82e034f29e541154243b44884a4c97ecb2 Mon Sep 17 00:00:00 2001 From: Arnd <Zanshin_Github@sv-zanshin.com> Date: Tue, 2 Jun 2020 17:40:36 +0200 Subject: [PATCH 26/49] Updated description of ESP32 demo program --- examples/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/README.md b/examples/README.md index 40ca17b..e9dc018 100644 --- a/examples/README.md +++ b/examples/README.md @@ -9,6 +9,6 @@ Various example programs illustrating the use of the *Arduino* BME680 library ar | software SPI Demo | [SoftSPIDemo.ino](https://github.com/SV-Zanshin/BME680/wiki/SoftSPIDemo.ino) | Identical to the I2C Demo program, but using SPI connectivity emulated in software | | Two I2C BME680s | [TwoDevicesI2CDemo.ino](https://github.com/SV-Zanshin/BME680/wiki/TwoDevicesI2CDemo.ino) | Example to illustrate attaching 2 BME680 devices with different addresses using I2C | | SD-Card Logging | [SDLoggerSPIDemo.ino](https://github.com/SV-Zanshin/BME680/wiki/SDLoggerSPIDemo.ino) | Example sketch using SPI for the BME680 and a SD-Card to log data at variable rates - faster logging when the measurements change rapidly and less frequent measurements when there is little change. | -| ESP32 WiFi demo | [ESP32FeatherWiFiDemo.ino](https://github.com/SV-Zanshin/BME680/wiki/ESP32FeatherWiFiDemo.ino) | Example sketch using I2C for the BME680 (and an optional SD-Card to log data) to connect to WiFi and dynamically display measurement data on a web page. | +| ESP32 WiFi demo | [ESP32FeatherWiFiDemo.ino](https://github.com/SV-Zanshin/BME680/wiki/ESP32FeatherWiFiDemo.ino) | Example sketch using I2C for the BME680 (and an optional SD-Card on SPI to log data) to connect to WiFi and dynamically display measurement data on a web page. |  <img src="https://www.sv-zanshin.com/r/images/site/gif/zanshintext.gif" width="75"/> From a3371c1bd6f95ffbfb30fc0b619cc1e87b73ee52 Mon Sep 17 00:00:00 2001 From: Zanshin <Zanshin_Github@SV-Zanshin.com> Date: Tue, 2 Jun 2020 18:02:18 +0200 Subject: [PATCH 27/49] Update ESP32FeatherWiFiDemo.ino Corrected measurements when no SD card present --- examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino b/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino index 99088ba..eef8bb7 100644 --- a/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino +++ b/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino @@ -223,7 +223,6 @@ void setup() server.begin(); // Start server Serial.print("HTTP server started\n"); digitalWrite(LED_PIN, false); // Turn the LED off - } // of method "setup()" void handleRoot() { @@ -245,6 +244,10 @@ void handleADC() the current value in the jsonData string, which is continuously updated in the main loop @return void */ + if (!sd_card_present) // If no SD-Card is present then we need to get data, + { // if there is an SD-Card then the data has already been fetched + getSensorData(); // get the BME680 data + } // if-then SD-Card not present server.send(200, "text/plain", jsonData); // Send JSON to client ajax request } // of method "handleADC()" void loop() From 7f753a806931110377c964f02cad64881fbd50c2 Mon Sep 17 00:00:00 2001 From: Zanshin <Zanshin_Github@SV-Zanshin.com> Date: Tue, 2 Jun 2020 19:52:56 +0200 Subject: [PATCH 28/49] Issue #20 minor fixes --- .../ESP32FeatherWiFiDemo.ino | 31 +++++++++---------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino b/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino index eef8bb7..101095b 100644 --- a/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino +++ b/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino @@ -102,17 +102,17 @@ const float SEA_LEVEL_PRESSURE = 1013.25; ///< Standard atmosphere sea /******************************************************************************************************************* ** Declare all global variables ** *******************************************************************************************************************/ -WebServer server(80); ///< Instantiate a web server on port 80 -BME680_Class BME680; ///< Create an instance of the BME680 class -File dataFile; ///< Class for a SD-Card file -int32_t temperature; ///< BME680 temperature value -int32_t humidity; ///< BME680 humidity value -int32_t pressure; ///< BME680 pressure value -int32_t gas; ///< BME680 gas resistance value -int32_t start_pressure; ///< Initial pressure reading -bool sd_card_present = false; ///< Switch set when SD-Card detected -String jsonData; ///< JSON data string -uint16_t loopCounter = 0; ///< Counter for number of write operations since startup +WebServer server(80); ///< Instantiate a web server on port 80 +BME680_Class BME680; ///< Create an instance of the BME680 class +File dataFile; ///< Class for a SD-Card file +int32_t temperature; ///< BME680 temperature value +int32_t humidity; ///< BME680 humidity value +int32_t pressure; ///< BME680 pressure value +int32_t gas; ///< BME680 gas resistance value +int32_t start_pressure; ///< Initial pressure reading +bool sd_card_present = false; ///< Switch set when SD-Card detected +String jsonData; ///< JSON data string +uint16_t loopCounter = 0; ///< Counter for number of write operations since startup /******************************************************************************************************************* ** Macro that returns the floating point voltage. The formula is the analog value of POWER_PIN. Since this goes ** @@ -281,7 +281,7 @@ void getSensorData() float altitude = 44330.0 * (1.0 - pow(((float)pressure/100) / SEA_LEVEL_PRESSURE, 0.1903)); if (sd_card_present) // Log data to the SD-Card, if present { - dataFile.print(millis() / 1000); + dataFile.print(millis() / 1000); dataFile.print(","); dataFile.print(VOLTAGE); dataFile.print(","); @@ -291,11 +291,10 @@ void getSensorData() dataFile.print(","); dataFile.print(altitude, 2); dataFile.print("\n"); - - if (++loopCounter % SD_FLUSH_INTERVAL == 0) - { + if (++loopCounter % SD_FLUSH_INTERVAL == 0) // Flush every N-Iterations + { // digitalWrite(LED_PIN, !digitalRead(LED_PIN)); // Toggle LED before flushing buffer - dataFile.flush(); + dataFile.flush(); // flush pending writes to SD digitalWrite(LED_PIN, !digitalRead(LED_PIN)); // Toggle LED after flushing is complete Serial.print("Flushed data to SD-Card\n"); } // flush the buffer From ab980f9292b1580db1cb6777125a6cd0205de5c4 Mon Sep 17 00:00:00 2001 From: Arnd <Zanshin_Github@sv-zanshin.com> Date: Thu, 4 Jun 2020 11:42:41 +0200 Subject: [PATCH 29/49] Corrected path to new images --- Images/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Images/README.md b/Images/README.md index 676e4b2..d5a5570 100644 --- a/Images/README.md +++ b/Images/README.md @@ -10,8 +10,8 @@ The [Fritzing](https://fritzing.org/home/) sources are also included in the dire | Mega_SW_SPI_BME280_bb.png | <img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/Mega_SW_SPI_BME280_bb.png" width="50%"/> | | Micro_BME280_bb.png |<img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/Micro_BME280_bb.png" width="50%"/> | | TwoBME680.jpg | <img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/TwoBME680.jpg" width="50%"/> | -| Doxygen-complete.svg | [] | -| Documentation-wiki.svg | [] | +| Doxygen-complete.svg | [] | +| Documentation-wiki.svg | [] |  <img src="https://www.sv-zanshin.com/r/images/site/gif/zanshintext.gif" width="75"/> From 0e1bd465bf7935ba7b7a362a3a95ebd532d55ba6 Mon Sep 17 00:00:00 2001 From: Zanshin <Zanshin_Github@SV-Zanshin.com> Date: Thu, 4 Jun 2020 16:43:25 +0200 Subject: [PATCH 30/49] Update ESP32FeatherWiFiDemo.ino --- examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino b/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino index 101095b..a628425 100644 --- a/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino +++ b/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino @@ -12,7 +12,7 @@ the local WiFi network to use and the corresponding authentication code. Once started, the IP-Address is set by the WiFi router and displayed on the serial output of the ESP32, this IP address should then be entered as the URL in a web browser of a computer attached to the same network and the -data should be presented there, updated every 5 seconds. +data should be presented there, updated every 10 seconds. The Bosch BME680 sensor measures temperature, pressure, humidity and air quality and is described at https://www.bosch-sensortec.com/bst/products/all_products/BME680. The datasheet is available from Bosch at @@ -53,7 +53,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. @section ESP32FeatherWiFiDemoauthor Author -Written by Arnd\@SV-Zanshin +Written by https://github.com/SV-Zanshin @section ESP32FeatherWiFiDemoversions Changelog From 9d39d3bd9ae8456aa28fa53e178365a9cc417855 Mon Sep 17 00:00:00 2001 From: Zanshin <Zanshin_Github@SV-Zanshin.com> Date: Fri, 5 Jun 2020 07:26:14 +0200 Subject: [PATCH 31/49] Added logo image --- .github/README.md | 1 + Images/README.md | 1 + Images/bosch-bme680.jpg | Bin 0 -> 14578 bytes 3 files changed, 2 insertions(+) create mode 100644 Images/bosch-bme680.jpg diff --git a/.github/README.md b/.github/README.md index b83b71f..4053221 100644 --- a/.github/README.md +++ b/.github/README.md @@ -1,3 +1,4 @@ +<img src="../images/bosch-bme680.jpg" alt="INA" align="right" height="40px"> # BME680 library<br>[](https://travis-ci.org/SV-Zanshin/BME680) [](https://www.ardu-badge.com/BME680) [](https://zenodo.org/badge/latestdoi/139349456) [](https://sv-zanshin.github.io/BME680/html/index.html) [](https://github.com/SV-Zanshin/BME680/wiki) *Arduino* library for using the [Bosch BME680](https://www.bosch-sensortec.com/bst/products/all_products/bme680) sensor which senses temperature, humidity and pressure. The BME680 is a tiny package and no hobbyist is going to be breadboarding this sensor directly, so one will be part of a breakout board. Here are some breakout board examples: diff --git a/Images/README.md b/Images/README.md index d5a5570..c500ba1 100644 --- a/Images/README.md +++ b/Images/README.md @@ -12,6 +12,7 @@ The [Fritzing](https://fritzing.org/home/) sources are also included in the dire | TwoBME680.jpg | <img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/TwoBME680.jpg" width="50%"/> | | Doxygen-complete.svg | [] | | Documentation-wiki.svg | [] | +| bosch-bme680.jpg | [] |  <img src="https://www.sv-zanshin.com/r/images/site/gif/zanshintext.gif" width="75"/> diff --git a/Images/bosch-bme680.jpg b/Images/bosch-bme680.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9609ec631539d296455cde8ec69991dc8196e409 GIT binary patch literal 14578 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 X57Xd_dAB!W^^a5h-{g*cv-|%5m&WbG literal 0 HcmV?d00001 From 8140eb5e52a85e7cc31c73b9394f904484e798c5 Mon Sep 17 00:00:00 2001 From: Arnd <Zanshin_Github@sv-zanshin.com> Date: Fri, 5 Jun 2020 07:27:36 +0200 Subject: [PATCH 32/49] Update README.md --- .github/README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/README.md b/.github/README.md index 4053221..2e16ad7 100644 --- a/.github/README.md +++ b/.github/README.md @@ -1,5 +1,7 @@ -<img src="../images/bosch-bme680.jpg" alt="INA" align="right" height="40px"> +<img src="../images/bosch-bme680.jpg" alt="Bosch BME680" align="right" height="40px"> + # BME680 library<br>[](https://travis-ci.org/SV-Zanshin/BME680) [](https://www.ardu-badge.com/BME680) [](https://zenodo.org/badge/latestdoi/139349456) [](https://sv-zanshin.github.io/BME680/html/index.html) [](https://github.com/SV-Zanshin/BME680/wiki) + *Arduino* library for using the [Bosch BME680](https://www.bosch-sensortec.com/bst/products/all_products/bme680) sensor which senses temperature, humidity and pressure. The BME680 is a tiny package and no hobbyist is going to be breadboarding this sensor directly, so one will be part of a breakout board. Here are some breakout board examples: | Supplier | Image | Instructions | Comments | From cde4b2406129d6ca2f00c62fa4d699ac43ba8890 Mon Sep 17 00:00:00 2001 From: Arnd <Zanshin_Github@sv-zanshin.com> Date: Fri, 5 Jun 2020 07:29:52 +0200 Subject: [PATCH 33/49] Corrected image width --- Images/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Images/README.md b/Images/README.md index c500ba1..fb7a685 100644 --- a/Images/README.md +++ b/Images/README.md @@ -12,7 +12,7 @@ The [Fritzing](https://fritzing.org/home/) sources are also included in the dire | TwoBME680.jpg | <img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/TwoBME680.jpg" width="50%"/> | | Doxygen-complete.svg | [] | | Documentation-wiki.svg | [] | -| bosch-bme680.jpg | [] | +| bosch-bme680.jpg | <img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/bosch-bme680.jpg" width="50%"/> |  <img src="https://www.sv-zanshin.com/r/images/site/gif/zanshintext.gif" width="75"/> From 21f202f2e1e2ad0502487846041de6e56b4e1691 Mon Sep 17 00:00:00 2001 From: Arnd <Zanshin_Github@sv-zanshin.com> Date: Fri, 5 Jun 2020 07:31:59 +0200 Subject: [PATCH 34/49] Fixed image --- .github/README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/README.md b/.github/README.md index 2e16ad7..6600654 100644 --- a/.github/README.md +++ b/.github/README.md @@ -1,6 +1,4 @@ -<img src="../images/bosch-bme680.jpg" alt="Bosch BME680" align="right" height="40px"> - -# BME680 library<br>[](https://travis-ci.org/SV-Zanshin/BME680) [](https://www.ardu-badge.com/BME680) [](https://zenodo.org/badge/latestdoi/139349456) [](https://sv-zanshin.github.io/BME680/html/index.html) [](https://github.com/SV-Zanshin/BME680/wiki) +# BME680 library<br>[](https://travis-ci.org/SV-Zanshin/BME680) [](https://www.ardu-badge.com/BME680) [](https://zenodo.org/badge/latestdoi/139349456) [](https://sv-zanshin.github.io/BME680/html/index.html) [](https://github.com/SV-Zanshin/BME680/wiki) <img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/bosch-bme680.jpg" alt="Bosch BME680" align="right" height="40px"> *Arduino* library for using the [Bosch BME680](https://www.bosch-sensortec.com/bst/products/all_products/bme680) sensor which senses temperature, humidity and pressure. The BME680 is a tiny package and no hobbyist is going to be breadboarding this sensor directly, so one will be part of a breakout board. Here are some breakout board examples: From 969a18a701398d4a8fc593721b465324778bc4ad Mon Sep 17 00:00:00 2001 From: Arnd <Zanshin_Github@sv-zanshin.com> Date: Fri, 5 Jun 2020 07:32:44 +0200 Subject: [PATCH 35/49] Correctted logo position --- .github/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/README.md b/.github/README.md index 6600654..b6d6028 100644 --- a/.github/README.md +++ b/.github/README.md @@ -1,4 +1,4 @@ -# BME680 library<br>[](https://travis-ci.org/SV-Zanshin/BME680) [](https://www.ardu-badge.com/BME680) [](https://zenodo.org/badge/latestdoi/139349456) [](https://sv-zanshin.github.io/BME680/html/index.html) [](https://github.com/SV-Zanshin/BME680/wiki) <img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/bosch-bme680.jpg" alt="Bosch BME680" align="right" height="40px"> +# BME680 library <img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/bosch-bme680.jpg" alt="Bosch BME680" align="right" height="60px"><br>[](https://travis-ci.org/SV-Zanshin/BME680) [](https://www.ardu-badge.com/BME680) [](https://zenodo.org/badge/latestdoi/139349456) [](https://sv-zanshin.github.io/BME680/html/index.html) [](https://github.com/SV-Zanshin/BME680/wiki) *Arduino* library for using the [Bosch BME680](https://www.bosch-sensortec.com/bst/products/all_products/bme680) sensor which senses temperature, humidity and pressure. The BME680 is a tiny package and no hobbyist is going to be breadboarding this sensor directly, so one will be part of a breakout board. Here are some breakout board examples: From cc5b1b253454f369b4f4a56e7c39abe3edccf8a3 Mon Sep 17 00:00:00 2001 From: Zanshin <Zanshin_Github@SV-Zanshin.com> Date: Fri, 5 Jun 2020 09:27:49 +0200 Subject: [PATCH 36/49] Update ESP32FeatherWiFiDemo.ino --- examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino b/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino index a628425..05b04ad 100644 --- a/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino +++ b/examples/ESP32FeatherWiFiDemo/ESP32FeatherWiFiDemo.ino @@ -117,10 +117,9 @@ uint16_t loopCounter = 0; ///< Counter for number of w /******************************************************************************************************************* ** Macro that returns the floating point voltage. The formula is the analog value of POWER_PIN. Since this goes ** ** through a voltage divider the value is multiplied by 2. The register is 12-bit (0-4095) so we divide by 4095 ** -** and then by the 3.3V reference voltage and, finally, by the ADC reference voltage of 1.1V. The formula is: ** -** analogRead(POWER_PIN) / 4095.0 * 3.3v * 2 * 1.1v) ** +** and then by the 3.3V reference voltage and, finally, by the ADC reference voltage of 1.1V. ** *******************************************************************************************************************/ -#define VOLTAGE ( analogRead(POWER_PIN) / 4095.0 * 3.3 * 2 * 1.1) +#define VOLTAGE ( analogRead(POWER_PIN) * 2 / 4095.0 * 3.3 * 1.1) void setup() { From 08725829e3a67ba1e9476948eb05119bf6502e53 Mon Sep 17 00:00:00 2001 From: Arnd <Zanshin_Github@sv-zanshin.com> Date: Fri, 5 Jun 2020 17:19:17 +0200 Subject: [PATCH 37/49] Update README.md --- .github/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/README.md b/.github/README.md index b6d6028..51b424d 100644 --- a/.github/README.md +++ b/.github/README.md @@ -4,7 +4,7 @@ | Supplier | Image | Instructions | Comments | | --------- | ----- |------------ | -------- | -| [Sparkfun](https://www.sparkfun.com/products/16466) | <img src="https://cdn.sparkfun.com//assets/parts/1/5/3/2/9/16466-SparkFun_Environmental_Sensor_Breakout_-_BME680__Qwiic_-01a.jpg" width="150" /> | [Guide](https://learn.sparkfun.com/tutorials/sparkfun-environmental-sensor-breakout---bme680-qwiic-hookup-guide) | The Sparkfun board has pinouts for both SPI and I2C, one interface along one edge and other on the opposing side. The board is designed as part of the SparkFun [Qwiic Connect System](https://www.sparkfun.com/qwiic) that uses standardized plugs to daisy-chain I2C breakout boards together quickly. This package is designed to work with 3V systems and has no on-board 5V level shifting. | +| [Sparkfun](https://www.sparkfun.com/products/16466) | <img src="https://cdn.sparkfun.com//assets/parts/1/5/3/2/9/16466-SparkFun_Environmental_Sensor_Breakout_-_BME680__Qwiic_-01a.jpg" width="150px" /> | [Guide](https://learn.sparkfun.com/tutorials/sparkfun-environmental-sensor-breakout---bme680-qwiic-hookup-guide) | The Sparkfun board has pinouts for both SPI and I2C, one interface along one edge and other on the opposing side. The board is designed as part of the SparkFun [Qwiic Connect System](https://www.sparkfun.com/qwiic) that uses standardized plugs to daisy-chain I2C breakout boards together quickly. This package is designed to work with 3V systems and has no on-board 5V level shifting. | | [Bluedot](https://www.bluedot.space/sensor-boards/bme680/) | <img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/BlueDotBME680.jpg" width="150" /> | [Guide](https://www.bluedot.space/sensor-boards/bme680/) | This was my initial BME680 breakout board, purchased locally in Germany where it is manufactured. It has on-board level shifting and is therefore able to run on both 3V and 5V systems. There are fewer pinouts on this board than on the Sparkfun one, several of the pins have different uses depending upon whether I2C or SPI is selected | | [Adafruit](https://www.adafruit.com/product/3660) | <img src="https://cdn-shop.adafruit.com/970x728/3660-01.jpg" width="150" /> | [Guide](https://learn.adafruit.com/adafruit-bme680-humidity-temperature-barometic-pressure-voc-gas/) | This breakout board is the most compact of the three, with the pinouts having different uses depending upon which communications method (I2C or SPI) is used. As with the Bluedot breakout board above, the Adafruit breakout board has level-shifting integrated and can therefore be run on both 3V and 5V systems. | From 0bfdbaca80df3d93b2959b9292475b4ed4695558 Mon Sep 17 00:00:00 2001 From: Arnd <Zanshin_Github@sv-zanshin.com> Date: Sat, 6 Jun 2020 10:18:26 +0200 Subject: [PATCH 38/49] Added GPL License badge --- .github/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/README.md b/.github/README.md index 51b424d..b9e89b2 100644 --- a/.github/README.md +++ b/.github/README.md @@ -1,4 +1,4 @@ -# BME680 library <img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/bosch-bme680.jpg" alt="Bosch BME680" align="right" height="60px"><br>[](https://travis-ci.org/SV-Zanshin/BME680) [](https://www.ardu-badge.com/BME680) [](https://zenodo.org/badge/latestdoi/139349456) [](https://sv-zanshin.github.io/BME680/html/index.html) [](https://github.com/SV-Zanshin/BME680/wiki) +# BME680 library <img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/bosch-bme680.jpg" alt="Bosch BME680" align="right" height="60px"><br>[](https://www.gnu.org/licenses/gpl-3.0) [](https://travis-ci.org/SV-Zanshin/BME680) [](https://www.ardu-badge.com/BME680) [](https://zenodo.org/badge/latestdoi/139349456) [](https://sv-zanshin.github.io/BME680/html/index.html) [](https://github.com/SV-Zanshin/BME680/wiki) *Arduino* library for using the [Bosch BME680](https://www.bosch-sensortec.com/bst/products/all_products/bme680) sensor which senses temperature, humidity and pressure. The BME680 is a tiny package and no hobbyist is going to be breadboarding this sensor directly, so one will be part of a breakout board. Here are some breakout board examples: From 6445d8f43bf2fe2c65aa7973724d6c72b0b91d2c Mon Sep 17 00:00:00 2001 From: Arnd <Zanshin_Github@sv-zanshin.com> Date: Sat, 6 Jun 2020 10:19:21 +0200 Subject: [PATCH 39/49] Moved file --- LICENSE => .github/LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename LICENSE => .github/LICENSE (99%) diff --git a/LICENSE b/.github/LICENSE similarity index 99% rename from LICENSE rename to .github/LICENSE index 0bdb991..5e54bd3 100644 --- a/LICENSE +++ b/.github/LICENSE @@ -671,4 +671,4 @@ into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read -<http://www.gnu.org/philosophy/why-not-lgpl.html>. \ No newline at end of file +<http://www.gnu.org/philosophy/why-not-lgpl.html>. From 70e71e2000f6ed608b4798d611b4928e92acdbe5 Mon Sep 17 00:00:00 2001 From: Arnd <Zanshin_Github@sv-zanshin.com> Date: Sat, 6 Jun 2020 10:45:46 +0200 Subject: [PATCH 40/49] Changed Badge location and images --- .github/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/README.md b/.github/README.md index b9e89b2..17c17a0 100644 --- a/.github/README.md +++ b/.github/README.md @@ -1,4 +1,4 @@ -# BME680 library <img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/bosch-bme680.jpg" alt="Bosch BME680" align="right" height="60px"><br>[](https://www.gnu.org/licenses/gpl-3.0) [](https://travis-ci.org/SV-Zanshin/BME680) [](https://www.ardu-badge.com/BME680) [](https://zenodo.org/badge/latestdoi/139349456) [](https://sv-zanshin.github.io/BME680/html/index.html) [](https://github.com/SV-Zanshin/BME680/wiki) +# BME680 library <img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/bosch-bme680.jpg" alt="Bosch BME680" align="right" height="60px"><br>[](https://www.gnu.org/licenses/gpl-3.0) [](https://travis-ci.org/SV-Zanshin/BME680) [](https://www.ardu-badge.com/BME680) [](https://zenodo.org/badge/latestdoi/139349456) [](https://sv-zanshin.github.io/BME680/html/index.html) [](https://github.com/SV-Zanshin/BME680/wiki) *Arduino* library for using the [Bosch BME680](https://www.bosch-sensortec.com/bst/products/all_products/bme680) sensor which senses temperature, humidity and pressure. The BME680 is a tiny package and no hobbyist is going to be breadboarding this sensor directly, so one will be part of a breakout board. Here are some breakout board examples: From 351981a167bc9378c744fd3c3007b727565def22 Mon Sep 17 00:00:00 2001 From: Arnd <Zanshin_Github@sv-zanshin.com> Date: Sat, 6 Jun 2020 12:14:36 +0200 Subject: [PATCH 41/49] Updated Zanshin gif location --- .github/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/README.md b/.github/README.md index 17c17a0..680ee7c 100644 --- a/.github/README.md +++ b/.github/README.md @@ -28,4 +28,4 @@ The pressure sensor works in temperatures between -40°C and +85°C although the ### Environment gas sensing The gas sensor works by heating a small surface internally and measuring the resistance of the gas layer. This indicates the amount of volatile components in the air and can be used as an indirect means of measuring of air quality. The actual computation of "indoor air quality" is more complex than measuring the resistance, as the relative humidity, temperature, and element heating all play a role in determining that value. These calculations not only require the use of floating-point math, but are quite complex and memory-intensive and are not included in the library. If IAQ measurements are required, then the best solution is to use Bosch's [BSEC](https://www.bosch-sensortec.com/software-tools/software/bsec/) software - but keep in mind that it won't run on most smaller Arduino platforms. - <img src="https://www.sv-zanshin.com/r/images/site/gif/zanshintext.gif" width="75"/> + <img src="https://zanduino.github.io/Images/zanshintext.gif" width="75"/> From 3ef1d8ea4d93695e91888b24e4d6b62f584f3cbc Mon Sep 17 00:00:00 2001 From: Arnd <Zanshin_Github@sv-zanshin.com> Date: Sat, 6 Jun 2020 12:21:00 +0200 Subject: [PATCH 42/49] Update README.md --- .github/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/README.md b/.github/README.md index 680ee7c..9b34ec8 100644 --- a/.github/README.md +++ b/.github/README.md @@ -28,4 +28,4 @@ The pressure sensor works in temperatures between -40°C and +85°C although the ### Environment gas sensing The gas sensor works by heating a small surface internally and measuring the resistance of the gas layer. This indicates the amount of volatile components in the air and can be used as an indirect means of measuring of air quality. The actual computation of "indoor air quality" is more complex than measuring the resistance, as the relative humidity, temperature, and element heating all play a role in determining that value. These calculations not only require the use of floating-point math, but are quite complex and memory-intensive and are not included in the library. If IAQ measurements are required, then the best solution is to use Bosch's [BSEC](https://www.bosch-sensortec.com/software-tools/software/bsec/) software - but keep in mind that it won't run on most smaller Arduino platforms. - <img src="https://zanduino.github.io/Images/zanshintext.gif" width="75"/> + <img src="https://zanduino.github.io/Images/zanshintext.gif" width="75"/> From 29185ad0dfd5a60d0e69dd38f31c09496030e433 Mon Sep 17 00:00:00 2001 From: Arnd <Zanshin_Github@sv-zanshin.com> Date: Sat, 6 Jun 2020 12:22:07 +0200 Subject: [PATCH 43/49] Update README.md --- .github/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/README.md b/.github/README.md index 9b34ec8..58f418e 100644 --- a/.github/README.md +++ b/.github/README.md @@ -28,4 +28,4 @@ The pressure sensor works in temperatures between -40°C and +85°C although the ### Environment gas sensing The gas sensor works by heating a small surface internally and measuring the resistance of the gas layer. This indicates the amount of volatile components in the air and can be used as an indirect means of measuring of air quality. The actual computation of "indoor air quality" is more complex than measuring the resistance, as the relative humidity, temperature, and element heating all play a role in determining that value. These calculations not only require the use of floating-point math, but are quite complex and memory-intensive and are not included in the library. If IAQ measurements are required, then the best solution is to use Bosch's [BSEC](https://www.bosch-sensortec.com/software-tools/software/bsec/) software - but keep in mind that it won't run on most smaller Arduino platforms. - <img src="https://zanduino.github.io/Images/zanshintext.gif" width="75"/> +[ <img src="https://zanduino.github.io/Images/zanshintext.gif" width="75"/>](https://www.sv-zanshin.com) From d0263bcc8007513753fa30f43f0a15a81aa9616a Mon Sep 17 00:00:00 2001 From: Arnd <Zanshin_Github@sv-zanshin.com> Date: Sun, 7 Jun 2020 19:58:51 +0200 Subject: [PATCH 44/49] updated to v1.0.7 --- library.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library.properties b/library.properties index 706ce79..5ee849e 100644 --- a/library.properties +++ b/library.properties @@ -1,5 +1,5 @@ name=BME680 -version=1.0.6 +version=1.0.7 author=https://github.com/SV-Zanshin maintainer=https://github.com/SV-Zanshin sentence=Arduino library to access and control the Bosch BME680 sensor and get temperature, humidity, pressure and gas readings. From 22610906f49891779672513148644b05264151c6 Mon Sep 17 00:00:00 2001 From: Arnd <Zanshin_Github@sv-zanshin.com> Date: Mon, 8 Jun 2020 16:44:06 +0200 Subject: [PATCH 45/49] Updated to v1.0.7 --- Doxyfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Doxyfile b/Doxyfile index 84cffc0..71eca6e 100644 --- a/Doxyfile +++ b/Doxyfile @@ -3,7 +3,7 @@ ## ## ## Date Developer Comments ## ## ========== ============================= ======================================================= ## -## 2020-06-01 https://github.com/SV-Zanshin Updated version to 1.0.7 ## +## 2020-06-08 https://github.com/SV-Zanshin Updated version to 1.0.7 ## ## 2020-06-01 https://github.com/SV-Zanshin Added "PREDEFINED = DOXYGEN_SHOULD_SKIP_THIS" ## ## 2020-05-23 https://github.com/SV-Zanshin Removed e-mail addresses from file and updated version ## ## 2020-05-21 https://github.com/SV-Zanshin Updated "PROJECT_NUMBER" value to 1.0.5 ## From 23910a1e59a121c168ecd960b847caa1c4e31f97 Mon Sep 17 00:00:00 2001 From: Arnd <Zanshin_Github@sv-zanshin.com> Date: Mon, 8 Jun 2020 16:56:54 +0200 Subject: [PATCH 46/49] Update README.md --- Images/README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/Images/README.md b/Images/README.md index fb7a685..5fce8e3 100644 --- a/Images/README.md +++ b/Images/README.md @@ -14,5 +14,4 @@ The [Fritzing](https://fritzing.org/home/) sources are also included in the dire | Documentation-wiki.svg | [] | | bosch-bme680.jpg | <img src="https://github.com/SV-Zanshin/BME680/blob/master/Images/bosch-bme680.jpg" width="50%"/> | -  <img src="https://www.sv-zanshin.com/r/images/site/gif/zanshintext.gif" width="75"/> From a041b828b8add801e58ca4299fbe30f0d736f948 Mon Sep 17 00:00:00 2001 From: Arnd <Zanshin_Github@sv-zanshin.com> Date: Mon, 8 Jun 2020 20:48:15 +0200 Subject: [PATCH 47/49] Updated text --- src/README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/README.md b/src/README.md index 262ba2f..8d81d52 100644 --- a/src/README.md +++ b/src/README.md @@ -1,5 +1,6 @@ # BME680 library Header and Source files<br>[](https://travis-ci.org/SV-Zanshin/BME680) [](https://zenodo.org/badge/latestdoi/139349456) [](https://www.ardu-badge.com/BME680) -This directory contains the two files that comprise [Bosch BME680](https://www.bosch-sensortec.com/bst/products/all_products/bme680) BME680 *Arduino* library. -The "Zanshin_BME680.h" is the library header file, and the code is contained in the "Zanshin_BME680.cpp" file. +This directory contains the two files that define [Bosch BME680](https://www.bosch-sensortec.com/bst/products/all_products/bme680) BME680 *Arduino* library. + +The "Zanshin_BME680.h" is the library header file, and the program code is contained in the "Zanshin_BME680.cpp" file.  <img src="https://www.sv-zanshin.com/r/images/site/gif/zanshintext.gif" width="75"/> From 042e19426165c7ace5c1c23b37d6deeb203b34a0 Mon Sep 17 00:00:00 2001 From: Arnd <Zanshin_Github@sv-zanshin.com> Date: Tue, 9 Jun 2020 12:39:20 +0200 Subject: [PATCH 48/49] Comments updated --- src/Zanshin_BME680.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Zanshin_BME680.h b/src/Zanshin_BME680.h index 9588ac8..b14b73d 100644 --- a/src/Zanshin_BME680.h +++ b/src/Zanshin_BME680.h @@ -14,7 +14,7 @@ SPI using either the standard Arduino hardware SPI or software SPI. Depending up have 2 distinct I2C addresses - either 0x76 or 0x77.\n\n The most recent version of the library is available at https://github.com/SV-Zanshin/BME680 and extensive -documentation of the library as well as descriptions of the example programs are described in the project's wiki +documentation of the library as well as descriptions of the various example programs are described in the project's wiki pages located at https://github.com/SV-Zanshin/BME680/wiki \n The BME680 is an extremely small physical package that is so tiny as to be impossible to solder at home, hence it @@ -337,4 +337,4 @@ Version | Date | Developer | Comments return(structSize); } // of method putData() }; // of BME680 class definition -#endif \ No newline at end of file +#endif From 967b1bd1c67b1c8234a727d7ab16ef5a49244f05 Mon Sep 17 00:00:00 2001 From: Arnd <Zanshin_Github@sv-zanshin.com> Date: Wed, 10 Jun 2020 17:07:42 +0200 Subject: [PATCH 49/49] Changed to a local version of the "install.sh" --- .travis.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index abf4631..2510e27 100644 --- a/.travis.yml +++ b/.travis.yml @@ -35,7 +35,9 @@ env: - DOXYFILE: $TRAVIS_BUILD_DIR/Doxyfile before_install: - - source <(curl -SLs https://raw.githubusercontent.com/adafruit/travis-ci-arduino/master/install.sh) +# - source <(curl -SLs https://raw.githubusercontent.com/adafruit/travis-ci-arduino/master/install.sh) + - source <(curl -SLs https://zanduino.github.io/Travis/install.sh) + install: