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)
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-gpioUpdate (03.05.2015)
sudo modprobe w1-therm
Raspbian Betriebssystems ab Kernel 3.18 erfordert jetzt die Aktivierung des Device Tree Overlay für 1-wire:
sudo vi /boot/config.txtUnd folgendes hinzufügen
dtoverlay=w1-gpio,gpiopin=4,pullup=onDiese Module sollte am Besten auch direkt beim Start des Pi immer geladen werden
sudo vi /etc/modulesUnd folgendes hinzufügen
w1-gpioNach dem erfolgreichen Anschließen und Laden der Module sollte der Sensor jetzt zur Verfügung stehen. Zu finden unter
w1-therm
/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