2018-11-21

Esp32 Bme280 als Arduino Tab.

Bme280.ino

// ****************************************************************
// Sketch Esp32 Bme280 Modular(Tab)
// created: Jens Fleischer, 2018-08-10
// last mod: Jens Fleischer, 2018-11-21
// For more information visit: https://fipsok.de
// ****************************************************************
// Hardware: Esp32, Bme280, 2 x 4k7 Ohm Widerstand
// SDA an D21
// SCL an D22
// 4k7 Ohm Widerstand von VCC auf D21
// 4k7 Ohm Widerstand von VCC auf D22
// Getestet auf: ESP32 NodeMCU-32s
/******************************************************************
  Copyright (c) 2018 Jens Fleischer. All rights reserved.

  This file is free software; you can redistribute it and/or
  modify it under the terms of the GNU Lesser General Public
  License as published by the Free Software Foundation; either
  version 2.1 of the License, or (at your option) any later version.
  This file 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
  Lesser General Public License for more details.
*******************************************************************/
// Diese Version von Bme280 sollte als Tab eingebunden werden.
// #include <WebServer.h> müssen im Haupttab aufgerufen werden
// Die Funktionalität des ESP32 Webservers ist erforderlich.
// Die Funktion "bme280();" muss im Setup aufgerufen werden.
// Gib die Höhe in Meter über Meeresspiegel an deinem Standort an
/**************************************************************************************/

#include <Wire.h>
#include <BME280I2C.h>        // Version 2.3 https://www.github.com/finitespace/BME280

BME280I2C bme;                // Standard : Zwangsmodus, Standby-Zeit = 1000 ms

void bme280() {       // Funktionsaufruf "bme280();" muss im Setup eingebunden werden
  Wire.begin();
  if (!bme.begin()) {
    DEBUG_F("Keinen BME280 Sensor gefunden!");
  }
  server.on("/bme280", []() {
    server.send(200, "application/json", handleBme());
  });
}

String handleBme() {
  const int hoehe = 163;        // virtuelle Höhe in Meter über Meeresspiegel an deinem Standort anpassen
  float temp, hum, pres, sealevel;
  BME280::TempUnit tempUnit(BME280::TempUnit_Celsius);    //TempUnit_: Celsius, Fahrenheit
  BME280::PresUnit presUnit(BME280::PresUnit_hPa);        //PresUnit_: Pa, hPa, inHg, atm, bar, torr, psi
  bme.read(pres, temp, hum, tempUnit, presUnit);
  sealevel = (pres / pow(1 - ((0.0065 * hoehe) / (temp + (0.0065 * hoehe) + 273.15)), 5.257));    // Berechnung relativer Luftdruck
  return (String)"[\"" + temp + "\",\"" + hum + "\",\"" + sealevel + "\"]";
}

Zurück