Benutzer-Werkzeuge

Webseiten-Werkzeuge


howto:bananapi:1wire_an_gpio4

Dies ist eine alte Version des Dokuments!


1wire an GPIO4

Aufbau der Schaltung

kurze Leitungswege 3,3V

lange Leitungswege 5V

Software

Da mein BananaPI nur im lokalen Netzwerk erreichbar ist, führe ich alle Befehle als Root aus

Vorbereitung

Nachdem die Hardware ordnungsgemäß mit dem Banana Pi verbunden ist kann das Auslesen der Temperatur beginnen. Dazu installieren wir zunächst ein Softwarepaket, mit welchem wir den 1-Wire Bus zugänglich machen.

Falls GIT noch nicht installiert ist:
sudo apt-get install git
sudo apt-get install libusb-1.0 libusb-dev
git clone https://github.com/linux-sunxi/sunxi-tools
cd sunxi-tools
make

Im nächsten Schritt wird die binäre Konfigurationsdatei script.bin bearbeiten. Mit dem gerade heruntergeladenem Tool laden wir aus der binären Datei eine fex-Datei.

su -
mount -o,rw /dev/mmcblk0p1 /mnt
cd /root/sunxi-tools
./bin2fex /mnt/script.bin script.fex

Die fex-Datei bearbeiten wir im Anschluss mit dem Editor nano.

sudo nano script.fex

Am Ende der Datei fügen wir folgenden Inhalt ein.

[w1_para]
gpio = 4

Anschließend können wir die Datei schließen und wandeln die bearbeitete fex-Datei zurück in die binäre Datei script.bin.

./fex2bin script.fex /mnt/script.bin
umount /mnt

Nun am Ende von /etc/modules folgendes eintragen:

# modules for the gpio and the DS18B20 sensor
w1-gpio
w1-therm

Damit die Einstellungen übernommen werden ist ein Neustart notwendig.

sudo reboot
Leider werden mit lsmod die Module nicht angezeigt.

Auslesen des DS1820 1-wire

Zum Auslesen der Temperatur eines Sensors am 1-Wire Bus müssen wir den entsprechenden Sensor selektieren. Wie in der Schaltung oben gezeigt können mehrere Sensoren angeschlossen sein. Zur Identifikation besitzt jeder Temperatursensor einen vom Hersteller eindeutig vergebenen Code. Jeder angeschlossene Sensor bekommt im Verzeichnis /sys/bus/w1/devices/ sein eigenes Unterverzeichnis. Innerhalb des Verzeichnisses eines Sensor findet man immer die Datei w1_slave. Mit dem cat Befehl können wir daraus (via Terminal) die Temperatur auslesen.

Zum Ermitteln der Identifikationsnummer und des entsprechenden Verzeichnisses wechseln wir zunächst in das Verzeichnis /sys/bus/w1/devices/ und lassen uns dort alle drin befindlichen Ordner und Dateien anzeigen.

cd /sys/bus/w1/devices/
ls

In meinem Fall habe ich einen Sensor angeschlossen mit der Identifikationsnummer 10-000802b5ab54. Anschließend wechseln wir in das gleichnamige Verzeichnis. Dort sehen wir das die genannte Datei w1_slave vorhanden ist.

cd /sys/bus/w1/devices/10-000802b5ab54
ls

Mit dem cat Befehl lesen wir anschließend die Datei und damit die momentane Temperatur aus. Es ergibt sich insgesamt folgender Verlauf und die im Bild dargestellte Ausgabe.

cat /sys/bus/w1/devices/10-000802b5ab54/w1_slave

Am Ende der Ausgabe finden wir die Angabe t=18687. Teilen wir diese Zahl durch 1000 ergibt sich eine aktuelle Temperatur von 18,687 °C.

vzlogger.conf

Im Abschnitt „meters“ wird folgende Konfiguration vorgenommen:

"meters": [
    {
      "enabled": true,
      "allowskip": false,
      "interval": 300, // alle 300sec (5min) 
      "aggtime": -1,
      "aggfixedinterval": false,
      "channels": [
        {
          "api": "volkszaehler",
          "uuid": "e6be7550-1393-11e7-a417-5ff918fcd6b3", // UUID im Frontend
          "identifier": "10-000802b5ab54", // ID des DS1820
          "middleware": "http://localhost/middleware.php",
          "aggmode": "none",
          "duplicates": 0
        }
      ],
      "protocol": "w1therm"
    }
  ]

Anschließend den vzlogger neustarten

 service vzlogger restart
howto/bananapi/1wire_an_gpio4.1492785901.txt.gz · Zuletzt geändert: 2017/04/21 16:45 von dennis_g