ds18s20
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.
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.
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())
ds18s20.txt · Last modified: 2024/03/11 13:18 by walter