Forum: Mikrocontroller und Digitale Elektronik D1 Mini v3: DHT22 gibt NaN aus


von Niklas S. (wniklas)


Lesenswert?

Hallo zusammen,

ich habe folgendes Problem und hoffe hier Unterstützung zu erhalten.

Auf einem NodeMCU ESP8266 habe ich ohne Probleme einen DHT22 laufen, der 
mir regelmäßig die Daten über ein express.js in eine MariaDB schreibt.

Nun wollte ich das alles auf einen D1 Mini v3 umziehen, da der NodeMCU 
nun wirklich etwas zu viele Pins bietet, für so ein kleines Projekt.

Am D1 Mini v3 hat sich nichts geändert, bis auf die Tatsache, dass ich 
nun NaN für Temp. und Hum. erhalte.

Da die gleiche Schaltung am NodeMCU funktioniert, erspare ich euch das 
und teile ein sehr vereinfachtes Sketch, welches so auch ohne Probleme 
auf dem NodeMCU läuft:
1
#include <Adafruit_Sensor.h>
2
#include <DHT.h>
3
4
#define DHTPIN D5
5
#define DHTTYPE DHT22
6
DHT dht(DHTPIN, DHTTYPE);
7
8
void setup() {
9
  Serial.begin(115200);
10
  dht.begin();
11
  delay(2000);
12
}
13
14
void loop() {
15
  delay(10000);
16
  double t = dht.readTemperature();
17
  double h = dht.readHumidity();
18
19
  if (isnan(h) || isnan(t)) {
20
    Serial.println("Failed to read from DHT sensor!");
21
  }
22
23
  Serial.println(t);
24
  Serial.println(h);
25
}


Nun also meine Frage:
woran könnte es liegen, dass der D1 Mini v3 nur NaN ausgibt, obwohl auf 
dem NodeMCU alles gut läuft?

Vielen Dank und Gruß
Niklas

von Stefan F. (Gast)


Lesenswert?

Verstehe ich dich richtig, dass das oben gezeigte Programm nur auf dem 
NodeMCU Board funktioniert, aber nicht auf dem Wemos D1 Mini? Wirklich 
genau dieses Programm auf beiden Boards?

Oder hast du auf dem Wemos D1 Mini nur das größere Programm laufen 
lassen, dass du nicht zeigen willst?

von Niklas S. (wniklas)


Lesenswert?

Das gezeigte Sketch wurde auf beide Mikrocontroller geflashed.
Auf dem NodeMCU gibt es damit "korrekte" Werte, auf dem D1 Mini nur 
"NaN".

Das gleiche gilt zwar für das große Programm auch, ist aber ja 
irrelevant wenn das Test Programm auch schon nur NaN ausgibt.

Und es ist ein D1 Mini v3 (wenn das eine Rolle spielt):
https://www.az-delivery.de/products/d1-mini-v3

von Stefan F. (Gast)


Lesenswert?

Niklas S. schrieb:
> Das gezeigte Sketch wurde auf beide Mikrocontroller geflashed.
> Auf dem NodeMCU gibt es damit "korrekte" Werte, auf dem D1 Mini nur
> "NaN".

Das legt einen Hardwarefehler nahe. Eventuell funktioniert deine 
Schaltung auf dem NodeMCU nur mit Glück weil du knapp an irgendeiner 
Grenze vorbei geschrammt bist.

Zeige mal den Schaltplan und Fotos vom Aufbau. Ich interessiere mich 
besonders für den Verlauf der Stromversorgung.

von Niklas S. (wniklas)


Angehängte Dateien:

Lesenswert?

Einen Hardwarefehler schließe ich aus, da ich 2 D1 Mini getestet habe.

Ich habe ein Fritzing erstellt, mein D1 Mini v3 verfügt über einen Mikro 
USB Anschluss, darüber bezieht er (zur Zeit) auch Strom (über das 
MacBook).

Hilft das?

: Bearbeitet durch User
von Axel S. (a-za-z0-9)


Lesenswert?

Niklas S. schrieb:
> Einen Hardwarefehler schließe ich aus, da ich 2 D1 Mini getestet habe

Dieses folgt nicht aus jenem.

Auch der Betreff ist falsch. Dein DHT22 gibt gar nichts aus.

Die DHT Library (readTemperature() & Co) liefert Mist. Es ist noch nicht 
mal raus, was für Mist das ist. Wahrscheinlich alles Einsen oder alles 
Nullen. Oder was anderes. Der DHT22 liefert ja ein Fixkommaformat, das 
die Library irgendwie nach float konvertiert. Mußt du halt debuggen. 
Software schreiben ist mehr als nur Copy & Paste.

von Stefan F. (Gast)


Lesenswert?

Niklas S. schrieb:
> Hilft das?

Ja hilft. Das räumt einige meiner Zweifel aus, was falsch sein könnte.

Den Fehler sehe ich leider nicht.

von Phantomix X. (phantomix)


Lesenswert?

Mal ins Blaue geschossen: Im Boardmanager von NodeMCU auf Wemos D1 
umgestellt? Die Pin assignments (d.h. welcher ESP8266-Pin nun "D5" 
heißt) sind unterschiedlich

von Niklas S. (wniklas)


Lesenswert?

Ja, das hätte ich natürlich erwähnen können.
Im Boardmanager wurde ein D1 Mini ausgewählt.

Ich habe auch verschiedene Pins getestet sowie verschiedene "Notationen" 
(D5 vs 14)

von Stefan F. (Gast)


Lesenswert?

Phantomix X. schrieb:
> Die Pin assignments (d.h. welcher ESP8266-Pin nun "D5"
> heißt) sind unterschiedlich

Bei beiden ist D5 = GPIO14.

von Phantomix X. (phantomix)


Lesenswert?

OK gut, dann nehme ich das zurück und behaupte das Gegenteil. Hatte es 
jetzt nicht extra nachgeprüft, aber bin schonmal in diese Falle getappt

von PittyJ (Gast)


Lesenswert?

Bei nur 3 Leitungen kann man doch mal ein Oszilloskop anschliessen.
Dann sieht man, ob überhaupt irgendetwas passiert.

von Ernst (Gast)


Lesenswert?

Ich nehme an, dass es in der Zwischenzeit läuft. Ich hatte ähnlich 
Probleme.
Hast du schon probiert an Stelle von: #define DHTPIN D5
folgendes einzugeben: #define DHTPIN 14
Gruss Ernst

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.