Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:

THEMA: "Teilweise" falsche Sensorwerte von DHT11.

"Teilweise" falsche Sensorwerte von DHT11. 04 Dez 2017 13:11 #345

  • Matthias_ESP8266
  • Matthias_ESP8266s Avatar
  • Offline
  • New Member
  • Beiträge: 4
  • Karma: 0
Liebe ESP8266-Gemeinde,

ich arbeite an einem Projekt, wo ich Temperatur von einem DHT11-Sensor mit einem NodeMCU einlesen und auf Thingspeaks darstellen möchte.

Teilweise bekomme ich die richtigen Werte für Termperatur & Luftfeuchte und teilweise liegt der Wert bei 255.
Kann mir einer von euch sagen, aus welchem Grund dieser Wert teilwese angezeigt wird?
Zumindest werden auf Thingspeak die gleichen Werte angezeigt wie im Monitor der Arduino-IDE. Also Enweder 16°C oder 255°C.
Für den Code, hab ich mich an folgendem Bsp. orientiert
embeddedlaboratory.blogspot.de/2016/10/p...s-to-thingspeak.html

Vielen Dank im Vorraus,
Matthias


  #include <DHT.h>  
#include <ESP8266WiFi.h>  
#include <WiFiClient.h>  
#include <ThingSpeak.h>  
#define DHTPIN D3
#define DHTTYPE DHT11  
DHT dht(DHTPIN, DHTTYPE);  
const char* ssid = "???WLAN???";  
const char* password = "????";  
WiFiClient client;  
unsigned long myChannelNumber = ?????;  
const char * myWriteAPIKey = "????";  
uint8_t temperature, humidity;  
void setup()  
{  
  Serial.begin(115200);  
  dht.begin();  
  delay(10);  
  // Connect to WiFi network  
  Serial.println();  
  Serial.println();  
  Serial.print("Connecting to ");  
  Serial.println(ssid);  
  WiFi.begin(ssid, password);  
  while (WiFi.status() != WL_CONNECTED)  
  {  
   delay(500);  
   Serial.print(".");  
  }  
  Serial.println("");  
  Serial.println("WiFi connected");  
  // Print the IP address  
  Serial.println(WiFi.localIP());  
  ThingSpeak.begin(client);  
}  
void loop()   
{  
  static boolean data_state = false;  
  temperature = dht.readTemperature();  
  humidity = dht.readHumidity();  
  Serial.print("Temperature Value is :");  
  Serial.print(temperature);  
  Serial.println("C");  
  Serial.print("Humidity Value is :");  
  Serial.print(humidity);  
  Serial.println("%");  
  // Write to ThingSpeak. There are up to 8 fields in a channel, allowing you to store up to 8 different  
  // pieces of information in a channel. Here, we write to field 1.  
  if( data_state )  
  {  
   ThingSpeak.writeField(myChannelNumber, 1, temperature, myWriteAPIKey);  
   ThingSpeak.writeField(myChannelNumber, 2, humidity, myWriteAPIKey);  
   data_state = false;  
  }  
  else  
  {  
   ThingSpeak.writeField(myChannelNumber, 2, humidity, myWriteAPIKey);  
   data_state = true;  
  }  
  delay(15000); // ThingSpeak will only accept updates every 15 seconds.  
} 
Der Administrator hat öffentliche Schreibrechte deaktiviert.

"Teilweise" falsche Sensorwerte von DHT11. 06 Dez 2017 09:08 #346

  • gruenezone
  • gruenezones Avatar
  • Offline
  • Junior Member
  • Beiträge: 21
  • Karma: 0
Hi Matthias!

Dumme Frage: Hast Du mal einen anderen DHT benutzt? Da die Daten des DHT digital hereinkommen und der Code getestet sein soll könnte das eine Ursache sein.

Haupsache grün ;-)
Der Administrator hat öffentliche Schreibrechte deaktiviert.

"Teilweise" falsche Sensorwerte von DHT11. 06 Dez 2017 09:11 #347

  • supporter
  • supporters Avatar
  • Offline
  • Premium Member
  • Beiträge: 84
  • Dank erhalten: 5
  • Karma: 0
Herzlich Willkommen im Forum, Matthias,

versuche mal folgendes:
STREICHE: uint8_t temperature, humidity;
SETZE: double temperature, humidity;
Der Administrator hat öffentliche Schreibrechte deaktiviert.