Nachdem der Bananapi nun auch von der SSD läuft, kann ich nun endlich seine eigentliche Funktion einrichten: das Auslesen von mehreren Temperaturen per 1wire.
Auch hier habe ich wieder etliche Anleitungen gefunden und musste verschiedenste Anleitungen absatzweise kombinieren, denn die meisten waren schlichtweg zu alt.
Das Tolle am armbian ist, dass das armbain-config mitgeliefert wird, was dem raspi-config am Raspian entspricht.
Damit lässt sich das 1wire-GPIO sehr einfach aktivieren und man spart sich den händischen Weg.
1 |
sudo armbian-config |
Navigieren zu :
Navigate -> System -> Hardware -> Select w1-gpio -> Save -> Back -> Reboot
.
Nach dem Reboot lässt sich über dmesg
prüfen, ob die Aktivierung geklappt hat
1 2 3 4 |
dmesg | grep wire [ 9.075562] Driver for 1-wire Dallas network protocol. [ 9.116162] gpio-271 (onewire@0): enforced open drain please flag it properly in DT/ACPI DSDT/board file [ 60.627835] w1_master_driver w1_bus_master1: Attaching one wire slave 00.800000000000 crc 8c |
Soweit gut, aber man muss noch den Pin angeben, der für 1wire genutzt werden soll.
Die Pins am Bananapi:
Ich wähle PI3 (gleichzusetzen mit PI03) welcher am Pin7 anliegt.
Jetzt editiere ich die Datei /boot/armbianEnv.txt
und füge folgende Zeile hinzu.
1 |
param_w1_pin=PI3 |
Danach muss der BananaPI neu gestartet werden
1 |
sudo reboot |
Jetzt kommt die Verkabelung.
Es muss Pin1 (3,3V), Pin7 (PI3=Data) und Pin9 (GND) angeschlossen werden. Zwischen Pin1 und Pin7 muss ein 4,7kOhm Widerstand angeschlossen werden.
Nachdem der Dallas-Sensor angeschlossen wurde, wird pro Sensor ein neues Verzeichnis unter “/sys/bus/w1/devices/w1_bus_master1“ angelegt.
Bei meinem Testaufbau ist es das Verzeichnis 10-*.
Darin gibt es eine Datei “temperature“. Diese kann mit “cat“ ausgelesen werden.
Der Wert muss noch durch 1000 dividiert werden, damit er korrekt angezeigt wird.
Hier ist der Befehl “bc“ recht hilfreich.
In dem folgenden Kommando übergebe ich an “bc“ die Vorgabe der Nachkommastellen und den zu berechnenden Wert.
1 |
echo "scale=2; $(cat temperature) /1000" | bc |