owTools unter Windows
Download und Installation
Die "Installation" unter Windows ist nicht schwer. Einfach die Datei owTools.zip herunterladen und an einen beliebigen Ort entpacken.
Nun muss die Eingabeaufforderung geöffnet werden. Das geht z.B. mit Windowstaste + R und der Eingabe von cmd:
wenn owTools z.B. auf dem Desktop kopiert wurde kann man nun mit
cd Desktop\owTools
in das entsprechende Verzeichnis gelangen.
Bei der Eingabe von
dir
sollte es dann so
aussehen. Bzw. kann nun das Programm mit
owTools
gestartet werden und zeigt einen Hilfetext:
chcp 65001
Selber Kompilieren
Natürlich kann auch der Quelltext von owTools heruntergeladen werden. Im Verzeichnis windows/owTools gibt es die Projekt-Daten für Visual Studio 2015.
Verschiedene Adapter
Serielle Adapter und LinkUSB
Mit diesem Adapter ist der Zugriff auf den 1-Wire Bus relativ unkompliziert. Nach dem Anstecken wird der Treiber für den FT232 in der Regel automatisch heruntergeladen und installiert. Alternativ gibt es ihn auch auf http://www.ftdichip.com.
Dannach muss der COM-Port herausgefunden werden, welcher dem LinkUSB-Adapter zugewiesen wurde. Dies geht z.B. mit dem Befehl chgport. Dieser listet z.B. folgende Ports auf:
C:\Users\Nutzer\Desktop\owTools>chgport
COM3 = \Device\VCP0
COM40 = \Device\porte40
COM6 = \Device\porte6
COM7 = \Device\porte7
Dabei ist COM3 mit \Device\VCP0 der Port vom LinkUSB-Adapter. Wenn mehrere FT232-Chips über USB am Computer angeschlossen sind ist die Auswahl schwieriger. Am besten ist dann vorher mal nachzuschauen welche Ports schon vorhanden sind.
wenn all ok ist sieht die Ausgabe von owTools z.B. so aus:
DS9490 - DS2490
Für diesen Adapter habe ich den Treiber mit in die owTools.zip gepackt. Es gibt, wenn alles entpackt wurde, unter owTools ein Verzeichnis Driver. Für 64-Bit Systeme muss die Datei
install_1_wire_drivers_x64_v405.msi
installiert werden. Bei 32-Bit Systemen
install_1_wire_drivers_x32_v405.msi
Der Befehl für owTools mit diesem Adapter lautet dann:
owTools -a USB1
Sind mehrere solche Adapter am Computer angeschlossen kann dann entsprechend mit USB2 oder USB3... anstelle von USB1 darauf zugegriffen werden.
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:
zum Übersetzen wird die 1-Wire Bibliothek für Arduino benötigt:
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:
Mit dem Befehl chgport wird der Arduino (mit CH340G USB zu Serial) als
COM4 = \Device\Serial2
erkannt. Die Kommandozeile für owTools muss dann so aussehen:
owTools -a ARDUINO4
wobei die 4 hinter ARDUINO die Nummer des COM-Ports ist.
Folgendes Bild zeigt ein Beispiel für den erfolgreichen Anschluss:
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
Bei bei neueren Linux-Distributionen muss eventuell stehen:
sudo apt install automake autoconf g++ default-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://git.smho.de/gw/?p=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 Master | Beispiel |
---|---|
LinkUSB(i) | ./owTools -a COM0 |
DS9490 / DS2490 | sudo ./owTools -a USB1 |
1-Wire Kernel Module | sudo ./owTools -a W1 |
Raspberry PI - beliebiges GPIO | sudo ./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
Wenn Fehlermeldungen kommen, kann es sein, dass der Linux-Benutzer noch ein die Gruppe dialout eingetragen werden muss. Dies kann mit dem Befehl:
sudo usermod -a -G dialout $USER
geschehen.
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).
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:
zum Übersetzen wird die 1-Wire Bibliothek für Arduino benötigt:
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: