J'ai besoin d'aide, je suis nouveau sur Arduino et je suis en train d'utiliser un capteur DHT11 sur une carte NodeMCU 1.0, je trouve sur beaucoup de tendances que cette Le capteur est inexact principalement sur les lectures d'humidité, ce qui m'amène à ma question, je veux ajouter/soustraire un pourcentage de la lecture qui vient du capteur qui s'affiche sur la page HTML. Quelqu'un pourrait-il aider, s'il vous plaît?Capteur DHT11 avec des valeurs erronées, voulant ajouter des valeurs à la lecture qui provient du capteur
PS J'ai joint le code im using.
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);
}
Si je comprends bien lectures sur le Raspberry Pi est que les capteurs d'humidité sont notoires pour être inexactes. À mesure que les capteurs vieillissent, ils doivent être recalibrés de temps en temps. Pour ajouter 10% à la valeur la chose la plus simple est d'ajouter à la valeur .10 fois la valeur. Pour soustraire 10% à la valeur, soustrayez .10 fois la valeur à la valeur. Il devrait donc s'agir de quelque chose comme 'temp = temp + percent * temp;' où ajouter un pourcentage, puis 'percent' est positif et pour soustraire un pourcentage, alors' percent' est négatif. 'pourcentage' est un' float' avec le pourcentage divisé par 100 comme dans 10/100 qui est ..10. –
dans lequel le code j'ajouterais ceci? Est-ce que ce serait l'endroit? // Calcule les valeurs de température en degrés Celsius + Fahrenheit et Humidité 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); } –