2017-09-22 15 views
-1

私はArduinoが新しく、NodeMCU 1.0ボード上でDHT11センサーを実行しています。センサーが湿度の読みのほとんどが不正確で、私の質問に私をもたらします.HTMLページに表示されるセンサーからの読みにパーセンテージを追加/減算したいのです。誰でも助けてくれますか?DHT11センサーが間違った値を持っていて、センサからの読み取り値に値を追加したい場合

PS私はコードを使用して私は添付しました。

include <ESP8266WiFi.h> 
#include <WiFiClient.h> 
#include <ESP8266WebServer.h> 
#include <ESP8266mDNS.h> 
#include "DHT.h" 

// Uncomment one of the lines below for whatever DHT sensor type you're using! 
#define DHTTYPE DHT11 // DHT 11 
//#define DHTTYPE DHT21 // DHT 21 (AM2301) 
//#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321 

MDNSResponder mdns; 

// Replace with your network details 
const char* ssid = "Temperature_Server"; 
const char* password = "vishaworld.com"; 

ESP8266WebServer server(80); 

String webPage = ""; 

// DHT Sensor 
const int DHTPin = 4; 
DHT dht(DHTPin, DHTTYPE); 
static char celsiusTemp[7]; 
static char fahrenheitTemp[7]; 
static char humidityTemp[7]; 
float h, t, f; 

void setup(void) { 
    IPAddress Ip(10, 10, 10, 10); 
    IPAddress NMask(255, 255, 255, 0); 
    WiFi.mode(WIFI_AP); 
    WiFi.softAPConfig(Ip, Ip, NMask); 
    WiFi.softAP(ssid, password); 

    delay(1000); 
    Serial.begin(9600); 
    Serial.println(""); 

    // Wait for connection 
    delay(5000); 
    Serial.println(""); 
    Serial.print("SoftAP IP address: "); 
    Serial.println(WiFi.localIP()); 

    dht.begin(); 

    if (mdns.begin("esp8266", WiFi.localIP())) { 
    Serial.println("MDNS responder started"); 
    } 

    server.on("/", []() { 
    webPage = ""; 
    webPage += "<!DOCTYPE HTML>"; 
    webPage += "<html>"; 
    webPage += "<head></head><body><h1>Temperature and Humidity</h1><h3>Temperature in Celsius: "; 
    webPage += "<meta http-equiv=\"refresh\" content=\"6\">" ; 
    webPage += celsiusTemp; 
    webPage += "*C</h3><h3>Temperature in Fahrenheit: "; 
    webPage += fahrenheitTemp; 
    webPage += "*F</h3><h3>Humidity: "; 
    webPage += humidityTemp; 
    webPage += "%</h3><h3>"; 
    webPage += "</body></html>"; 
    server.send(200, "text/html", webPage); 
    }); 

    server.begin(); 
    Serial.println("HTTP server started"); 

} 

void loop(void) { 
    server.handleClient(); 
    // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor) 
    float h = dht.readHumidity(); 
    // Read temperature as Celsius (the default) 
    float t = dht.readTemperature(); 
    // Read temperature as Fahrenheit (isFahrenheit = true) 
    float f = dht.readTemperature(true); 
    // Check if any reads failed and exit early (to try again). 
    if (isnan(h) || isnan(t) || isnan(f)) { 
    Serial.println("Failed to read from DHT sensor!"); 
    strcpy(celsiusTemp, "Failed"); 
    strcpy(fahrenheitTemp, "Failed"); 
    strcpy(humidityTemp, "Failed"); 
    } 
    else { 
    // Computes temperature values in Celsius + Fahrenheit and Humidity 
    float hic = dht.computeHeatIndex(t, h, false); 
    dtostrf(hic, 6, 2, celsiusTemp); 
    float hif = dht.computeHeatIndex(f, h); 
    dtostrf(hif, 6, 2, fahrenheitTemp); 
    dtostrf(h, 6, 2, humidityTemp); 
    } 
    delay(2000); 
} 
+0

私の理解からラズベリーパイについての読書は、湿度センサーが不正確であることで有名であるということです。センサの経年変化に伴い、時々校正する必要があります。 10%を値に加えるには、値の.10倍の値を加えるのが最も簡単です。値に10%を減算するには、値の10倍の値を減算する。だから、 'temp = temp + percent * temp;'のようなものでなければなりません。パーセントパーセンテージを追加すると '%'は正で、%を減算すると '%'は負の値になります。 '%'は10/100のように百分率を100で割った 'float'です。これは..10です。 –

+0

ここにコードを追加しますか?これは場所だろうか? //摂氏+華氏と湿度の温度値を計算する float hic = dht.computeHeatIndex(t、h、false); dtostrf(hic、6、2、celsiusTemp); float hif = dht.computeHeatIndex(f、h); dtostrf(hif、6,2、fahrenheitTemp); dtostrf(h、6,2、humidityTemp); } –

答えて

0

センサから読み取った後の湿度の読み取り値を変更するコードを置くことができます。このようにして、センサからの湿度の読み取り値と補正値とは同じ位置にあり、従って容易に見つけることができる。

あなたのコードからの抜粋:湿度センサーは、定義ファイルの先頭近くに続いて

// Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor) 
float h = dht.readHumidity(); 
// modify the humidity reading to provide a correction to the value 
h = h + h * humidityCorrectionPercentage; 

は私が変更に次のようなものになるだろう場所にあります。

// Uncomment one of the lines below for whatever DHT sensor type you're using! 
#define DHTTYPE DHT11 // DHT 11 
//#define DHTTYPE DHT21 // DHT 21 (AM2301) 
//#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321 

// humidity sensor reading modification to modify the reading to more accurate value 
// percentage in decimal form so 10% is 0.10 or 25% is 0.25 
// use positive vale to increase the reading and a negative value to decrease the reading. 
// specify a value of zero if no modification of the reading is needed. 
const float humidityCorrectionPercentage = .10; 
関連する問題