Der groÃ?e Vorteil des Raspberry Pi – ich hatte es glaube ich bereits mehrfach erwähnt – ist die Flexibilität seiner GPIO-Schnittstelle. Dies in Verbindung mit der Tatsache, dass es sich beim Raspberry um einen vollwertigen Computer handelt, lässt so manches Bastlerherz höher schlagen. Mein aktuelles Projekt läuft bereits sehr stabil in der Testphase. Bald wird es dazu an dieser Stelle einen etwas umfangreicheren Bericht geben. Da bei besagtem Projekt die von mir so hoch gelobte GPIO-Schnittstelle bisher gar keine Verwendung findet, habe ich die Liste der Features mal um einen Punkt erweitert: Die Möglichkeit, die aktuelle Temperatur zu messen, die ermittelten Werte zu loggen und in einem Diagramm anschaulich darzustellen. Das mag in vielen Augen vielleicht total langweilig klingen, ist es aber meiner Meinung nach überhaupt nicht.
Wenn man Google nach Temperatursensoren in Verbindung mit dem Raspberry Pi befragt, bekommt man eine recht umfangreiche Suchergebnisliste präsentiert. Das Problem: Oftmals finden Bauteile oder sogenannte „Breakout-Boards“ Verwendung, die für dieses recht simple Vorhaben nicht nur überdimensioniert, sondern auch völlig überteuert sind. Ich habe mich für folgende Hardware entschieden:
- DS18B20 Temperatursensor (1,69 Euro)
- 1x 4,7kOhm Widerstand (0,10 Euro)
- 3 Kabel und später mal einen Schrumpfschlauch, um das Ganze zusammenzuhalten
Der „DS18B20“ sendet seine Signale via „1Wire„, einer einfachen seriellen Schnittstelle die Dank passender Module auch der GPIO-Header des Raspberry versteht. Das ganze habe ich nach diesen Schaltbild von Adafruit verkabelt. Bei Bedarf kann man sogar mehrere Sensoren parallel miteinander verbinden und gleichzeitig auswerten. Der Testaufbau sah bei mir folgendermaÃ?en aus:

Um die Daten der Sensoren empfangen und auswerten zu können, benötigt man noch folgende Module:
modprobe w1-gpio
modprobe w1-therm
Für das automatische Laden der Module sollte man diese in /etc/modules unterbringen. Den Sensor kann man nun ungefähr an dieser Stelle
cat /sys/bus/w1/devices/w1_bus_master1/28-00000450aa93/w1_slave
auslesen. Allerdings erhält man hier noch jede Menge mehr Informationen und muss schon genau hinschauen, um den Wert für die aktuelle Temperatur herauszufinden. AuÃ?erdem muss die Temperatur noch umgerechnet werden. Hier hilft ein wenig Linux-Shell-Voodoo, zu welchem das Programm bc (sudo apt-get install bc) benötigt wird:
echo „scale=3; $(grep ‚t=‘ /sys/bus/w1/devices/w1_bus_master1/28-00000450aa93/w1_slave | awk -F’t=‘ ‚{print $2}‘)/1000“ | bc -l
Heraus kommt eine Temperatur in Celcius. Das Ganze habe ich mir natürlich nicht selber ausgedacht, sondern in diesem interessanten Wiki-Eintrag gefunden.