owTools unter Linux

Erstellen des Programms aus dem aktuellen Quellcode

Die Vorgehensweise ist bei allen Debian-Basierten Linux-System (Raspbian, Ubuntu, Mint...) gleich. Bei anderen Systemen muss der Befehl zum Installieren der benötigen Programme und Bibliotheken angepasst werden.

1. Installieren der benötigten Programme und Bibliotheken:

sudo apt install automake autoconf g++ libmysqlclient-dev libusb-dev

2. Quellcode herunterladen und entpacken (Achtung! Wenn schon eine Datei owTools im aktuellen Verzeichnis existiert, funktioniert die Verzeichniserstellung nicht):

mkdir owTools
cd owTools
wget -O owTools.tar.gz "https://smho.de/gw/?p=public/owTools.git;a=snapshot;h=HEAD;sf=tgz"
tar --strip=1 -xzf owTools.tar.gz

3. Übersetzen des Programms:

aclocal
autoconf
automake
./configure
make

Download Binary

Wem das Übersetzten des Quellcodes, wie gerade beschrieben, zu kompliziert ist, der kann es mit einem fertig übersetzten Programm versuchen.
Raspberry PI

wget https://www.tm3d.de/downloads/owTools/owTools_PI_bin.tar.gz
tar -xzf owTools_PI_bin.tar.gz
./owTools

Kommt die Fehlermeldung:

./owTools: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory

Muss die Bibliothek libmysqlclient.so.18 noch installiert werden mit:

sudo apt-get install libmysqlclient18

Die Zahl .18 kann in der Fehlermeldung auch anders sein, entsprechend muss auch die Kommandozeile geändert werden.

Funktioniert owTools korrekt, so gibt das Programm folgende Informationen aus:


Verschiedene Adapter

Übersicht

1-Wire MasterBeispiel
LinkUSB(i)./owTools -a COM0
DS9490 / DS2490sudo ./owTools -a USB1
1-Wire Kernel Modulesudo ./owTools -a W1
Raspberry PI - beliebiges GPIOsudo ./owTools -a GPIO17
Arduino (Nano)./owTools -a ARDUINO0

Serielle Adapter und LinkUSB

Mit diesem Adapter ist der Zugriff auf den 1-Wire Bus relativ unkompliziert. Der passende Treiber ist im Linux-Kernel enthalten.

Um den entsprechende Port herauszufinden hilft die Eingabe von dmesg nach dem Anstecken des Adapters.

In der letzten Zeile steht ttyUSB0. Somit ist der Adapter mit der virtuellen seriellen USB-Schnittstelle 0 verbunden. Die Kommandozeile muss dann lauten:

./owTools -a COM0

DS9490 - DS2490

Auch für diesen Adapter ist der Treiber im Linux-Kernel enthalten und es muss nichts zusätzlich installiert werden.

Allerdings wird der Master bei neueren Kernel-Versionen automatisch in das 1-Wire-System des Kernels eingebunden und ist somit schon belegt. Das kann man z.B. mit dem Befehl lsmod |grep ds2490 herausfinden:

In diesem Falle muss das Modul erst durch den Befehl:

sudo rmmod ds2490

entladen werden.

Der Befehl zum Starten von owTools mit dem ersten angeschlossen DS9490-Adapter lautet dann:

sudo ./owTools -a USB1

Funktioniert alles richtig sieht die Ausgabe dann ungefähr so aus:


1-Wire Kernel Funktion

Auch die im Linux-Kernel integrierte 1-Wire Funktion lässt sich mit owTools verwenden. Dies ist besonders praktisch, wenn beim RaspberryPI das GPIO4-Port als 1-Wire Master verwendet werden soll. Allerdings läuft das 1-Wire-Kernelmodul auf Intel-kompatiblen PCs mit DS9490 nicht besonders stabil. Dort sollte lieber der direkte Weg, wie oben beschrieben, verwendet werden.

Der Befehl lautet:

sudo ./owTools -a W1

Wichtig ist die Ausführung mit Administratorrechten (sudo).

Bei der Verwendung des GPIO4 muss ein Pullup-Widerstand zwischen GPIO4 und 3.3V angebracht werden.

Beliebiger GPIO vom RaspberryPI ohne Kernel

owTools erlaubt auch die Verwendung jedes freien GPIO-Ports als 1-Wire Master. Auch dazu ist jeweils ein Pullup-Widerstand notwendig.

Leider funktioniert die Funktion nicht ganz fehlerfrei. Aber mit CRC und Prüfung der gesendeten Daten ist eine stabile Kommunikation möglich. Wenn zufällig jemand weiß, wie man es anstellt, dass der Kernel ein Programm 15µs lang nicht unterbricht, dann bitte unbedingt melden!! Dann wäre das Problem der sporadischen Fehler gelöst.

Der Befehl z.B. für GPIO17 lautet:

sudo ./owTools -a GPIO17

Wichtig ist die Ausführung mit Administratorrechten (sudo).


ARDUINO

Ein Arduino ist schon extrem günstig zu haben. Somit ist diese Variante wahrscheinlich der günstigste 1-Wire Adapter für den PC. Mein Arduino Nano hat eine serielle Schnittstelle von QinHeng Electronics. Die Treiber habe ich mal mit in die owTools.zip gepackt. Andere Arduino Nanos haben aber auch andere Chips verbaut.

Zum Arduino selbst will ich hier nicht viel sagen. Dazu gibt es sehr viele Informationen im Internet. Die passende Firmware für den Arduino gibt es hier:

owTools_arduino_master.zip

zum Übersetzen wird die 1-Wire Bibliothek für Arduino benötigt:

OneWire.zip

In der aktuellen Arduino IDE gibt es die Möglichkeit, die ZIP-Datei gleich unter dem Menüpunkt Sketch -> Bibliothek einbinden -> .ZIP Bibliothek hinzufügen ... zu installieren

Der 1-Wire Master ist mit dem Port D10 verbunden. Zum korrekten Betrieb muss noch ein Pullup-Widerstand (1 kOhm - 10 kOhm) zwischen D10 und +5V angebracht werden:

Die Nummer des USB-Serial-Ports kann, wie bei dem LinkUSB-Adapter, mit dem Befehl dmesg herausgefunden werden. Für ttyUSB0 muss z.B. folgender Befehl eingegeben werden:

owTools -a ARDUINO0

Bei erfolgreicher Ausführung zeigt das Programm die Werte der angeschlossenen Sensoren an:

Zum Seitenanfang