In diesem Tutorial möchte ich das Temperatursensorshield DS18B20 für den ESP-01S vorstellen.
Bezug
Das Shield kann für ca. 1,8 € inkl. Versandkosten bei ebay.de* bestellt werden.
Hinweis von mir: Die mit einem Sternchen (*) markierten Links sind Affiliate-Links. Wenn du über diese Links einkaufst, erhalte ich eine kleine Provision, die dazu beiträgt, diesen Blog zu unterstützen. Der Preis für dich bleibt dabei unverändert. Vielen Dank für deine Unterstützung!
Technische Daten
- Betriebsspannung 3,7V bis max. 12V
- Temperatur Messbereich -55 °C und +125 °C
- Abmaße 25 mm x 21 mm
Aufbau des Shields
Schaltung
Die Schaltung ist relativ einfach, denn der ESP-01s wird lediglich „nur“ auf den Sockel gesteckt und das Shield mit Spannung versorgt.
Beim Aufstecken sollte man auf den kleinen weißen Pfeil achten, dieser gibt die Richtung vor wie der ESP-01s aufgesteckt wird.
Quellcode
Für den nachfolgenden Sketch benötigt man 2 zusätzliche Bibliotheken
- DallasTemperature
- OneWire
Diese beiden Bibliotheken werden über den Bibliotheksverwalter installiert.
#include <ESP8266WiFi.h> #include <ESP8266WebServer.h> #include <DallasTemperature.h> #define ONE_WIRE_BUS 2 //Sensor DS18B20 am digitalen Pin 2 OneWire oneWire(ONE_WIRE_BUS); // //Übergabe der OnewWire Referenz zum kommunizieren mit dem Sensor. DallasTemperature sensor(&oneWire); const char* ssid = ""; //SSID aus dem Router const char* password = ""; //Passwort für den Zugang zum WLAN ESP8266WebServer server(80); //Port auf welchem der Server laufen soll. void setup() { delay(10); //10ms. Warten damit die Seriele Kommunikation aufgebaut wurde. WiFi.begin(ssid, password); //Initialisieren der Wifi Verbindung. while (WiFi.status() != WL_CONNECTED) { //Warten bis die Verbindung aufgebaut wurde. delay(500); } server.on("/tempsensor", callTempsensor); server.begin(); // Starten des Servers. sensor.begin(); //Starten der Kommunikation mit dem Sensor } void loop() { server.handleClient(); } void callTempsensor(){ sensor.requestTemperatures(); String celsiusValue = String(sensor.getTempCByIndex(0)); String fahrenheitValue = String(sensor.getTempFByIndex(0)); String jsonRespond = "{\"celsius\": \""+String(celsiusValue)+"\" , \"fahrenheit\": \""+String(fahrenheitValue)+"\" }"; server.send(200, "application/json", jsonRespond); }
Wenn man nun das Sketch auf dem ESP-01s kopiert hat und den Mikrocontroller auf das Shield gesteckt hat muss man nun noch die Betriebsspannung anlegen. Ich nutze dazu eine 9V Batterie, welche über ein Power-Modul auf 5V heruntergeregelt wird.

Nachdem nun die Spannung anliegt versucht sich der ESP-01S in das WLAN Netzwerk anzumelden. Wenn man nun die IP-Adresse des ESP-01S in einem Browser eingibt, dann öffnet sich folgende Seite:

Hallo Stefan,
Ich befasse mich seit gut 1 Jahr mit den Arduinos und den China Klons. Habe schon diverse Sachen zum Laufen gebracht programmiert über die Arduion IDE. Ich bekomme aber den Sketch esp-01sTemperatursensorshield DS18B20 von dir einfach nicht zum Laufen. Habe mir dein Video auf YouTube schon zigfach angesehen, habe auch nach meiner Ansicht alles so gemacht wie du. Der esp 01s meldet sich im WLAN und ich denke die in den WLANeinstellungen erscheinende Ip soll ich im Browser eingeben-aber der http server läst sich nicht aufrufen.
Kompilieren und Hardware alles ohne Probleme!
Du hast im Video auch den Sketch super erklärt- aber ich bekomme es nicht zum Laufen. Vielleicht findest du ja die Zeit mal zu antworten.
Vorerst schöne Ostern.
Es grüßt Hendrik
Hallo Hendrik,
sende mir doch einfach mal deinen Sketch als ZIP an die Adresse info@draeger-it.blog und ich schaue mir diesen einmal an. Manchmal steck der Teufel in einem kleinen Detail was man nicht sofort sieht.
Dir und deiner Familie auch ein Frohes Osterfest.
Gruß,
Stefan
Hallo Forum
mein letzter Thread ist gerade 1.5 Jahre her. Seither habe ich die einige andere Temp-Sensoren eingesetzt, da mich die gemessenen Resultate des DS18B20 auf dem ESP01-Shield überhaupt nicht befriedigten. Grund für die Fehler war die Wärme-Entwicklung des Shields zusammen mit dem ESP01. Der DS18B20 ist alleine sehr genau (-/+0.5°C). Dabei wäre das Modul mit dem Spannung-Wandler 3.3V so praktisch für einfache Single-Messungen der Temperatur inklusive Übertragung via MQTT.
Nun habe ich mich dem Thema nochmals angenommen und den Sensor abgeklemmt und via einfaches 3-Pol-Steckerchen mit einer 20-30 cm langen Leitung versehen: Nun funktioniert alles einwandfrei mit bester Genauigkeit. Und darunter gerade noch eine USB-C Buchse montiert für die 5V Versorgung! Die Löterei ist etwas knifflig, aber es lohnt sich.
Andreas
Hi,
eine sehr schöne Lösung, vielen Dank für das Teilen deiner Erfahrung.
Gruß
Stefan
Vielen Dank für deine ruhigen und fundierten Erläuterungen im Video und den hervorragenden Beschreibungen hier auf dieser Seite.
Funktionierte (fast) auf Anhieb, lediglich bei der Adresse 192/…/tempsensor habe ich“ /tempsensor“ übersehen. Ohne diesen Zusatz funktioniert es natürlich nicht. Hinweis für Forum: die genaue Adresse 192/.. kann im Router unter „Angeschlossene Geräte“ eruiert werden.
Mit dem ESP01-Programmer habe ich zuerst einen ESP01 zerschossen, da die TX>RX-Leitung 5V lieferte, was der ESP01 nicht goutierte. Ich habe dann einen USBtoTTL CP2102 genommen und Flash und Rst auf GND geschaltet. Funktioniert tip top. Man könnte wohl auch einen Converter dazwischenschalten.
Mit deinem einfachen Sketch kann ich nun weitere IoT-Anwendungen entwickeln. Danke!
Hallo Andreas,
Vielen Dank für deinen Kommentar es freut mich sehr das dir dieser Beitrag gefallen hat.
Gruß, Stefan Draeger