Open Source im professionellen Einsatz
Linux-Magazin 03/2006
© photocase.com

© photocase.com

Temperatursensoren mit Perl auslesen

Ist das nicht cool?

Mit Linux hängt der kreative Bastler relativ leicht selbst gebaute Hardware an seinen Rechner. Dieser Snapshot vermittelt an einem Beispiel Grundlagen dafür und infiziert mit Lötkolbenfieber.

775

Es ist noch gar nicht so lange her, da musste man noch Device-Treiber schreiben, um exotische Eigenbau-Hardware anzusteuern. Seit aber USB-Hotplugging im 2.6er Kernel anstandslos funktioniert, geht alles viel einfacher. Der in der folgenden Beispielanwendung verwendete Temperaturfühler DS18S20 [3], hergestellt von der Firma Dallas Semiconductor, ist über einen so genannten One-Wire-Bus anzusteuern, den wiederum ein im Rechner steckender USB-Dongle betreibt. Die unter [2] frei erhältliche OWFS-Steuerungssoftware fragt die Daten über eine Perl-Schnittstelle ab.

Statt One-Wire sollte der Bus allerdings besser Two-Wire heißen, denn zwei dünne Kupferkabel (meist in einer einzigen Umhüllung) gehen vom Sensor zum USB-Dongle (siehe Abbildung 1). Am anderen Ende des Kabels findet sich ein Telefonstecker (RJ11), der sich in den USB-Dongle einklicken lässt. Den erwähnten Temperatursensor gibt es im einschlägigen Elektronikfachhandel für wenige Euro zu kaufen (zum Beispiel 4,50 Euro bei [http://www.conrad.de]). Er ist zwischen -55°C und +125°C einsetzbar. Der One-Wire-USB-Dongle DS9490R, an den der Bastler mit den handelsüblichen Telefon-Mehrfachsteckern viele Sensoren zugleich hängen kann, schlägt mit etwa 15 bis 25 Dollar zu Buche (zum Beispiel bei Hobby-boards.com).

Das OWFS-Projekt [2] auf Sourceforge bietet eine Reihe von Schnittstellen an, um die Temperaturwerte der Sensoren auszulesen. Eine davon nutzt das User-Filesystem Fuse und bildet die Sensordaten auf das Filesystem ab, ähnlich der »/proc«-Hierarchie in Linux. Abbildung 2 zeigt, wie ein Dongle mit zwei Sensoren sich dem Benutzer präsentiert: Nicht nur die ausgelesenen Temperaturwerte sind verfügbar, sondern auch noch eindeutige IDs der Sensoren, deren Typbezeichnung und vieles mehr. In den kleinen Transistor-ähnlichen Gehäusen steckt nämlich ein winziger Microcontroller, der einiges auf dem Kasten hat.

Ablesung

Die Werte der Messstationen liest ein einfacher »cat«-Befehl aus den Dateien, die Abbildung 2 verwendet allerdings »perl -ple1«, um ein Newline anzuhängen. Unter dem Eintrag »10B2A7C7000800/temperature« findet sich der vom ersten Sensor gemessene Wert: 22,8125°C. Der zweite Sensor mit der ID »10.E0E3C7000800«, der in einer Winternacht in San Francisco draußen hing, misst hingegen kühlere 14,4375°C (in Kalifornien wird es selten richtig kalt). Unter dem Eintrag »type« steht die Typbezeichnung des Fühlers (DS18S20), damit sich über die Programmierschnittstelle herausfinden lässt, welche Sorte Sensor mit dem One-Wire-Bus verbunden ist. Der Hersteller Dalles bietet alles Mögliche an, darunter auch Schalter, Spannungs- und Strommesser.

Lötkolben anheizen

Der USB-Dongle hat als Eingang eine Telefonbuchse. Um die Sensoren dort einzuhängen, muss ich vorher noch jeweils ein langes Kabel mit einem abschließenden Telefonstecker an die Beinchen der Temperaturfühler anlöten. Am einfachsten geht das, indem ich von einem normalen Telefonverlängerungskabel mit Steckern an beiden Enden einen der Stecker brutal mit einer Zange abzwacke. Dann muss ich noch die äußere Hülle des Kabels abisolieren. Dabei kommen entweder zwei oder vier dünne Drähte zum Vorschein.

Ich benötige nur das rote und das grüne Kabel, die restlichen dürfen einer Kneifzange zum Opfer fallen. Der Temperaturfühler hat drei Beinchen, von denen das ganz rechts (wenn man das Gehäuse mit der abgeflachten Seite nach vorne ansieht und die Beinchen nach unten zeigen) überflüssig ist. Es dient dazu, dem Fühler extra Spannung zuzuführen, aber der begnügt sich auch damit, Strom aus der Datenleitung zu stehlen [8].

Mit einer Zange zwicke ich also das rechte Fühlerbeinchen ab und bereite das Telefonkabel mit drei Schrumpfschlauchstücken vor (Abbildung 3). Später erhitze ich die Schlauchstücke vorsichtig, was sie elegant zusammenschmurgeln lässt, um dem Fühler ein einigermaßen Wohnzimmer-kompatibles Aussehen zu verleihen.

Das grüne innere Telefonkabel löte ich danach ans linke Bein des DS18S20, das rote kommt ans mittlere (Abbildung 4). Dann fahre ich mit dem Lötkolben nahe an den zwei roten inneren Schrumpfschläuchen entlang, worauf diese einschrumpfen und so die abisolierten Drahtstücke umschließen. Falls sie nicht weit genug schrumpfen, hilft ein Stück Isolierband, sie so zu befestigen, dass sie sich nicht berühren und einen Kurzschluss verursachen.

Anschließend führe ich das dickere (gelbe) Schrumpfschlauchstück vor, bis der Sensor nur noch leicht rausspitzelt, und lasse den Schlauch sich unter der Lötkolbenhitze zusammenziehen. Abbildung 5 zeigt den fertigen Fühler, dessen Telefonstecker entweder direkt im Dongle Platz findet oder aber - falls gleichzeitig mehrere Sensoren zum Einsatz kommen - über einen Mehrfachstecker (Abbildung 6).

Zu Testzwecken lasse ich nun einen Sensor im Zimmer und führe den anderen durchs Fenster ins Freie. Das OWFS-Projekt liefert mit dem Modul »OW« eine generische Perl-Schnittstelle mit, die das Modul »OWTemp.pm« (siehe Listing 1) auf die konkret verwendeten Temperaturfühler zuschneidet.

Abbildung 1: Die Temperatursensoren sind über den One-Wire-Bus mit dem USB-Dongle verbunden.

Linux-Magazin kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Auf Draht

    1-Wire, der Ein-Draht-Bus, ist eine handliche Eigenbaulösung für viele Szenarien, zum Beispiel die Temperaturmessung im Serverraum. Die Open-Source-Programme Digitemp, Owfs und W1retap helfen aber auch Aquariumbesitzern, Klimaforschern oder Hobbyönologen.

  • Home Automation

    Home Automation muss nicht teuer sein: Hardware für unter 100 Euro, dazu ein Pi oder eine Fritzbox und die richtigen Open-Source-Tools, schon klappt die Steuerung des digitalen Zuhauses.

  • Monitorix 1.3.0 unterstützt Nginx-Webstatistik

    Das Monitoring-Tool Monitorix ist in Version 1.3.0 verfügbar. Neben einigen Aufräumarbeiten haben die Entwickler Unterstützung für den Webserver Nginx eingebaut.

  • Perl-Snapshot

    Ob Lampen per Fernsteuerung übers Internet angehen oder eine Pumpe die Topfpflanzen wässert: Home Automation erobert die Heime der Bastler. Die Z-Wave-Technologie bietet Geräte, die zuverlässig steuern und regeln – mit Hilfe von Perl.

  • Monitorix 1.0.0 überwacht Hard- und Software

    Das Überwachungsprogramm Monitorix ist in Version 1.0.0 erschienen. Nun berichtet es neben anderen Systemdaten auch Lüfter-Drehzahlen sowie die Temperatur von CPU, Mainboard und Festplatten.

comments powered by Disqus

Ausgabe 09/2017

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.