Temperatur-Sensor DS18B20
Das Beispielprogramm liest den Temperatur-Sensor zyklisch aus und zeigt den Messwert auf dem Display an.
Zusätzlich werden die Messwerte auch über die serielle Schnittstelle ausgegeben.
1-Wire bzw. One-Wire oder Eindraht-Bus beschreibt eine serielle Schnittstelle der Firma Dallas Semiconductor Corp. (heute Maxim Integrated)
In unserer Schaltung verwenden wir drei Leitungen:
- VDD
- DQ
- GND
VDD wird an +3,3V angeschlossen. DQ nutzt den GPIO13 als Datenbusleitung.
Weitere Infos zum 1-Wire-Bus: https://de.wikipedia.org/wiki/1-Wire
Datenblatt des Temperatursensors: https://datasheets.maximintegrated.com/en/ds/DS18B20.pdf
Der Temperatur-Sensor DS18B20 von Maxim wird über einen 1-Wire-Bus an den TTGO angeschlossen:
Aufbau auf einem Steckbrett (Dieses Bild nicht als Referenz für die Anschlüsse am TTGO verwenden - die Perspektive ist etwas verzerrt)
Für die Nutzung des Temp-Sensors benötigt man zwei Librarys. Diese kann man über die Bibliotheks-Verwaltung installieren:
OneWire Libary
siehe auch: https://www.pjrc.com/teensy/td_libs_OneWire.html
DallasTemperature Libary
siehe auch: https://github.com/milesburton/Arduino-Temperature-Control-Library
Die OneWire Library ist für die Datenkommunikation über den 1-Wire-Bus zuständig. Die DallasTemperature Libary übernimmt die direkte Kommunkation mit dem Temperatursensor und liefert die aufbereitete Messwerte
Das Sensor-Test-Programm findet in unserem Github-Repository:
https://github.com/DO6FP/hamgroup_lorawan/tree/main/code/LoRaWAN_Temperatur_DS18B20_Test
Wenn dieses Testprogramm läuft und die aktuellen Temperaturwerte auf dem Display und über die serielle Schnittstelle ausgibt ist die Hardware für den LoRaWAN-Temperatur-Node fertig aufgebaut.
Erweiterung:
Für die Darstellung der Temperaturwerte als Kurve in einem Diagramm kann man auch den Funktionsplotter der Arduino-IDE verwenden:
Dazu muss man im Quellcode eine kleine Änderung durchführen:
Serial.print(temperatur); // Temperaturwert über die serielle Schnittstelle ausgeben Serial.println("ºC"); |
in
Serial.print(temperatur); // Temperaturwert über die serielle Schnittstelle ausgeben Serial.println( ); |
ändern. Über die serielle Schnittstelle darf nur der Messwert ohne "ºC" ausgegeben werden.
Den Funktionsplotter ruft man in der Arduino IDE dann unter Werkzeuge -> Serieller Plotter auf.
Den LoRaWAN-Node mit dem Temperatursensor auf der Basis dieser Schaltung werden wir beim nächsten Workhop-Termin am 17.01.2022 in Betrieb nehmen.
Weitere Informationen zum Temperatur-Sensor DS 18B20:
https://beelogger.de/sensoren/temperatursensor-ds18b20
https://randomnerdtutorials.com/esp8266-ds18b20-temperature-sensor-web-server-with-arduino-ide/
https://makesmart.net/ds18b20-temperaturfuhler-esp8266-d1-mini/
...