Temperartursensor DS18B20 an NodeMCU ESP8266 zeigt keine Werte

Hallo,
leider muss ich mich in die Reihe diverser Vorredner einreihen, auch ich versuche erstmalig und als erstes Projekt einen DS18B20 TempSensor anzuschließen und es klappt nicht.

Mein Code sieht aus wie folgt:

#include <OneWire.h>
#include <DallasTemperature.h>

#define ONE_WIRE_BUS 4   //GPIO Pin 1-Wire Bus
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

void setup() {
  Serial.begin(115200);
  sensors.begin();
}

void loop() {
  sensors.requestTemperatures(); 
  float temperatureC = sensors.getTempCByIndex(0);
  float temperatureF = sensors.getTempFByIndex(0);     
  Serial.print(temperatureC);
  Serial.println("ºC");
  Serial.print(temperatureF);
  Serial.println("ºF");
  delay(5000);
}

Und meine Schaltung sieht aus wie folgt:

Und auf dem Serial Montior erscheint abwechselnd jeweils in einer neuen Zeile
-196.60 F
-127.00 C

Inzwischen bin ich etwas verzweifelt. Einige Beispiele in der Arduino IDE habe ich probiert, bspw. "Blink", das klappt.
Ich habe fünf Sensoren, bisher hat keiner eine Reaktion gezeigt. Die Spannung auf dem Breadboard habe ich durchgemessen, es sind 3.3V, der Widerstand passt auch, habe ich auch durchgemessen.

Kann mir bitte jemand helfen?
Danke SK

Hallo @sweverkate

herzlich willkommen im Arduino-Forum.

Wenn man bei der Analyse von so etwas behilflich sein soll, dann brauchst es sehr präzise Detailangaben.

Was für einen Widerstandswert hast du gemessen?

Wie sehen die Enden der Sensorleitungen aus ?
Ist das blanke Kupferlitze die du in das Breadboard "gestopft" hast?
Das gibt höchstens Wackelkontakt. Da solltets du Jumperwire dranlöten.
Irgendwie "drumherum gezwirbelt oder mit Tesa angeklebt ist so dermaßen unzuverlässig
das das nicht funktioniert.

Poste mal ein Foto wie die Enden der DS18B20-Sensorkabel aussehen. Also ein Foto im nicht angeschlossenen Zustand.

Mache noch ein Foto genau senkrecht von oben, so dass leicht erkennbar wird wo die Jumperwire eingesteckt sind.

Moin!

Die Werte entsprechen den DEVICE_DISCONNECTED_ ... Werten.

// Error Codes
#define DEVICE_DISCONNECTED_C -127
#define DEVICE_DISCONNECTED_F -196.6
#define DEVICE_DISCONNECTED_RAW -7040

Bist Du sicher, dass Deine Datenleitung am richtigen Pin angeschlossen ist, bzw. "4" dem verwendeten Pin entspricht?

Anbei die verschiedenen Fotos.

Und hier der Pinout

Ehrlich gesagt bin ich mir ziemlich sicher, dass ich an 4 angeschlossen habe.

Vielen Dank für eure Hilfe!
S

Aber wie von @StefanL38 vermutet, deine Anschlüsse des Sensors geben keinen stabilen Kontakt.
Die musst du mit Jumperkabel oder passenden Stiften verlöten.

// DS18B20 -----------------------------------------------------------------------------

  temp_ds18b20.begin();

  int i = temp_ds18b20.getDS18Count();    // lesen der Anzahl der angeschlossenen Temperatursensoren.
  if (i < 3) {
    Serial.print("nur " + String(i) + " DS18B20 erkannt");
    Serial.println();
  }

  // -------------------------------------------------------------------------------------

Diese Abfrage im setup ist mitunter hilfreich und hilft Kontakt-/Ausfallprobleme zu erkennen.

cu

Ist am GPIO4 3.3V?
UND Gib mall Link zum DS

Und vor allem den Widerstand anders einbauen, nur so einstecken hat meistens kein Kontakt

Anbei der Link zum DS18B20, hatte ich auch bei AZ Delivery gekauft.

Die Anschlüsse der Sensoren hatte ich auch schon mal mit WAGO Klemmen an Jumperkabel angeschlossen und dann die gleiche Verkabelung vorgenommen.
Mache ich nachher nochmal, um ganz sicher zu gehen.

Wieder Danke!

Zurück damit, und streiche AZ aus deiner EInkaufliste

  1. Sind zu teuer
  2. Sehr oft verkaufen Schrott, B Ware was sehr oft nicht funktioniert

Außerdem versucht die Firma AZ alle möglichen Allerweltsbezeichnungen als Marken schützen zu lassen wahrscheinlich um dann von anderen Shops Abmahngeld zu kassieren.

Das ist wohl rechtlich zulässig aber moralisch finde ich das persönlich höchst verwerflich.
Deshalb kaufe ich selbst nichts mehr bei AZ.

Ich habe 5 Sensoren gekauft, 3 getestet und bei keinem Sensor ein Signal bekommen.

Diesen Sketch habe ich auch noch drüber laufen lassen:

#include <OneWire.h>
#include <DallasTemperature.h>
#include <ESP8266WiFi.h>

#define ONE_WIRE_BUS D2 // Pin, an dem der DS18B20 angeschlossen ist

OneWire oneWire(ONE_WIRE_BUS);            // Initialisiere OneWire-Objekt
DallasTemperature sensors(&oneWire);      // Initialisiere DallasTemperature-Objekt

void setup() {
  Serial.begin(115200);                   // Serielle Kommunikation starten
  delay(1000);                            // Kurze Pause, um das Serielle Monitor zu initialisieren

  // Verbinde mit WLAN (optional)
  WiFi.begin("SSID", "PASSWORD");         // Ersetze mit deinen WLAN-Daten
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Verbindung zum WLAN wird hergestellt...");
  }
  Serial.println("Mit WLAN verbunden");

  sensors.begin(); // Initialisiere den DS18B20 Sensor
  Serial.println("Warte auf Sensoren...");
}

void loop() {
  Serial.println("Überprüfe, ob DS18B20 Sensor verbunden ist...");
  
  // Scanne nach angeschlossenen Sensoren
  int sensorCount = sensors.getDeviceCount();
  
  if (sensorCount == 0) {
    Serial.println("Kein DS18B20 Sensor gefunden!");
  } else {
    Serial.print("Sensor(en) gefunden: ");
    Serial.println(sensorCount);

    // Versuche, die Temperatur des Sensors zu lesen
    sensors.requestTemperatures();
    float temperature = sensors.getTempCByIndex(0);  // Liest die Temperatur des ersten Sensors

    if (temperature == DEVICE_DISCONNECTED_C) {
      Serial.println("Fehler: DS18B20 Sensor ist nicht erreichbar!");
    } else {
      Serial.print("Temperatur: ");
      Serial.print(temperature);
      Serial.println(" °C");
    }
  }

  delay(5000);  // Warte 5 Sekunden bis zur nächsten Überprüfung
}

Kein Sensor wird gefunden.
Ich schicke die Dinger jetzt zurück.

Vielen Dank erstmal!
S

MIR fehlt
Onewire. h
genau genommen

#include <OneWire.h>

Wo genau fehlt das?
Sorry, bin ein echter Anfänger.

Sorry sehe gerade hast das drinnen als erstes, am Tablet habe das übersehen.

Okay, Danke. Dachte gerade, wir haben den Fehler dann doch gefunden.

Vielen Dank nochmal an alle Beitragenden!
S

Passt der Widerstand? Habe gelesen da soll ein 4.7k Ohm rein.

Für kurze strecken und wenige Sensoren soll 4.7k sein, bei den 3m und 3 Sensoren ist das noch ok , erst wen der BUs fängt an zu Spinnen sollte man langsam runter gehen jedoch nicht unter 2k habe mall gelesen. Der TO testet aber erst nur ein Sensor.

Warum fragst du?

Wenn Du einen Lötkolben hast:
Löte die Kabel an das Ende von den Beinchen von deinen Widerständen an und knipse die auf einer Länge von ca. 1,5cm ab.

Normalerweise macht man das mit Lötstiften aus Stiftleisten, aber die wirst Du nicht haben...

Wenn Du keinen Lötkolben hast, dann kannst auch versuchen von einem Widerstand jeweils ein längeres Stück um die verzinnten Drähte zu wickeln, auf ca. 1,5 cm abzuschneiden und dann ins Steckbrett zu stecken.
Aber die Drähte so machen keinen Kontakt.

Du hast hier 3 Fehlerquellen. Da wird ständig einer der Drähte keinen Kontakt haben.