Samstag, 31. Januar 2015

Raspberry Pi - Temperatursensor DS18B20

An dem Raspberry Pi kann man relativ simpel einen Temperatursensor ansteuern. Ich habe dafür bei ebay einen Digitaler Temperatursensor DS18B20 Wasserdicht gekauft (Kosten ca. 2 €).

Update 20.02.2022: Mittlerweile gibt es den DS18B20 als digitales Temperatursensor-Modulplatinen-Kit, somit entfällt das manuelle setzen eines 4,7k Ohm Widerstand. Die Kosten liegen bei ca. 10 EUR.

Der DS18B20 Sensor besitzt drei Kabel:

  • Rot (VCC / 3,0V bis 5,5V)
  • Weiß (DATA / 1-Wire)
  • Schwarz (GND)
Der Messbereich liegt bei -55°C und +125°C und  die Messgenauigkeit bei ca. ± 0,5°C.

Durch einen eindeutigen Code (ID) können mehrere Temperatursensoren parallel angeschlossen werden.

 
Der Sensor muss via GPIO angeschlossen werden (General Purpose Input/Output)).
  • Rot (VCC) an Pin 1 3,3V
  • Weiß (DATA) an den GPIO 4 (Pin 7)
  • Schwarz GND Pin 6
  • Zwischen VCC 3,3V und DATA GPIO 4 muss ein 4,7k Ohm Widerstand verwendet werden.

Um den Sensor ansprechen zu können, müssen folgende Module geladen werden
sudo modprobe w1-gpio
sudo modprobe w1-therm
Update (03.05.2015)
Raspbian Betriebssystems ab Kernel 3.18 erfordert jetzt die Aktivierung des Device Tree Overlay für 1-wire:
sudo vi /boot/config.txt 
Und folgendes hinzufügen
dtoverlay=w1-gpio,gpiopin=4,pullup=on 
Diese Module sollte am Besten auch direkt beim Start des Pi immer geladen werden
sudo vi /etc/modules
Und folgendes hinzufügen
w1-gpio
w1-therm
Nach dem erfolgreichen Anschließen und Laden der Module sollte der Sensor jetzt zur Verfügung stehen. Zu finden unter
/sys/bus/w1/devices/xx-xxxxxxxxxxxx/w1_slave


t=21437 / 1000 = 21,437 ° C

Bash-Script (www.shemel.de/download/raspberry/temp-anzeigen.sh) zum Auslesen der Temperatur (sudo apt-get install bc):

#!/bin/sh
# Temperatur von Sensor auslesen
# (c) Sebastian Hemel


temp=$(cat /sys/bus/w1/devices/28-00000511590a/w1_slave | sed -n "s/.*t=\(.*\)/\1/p")
temp=`echo "scale=3; $temp / 1000" | bc`
printf "Aktuelle Temperatur: %05.2f°C\n" $temp


Scripte ausführbar machen mit chmod +x temp-anzeigen.sh .

Update 05.12.2020: https://sebastianhemel.blogspot.com/2020/12/raspberry-pi-temperatursensor-ds18b20.html

Bash-Script (www.shemel.de/download/raspberry/temp.sh) zum Auslesen der Temperatur, Temperatur und Tagdesdatum + Uhrzeit in Datei schreiben und auf einen FTP-Server (sudo apt-get install ncftp) hochladen:

#!/bin/sh
# Temperatur von Sensor auslesen und per FTP hochladen
# (c) Sebastian Hemel


temp=$(cat /sys/bus/w1/devices/28-00000511590a/w1_slave | sed -n "s/.*t=\(.*\)/\1/p")
temp=`echo "scale=3; $temp / 1000" | bc`
#printf "Aktuelle Temperatur: %05.2f°C\n" $temp >> temp.txt

rm temp.txt
printf "" >> temp.txt
printf "%05.2f" $temp >> temp.txt
printf " Grad Celsius - " >> temp.txt
date +%d.%m.%Y' '%H:%M >> temp.txt
printf "" >> temp.txt

sleep 1
ncftpput -f /home/pi/ftp.cfg /temp /home/pi/temp.txt


Aufbau der ftp.cfg (www.shemel.de/download/raspberry/ftp.cfg) Datei:
#host HOST-IP
host webhostingXX.1blu.de

#user NUTZERNAME
user ftpXXXXXX-xxin

#pass PASSWORT
pass xxx123


Möglicher Eintrag für die "crontab -e" (upload alle 5min):

*/5 *    *   *   *     /home/pi/temp/temp.sh >/dev/null 2>&1

Keine Kommentare:

Kommentar veröffentlichen