Значение датчика газа BME680 продолжает расти - PullRequest
0 голосов
/ 17 сентября 2018

Я пытался заставить BME680 работать, и по большей части он, кажется, работает отлично.У меня есть одна проблема, и это с датчиком газа.

Я записываю все содержимое BME680 на веб-страницу, и все остальные значения остаются неизменными.

Temperature: 77.29 *F
Humidity: 59.12 %
Pressure: 1010.45 millibars
Air Quality: 3.24 KOhms

При каждом обновлении страницы значения для температуры, влажности иДавление все остается близким к их значениям.Они исправляют на некоторое время и правильно показывают незначительные колебания.Когда начинается дождь, давление понижается, влажность повышается и т. Д. Проблема в датчике газа.При каждом обновлении значение продолжает расти.Независимо от того, обновляю ли я его раз в минуту или в час, оно продолжает расти.Я явно делаю что-то не так.

#include <Wire.h>
#include <SPI.h>
#include <Adafruit_Sensor.h>
#include "Adafruit_BME680.h"
#include <WiFi101.h>
#include <WiFiUdp.h>

#include "arduino_secrets.h" 

///////please enter your sensitive data in the Secret tab/arduino_secrets.h
char ssid[] = SECRET_SSID;        // your network SSID (name)
char pass[] = SECRET_PASS;    // your network password (use for WPA, or use as key for WEP)
int keyIndex = 0;                 // your network key Index number (needed only for WEP)

int status = WL_IDLE_STATUS;
WiFiServer server(80);

#define SEALEVELPRESSURE_HPA (1023.03)

Adafruit_BME680 bme; // I2C

void setup() {
  //Serial.begin(9600);
  pinMode(LED_BUILTIN, OUTPUT);      // set the LED pin mode
  bme.begin();

  // Set up oversampling and filter initialization
  bme.setTemperatureOversampling(BME680_OS_8X);
  bme.setHumidityOversampling(BME680_OS_2X);
  bme.setPressureOversampling(BME680_OS_4X);
  bme.setIIRFilterSize(BME680_FILTER_SIZE_3);
  bme.setGasHeater(320, 150); // 320*C for 150 ms

  // check for the presence of the shield:
  if (WiFi.status() == WL_NO_SHIELD) {
    //Serial.println("WiFi shield not present");
    while (true);       // don't continue
  }

  // attempt to connect to WiFi network:
  while ( status != WL_CONNECTED) {
    // Connect to WPA/WPA2 network. Change this line if using open or WEP network:
    status = WiFi.begin(ssid, pass);
    // wait 10 seconds for connection:
    delay(10000);
  }
  server.begin();                           // start the web server on port 80
}

void loop() {

  WiFiClient client = server.available();   // listen for incoming clients

  if (client) {                             // if you get a client,
    //Serial.println("new client");           // print a message out the serial port
    String currentLine = "";                // make a String to hold incoming data from the client
    while (client.connected()) {            // loop while the client's connected
      if (client.available()) {             // if there's bytes to read from the client,
        char c = client.read();             // read a byte, then
        //Serial.write(c);                    // print it out the serial monitor
        if (c == '\n') {                    // if the byte is a newline character

          // if the current line is blank, you got two newline characters in a row.
          // that's the end of the client HTTP request, so send a response:
          if (currentLine.length() == 0) {
            // HTTP headers always start with a response code (e.g. HTTP/1.1 200 OK)
            // and a content-type so the client knows what's coming, then a blank line:
            client.println("HTTP/1.1 200 OK");
            client.println("Content-type:text/html");
            client.println();


            if (! bme.performReading()) {
              client.print("Failed to perform reading :(<br>");
              return;
            }
            // the current weather condidtions
            client.print("Temperature: ");
            client.print((bme.temperature * 9/5) + 32);
            client.print(" *F<br>");

            client.print("Humidity: ");
            client.print(bme.humidity);
            client.print(" %<br>");

            client.print("Pressure: ");
            client.print(bme.pressure / 100.0);
            client.print(" millibars<br>");

            client.print("Air Quality: ");
            client.print(bme.gas_resistance / 1000.0);
            client.print(" KOhms<br>");

            delay(2000);

            // The HTTP response ends with another blank line:
            client.println();
            // break out of the while loop:
            break;
          }
          else {      // if you got a newline, then clear currentLine:
            currentLine = "";
          }
        }
        else if (c != '\r') {    // if you got anything else but a carriage return character,
          currentLine += c;      // add it to the end of the currentLine
        }
      }
    }
    // close the connection:
    client.stop();
    //Serial.println("client disonnected");
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...