===== Arduino - Temperaturmessung mit DS18S20 =====
Für Außentemperaturmessungen habe ich gute Erfahrungen mit dem wasserfesten Sensor DS18S20 gemacht. Dabei handelt es sich um einen 1-wire-Anschluss mit drei Kontakten. Mehrere Sensoren können parallel damit betrieben werden.
{{:ds18b20.jpg?200 |}}
===Schaltung:===
Der Sensor wird an 3.3V (rot), GND (schwarz) und GPIO4 (gelb) angeschlossen. Zwischen 3.3V und GPIO4 wird ein Widerstand von 4.7 k angeschlossen.
{{ :ds1820b-anschluss.png?400 |}}
===Software:===
**1. Vorbereitung für den 1-Wire-Anschluss:**
sudo modprobe w1-gpio
sudo modprobe w1-therm
Prüfen, ob alles geklappt hat:
lsmod
Nun Module dauerhaft beim Start laden:
sudo vi /etc/modules
w1_gpio
w1_therm
Sensor-ID lesen
ls /sys/bus/w1/devices/
28-041750b734ff <----
w1_bus_master1
Anzeige der Sensordaten in der Bash:
cat /sys/bus/w1/devices/28-041750b734ff/w1-slave
4e 00 4b 46 7f ff 0c 10 38 : crc=38 YES
4e 00 4b 46 7f ff 0c 10 38 t=4875
Die Angabe t=4875 ist die Temperatur in milliCelsius.
**2. Temperaturabfrage mit Python**
#!/usr/bin/python3
# coding=utf-8
import os, sys
def aktuelleTemperatur():
# 1-wire Slave Datei lesen
file = open('/sys/bus/w1/devices/28-041750b734ff/w1_slave')
filecontent = file.read()
file.close()
# Temperaturwerte auslesen und zurückgeben
stringvalue = filecontent.split("\n")[1].split(" ")[9]
temperature = float(stringvalue[2:]) / 1000
return(temperature)
# Temperatur ausgeben
print("Temperatur = {0:0.3f} C".format(aktuelleTemperatur())