DS18B20 Temperatursensor am ESP8266 mit 2 AA Batterien verwenden

Veröffenticht am 09.02.2017    von     in der Kategorie ESP8266     bisher 8 Reaktionen    Zuletzt überarbeitet am 17.07.2023


ESP8266-12E Modul mit einem DS18B20 Sensor in einer Batteriehalterung Dieser Artikel befasst sich mit der Temperaturermittlung über einen DS18B20 Sensor an einem ESP8266 Modul. Zur Speicherung und weiteren Verwendung werden die Daten über einen Request an ein PHP-Skript übergeben und mit diesem in einer Datenbank gespeichert. Eine zukünftige Verwendung der Temperaturdaten könnte zum Beispiel wie im folgenden Video demonstriert, die Abfrage über ein Alexa Skill mittels eines Amazon Echo oder Echo Dot sein.

 

Projekt Demonstration

 

Bauteile

  • 1 ESP8266 Version 12E – ich habe mich für dieses Modell entschieden, da man diese Version im Gegensatz zur Version 01 in den Tiefschlaf versetzten kann. Gegen ein NodeMCU Board habe ich mich wegen der größeren Abmessung und den durch die Bauteile vorhandenen höheren Stromverbrauch entschieden.
  • 1 DS18B20 Temperatursensor
  • 2 Widerstände 10 Kiloohm
  • 1 Widerstand 4,7 Kiloohm
  • 1 BC 341 Batteriehalter – die einzelnen Kontakte lassen sich ohne großen Aufwand aus dem Gehäuse entfernen und gut für unsere Anforderungen anpassen.
  • diverse Kleinteile: Kupferdraht, Buchsenleiste, Lochrasterplatine

 

Anpassung Batteriehalter

  • Batteriebox im Lieferzustand

Aufbau

Neben der Stromversorgung des ESP8266 und des DS8266 über VCC und GND wird der Sensor an GPIO12 angeschlossen. Der 4,7 Kiloohm Widerstand wird zwischen der VCC- und der Datenleitung geschaltet.Die 10 Kiloohm Widerstände werden zwischen GPIO15 Port zu GND (Minus) und CH_PD, bei manchen Modellen auch EN zu VCC (Plus) geschaltet. Damit der Chip aus dem Tiefschlaf aufgeweckt werden kann, muss der Reset und GPIO16 Port verbunden werden.

 

 

Die fritzing Projektdatei habe ich für dich zum Download bereitgestellt.

 

Software

Die Programmierung des ESP8266 erfolgt über die Arduino IDE mit hinzugefügten ESP8266-Boardverwalter. Zur Ansteuerung bzw. dem Auslesen des Temperatursensors greife ich auf die auf GitHub veröffentlichte Bibliotheken <OneWire.h> und <DallasTemperature.h> zurück. Die beiden Bibliotheksordner müssen in den Ordner /libraries der Arduino IDE kopiert werden.

 

Programm

Anpassungen

Im Bereich //Konstantendefinition musst du deine Daten für NETZWERKNAME, WLAN-SCHLÜSSEL und IP-ODER-WEBADRESSE eintragen. Der Wert serverPort=80 muss eventuell auch angepasst werden. Der Dateiname für das aufgerufene PHP-Skript hinterlege ich erst im Bereich // Aufbau des URL-Request.

Die Befehle zur Ausgabe über die serielle Schnittstelle kann man entfernen. Zuvor solltest du im Bereich //Batteriespannung messen den Korrektur anpassen. Hierzu vergleiche den ausgegebenen Wert mit der tatsächlichen, von dir am Chip gemessenen Spannung.

 

Das PHP-Skript zur Speicherung in einer MySQL Datenbank könnte wie folgt aussehen.

 

Anmerkung zur Laufzeit

Mit den verwendeten 2700 mAH Akkus komme ich bei einer viertelstündigen Messung mit Datenübertragung auf eine Laufzeit von aktuell vier Tagen und 2 Stunden. Nicht gerade viel, allerdings kann man die Laufzeit bei entsprechender Verringerung der Messanzahl bzw. Verlängerung des Tiefschlafzyklus bestimmt etwas verlängern. Oder man wechselt auf eine andere Stromquelle (18650 Lithium-Ionen Akkus), wie ich es für ein anderes Projekt in Planung habe.

 



Transparenz-Hinweis:

Die auf dieser Seite verwendeten Produktlinks sind sogenannte Affiliate-Links zu einem Partnerprogramm. Für dich entstehen dadurch keine Mehrkosten, ich erhalte durch deinen Kauf über den Link eine kleine Provision.


Wolfgang Raab – Betreiber von webnist.de

Mein Name ist Wolfgang, ich beschäftige mich nun schon seit 1985 mit der EDV und im Besonderen mit der Software- und Webentwicklung.

Auf diesem Blog schreibe ich über Dinge, die mich begeistern, beschäftigen und ich der Meinung bin, es könnte für andere interessant und hilfreich sein.

Als großer Fan des Raspberry Pi finde ich es spannend, wie man den kleinen Computer in Verbindung mit dem IoT und Smart Home nutzen kann. Deshalb behandeln viele Beiträge auch genau dieses Thema.

Ich bin ein leidenschaftlicher Leser und Fotograf. Wenn ich nicht gerade in einem spannenden Roman versinke, bin ich oft unterwegs, um die Schönheit der Welt mit meiner Kamera einzufangen und zu teilen.

Weitere Infos und Fotos findest du auf einem der folgenden Plattformen.






Mehr erfahren?

Besuche die "About"-Seite meines Blogs und finde heraus, wie du mit mir in den Bereichen Web- und Mobile-Programmierung und Raspberry Pi zusammenarbeiten kannst. Hier beginnt deine digitale Reise.


Unterstützen

Dieser Beitrag hat dir gefallen und konnte dir bei deinem Projekt oder Problem behilflich sein? Dann würde ich mich sehr freuen, wenn du dich mit einer noch so kleinen Spende erkenntlich zeigen möchtest.




  • Gordon Lehmann schrieb am 4. Mai 2019:

    Erst einmal spitze Programmierung.
    Doch will die Arduino IDE den Code nicht akzeptieren.

    Code/

    Alexa-Temp-Abfrage:21:1: error: ‘WiFiClient’ does not name a type
    WiFiClient client;
    ^
    /Users/gordonlehmann/Documents/Arduino/Alexa-Temp-Abfrage/Alexa-Temp-Abfrage.ino: In function ‘void setup()’:
    Alexa-Temp-Abfrage:34:1: error: ‘WiFi’ was not declared in this scope
    WiFi.begin(ssid, pass);
    ^
    Alexa-Temp-Abfrage:37:25: error: ‘WL_CONNECTED’ was not declared in this scope
    while (WiFi.status() != WL_CONNECTED) {
    ^
    Alexa-Temp-Abfrage:45:22: error: ‘WL_CONNECTED’ was not declared in this scope
    if (WiFi.status() == WL_CONNECTED) {
    ^
    Alexa-Temp-Abfrage:58:6: error: ‘client’ was not declared in this scope
    if (!client.connect(serverIp, serverPort)) {
    ^
    Alexa-Temp-Abfrage:97:8: error: ‘Technik’ was not declared in this scope
    url += Technik;
    ^
    Alexa-Temp-Abfrage:105:1: error: ‘client’ was not declared in this scope
    client.print(String(“GET “) + url + ” HTTP/1.1\r\n” +
    ^
    exit status 1
    ‘WiFiClient’ does not name a type

    /Code

    Was läuft da falsch?
    Vllt ist der Fehler ja schon aufgefallen und es gibt eine Lösung.
    und wo packe ich die php Datei hin???

    Gruß Gordon

    • Wolfgang schrieb am 27. Mai 2019:

      Hallo Gordon,
      eventuell hat sich dein Problem schon gelöst. Leider komme ich erst heute zu einer Beantwortung deiner Frage. Die Fehlermeldung lässt eine fehlende Library vermuten. In der ersten Zeile bindest du die notwendige Library in das Programm ein #include . Damit die Einbindung möglich ist, musst du in der Arduino IDE den ESP8266 in die Boardverwaltung einbinden.
      Füge hierzu unter Datei->Voreinstellungen->Zusätzliche Boardverwalter-URLs folgenden Link ein:
      http://arduino.esp8266.com/stable/package_esp8266com_index.json
      Danach installierst du über den Boardverwalter, zu finden unter Tools->Board->Boardmanager, das ESP Paket.
      Danach müsste dein Problem im Programmcode behoben sein.

      Die PHP-Datei packst du auf Rechner / Server, der die Speicherung der enpfangenen Daten in der Datenbank übernimmt.
      Viele Grüße
      Wolfgang

  • Thomas schrieb am 1. Dezember 2018:

    Hallo,
    in der Fritzing Darstellung ist der DS18B20 nicht korrekt angeschlossen. Die Verbindung vom GPIO12 muss auf den Anschluss in der Mitte und nicht auf den rechten.
    Thomas

    • Wolfgang schrieb am 31. Dezember 2018:

      Hallo Thomas,
      vielen Dank für Deinen Hinweis. Da ist mir tatsächlich ein Fehler unterlaufen. Die Daten habe ich ausgetauscht.
      Viele Grüße
      Wolfgang

  • Rudi schrieb am 20. September 2018:

    ist an der kurzen Laufzeit der DS18B20 schuld? Ist die LED auf dem esp ausgelötet? Ich komme rechnerich auf ca. 300 Tage ohne den DS18DS20. Wenn der soviel braucht, dann muss ich mir was anderes einfallen lassen…

    • Wolfgang schrieb am 20. September 2018:

      Hallo Rudi,
      die meiste Energie geht für die WLAN-Verbindung drauf. Eine Verlängerung der Laufzeit kann man durch eine Verringerung der Messungen und deren Übertragung erreichen.
      Viele Grüße
      Wolfgang


Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Notwendige Felder sind mit * markiert.

 

Kleiner Hinweis, alle Kommentare werden moderiert.

Dies bedeutet, der Kommentar wird vor der Veröffentlichung durchgelesen und von mir geprüft. Auch behalte ich mir vor, jeden Kommentar zu löschen, der nicht direkt auf das Thema abzielt oder nur den Zweck hat, Leser oder Autoren herabzuwürdigen.

Entdecke die Welt von Webnist.de

Erfahre mehr über die Hintergründe meines Blogs und wie ich dich bei deinen digitalen Projekten unterstützen kann.

Aktuelles Video auf YouTube

Beschreibung der Verwendung eines TTP223B Touch Sensors am GPIO Port des Raspberry Pi mit Python.