Banana Pi, Bananian i obsługa ds18b20 na 1-wire
Od 2 lat mierzę temperaturę zewnętrzną wykorzystując przejściówkę ds9097 podłączoną pod RS232 i odpowiednio skonfigurowany terminal. Wykresy z temperaturą można śledzić na tej stronie: Temperatura. Całość działała całkiem niezawodnie, jedyna awaria to spodziewane uszkodzenie pendrive’a, który wymieniłem na klasyczny dysk magnetyczny. Po pewnym czasie znudziłem się tym “serwerkiem” i pod pretekstem oszczędności prądu zacząłem tworzyć analogiczny zestaw, ale na systemie bananian uruchomionym na Banana Pi.
Przygotowania do włączenia obsługi 1-wire w Bananian OS
W systemie Bananian (15.01 i 15.04) podłączenie czujnika DS18B20 wykorzystującego magistralę 1-wire do gpio to dopiero połowa drogi. Czujniki odpytuje się identycznie jak w Raspbianie na Raspberry Pi. Najprostszą metodą na sprawdzenie ich obecności w systemie jest wypisanie zawartości folderu:
ls /sys/bus/w1/devices
U mnie pusto
Na pierwszej partycji karty SD znajduje się plik z ustawieniami script.bin, który jest ładowany podczas startu – coś jakby bios. Plik należy zdekompilować z postaci binarnej na tekstową, przypisać port (gpio) obsługujący 1-wire i skompilować. Całą zabawę zaczynamy od doinstalowania niezbędnych narzędzi: git, make, gcc, pkg-config, libusb, czyli:
apt-get install git make gcc pkg-config libusb-1.0
Instalacja potrwa chwilę
Teraz ściągniemy sobie źródła sunxi tools z githuba:
git clone git://github.com/linux-sunxi/sunxi-tools.git
po sklonowaniu przechodzimy do folderu sunxi-tools:
cd sunxi-tools
i kompilujemy narzędzia wydając polecenie make, całość wyglądała u mnie tak:
Modyfikacja script.bin
Plik script.bin znajduje się na pierwszej partycji karty, która nie jest podmontowana, znajdziemy ją pod /dev/mmcblk0p1, co można potwierdzić listując zawartość nośnika:
fdisk -l
Trzeba ją podmontować pod jakiś folder, ja wybrałem /boot, , który w Bananian 15.01 jest pusty, w wersji 15.04 założyłem inny folder, bo w /boot są jakieś pliki. Polecenie to:
mount /dev/mmcblk0p1 /boot
można wylistować zawartość /boot (lub innego użytego folderu), gdzie po zamontowaniu powinien znajdować się plik script.bin:
ls /boot
Teraz użyjemy narzędzia bin2fex do dekompilacji pliku na format tekstowy:
./bin2fex /boot/script.bin script.fex
Jak widać, pierwszy parametr to lokalizacja pliku wejściowego script.bin, drugi to ścieżka zapisu tekstowego już script.fex:
Teraz za pomocą ulubionego edytora tekstu można otworzyć plik script.fex:
nano script.fex
Na samym końcu dopisujemy linijkę:
[w1_para] gpio = 4
Zapisujemy plik. Teraz trzeba go skompilować, czyli script.fex zamienić na script.bin:
./fex2bin script.fex /boot/script.bin
Teraz można zrestartować banana pi, lub lepiej – wyłączyć i podłączyć czujnik DS18B20 o czym niżej.
Podłączenie czujnika DS18B20 do Banana Pi
Definiując pin gpio = 4 otrzymujemy obsługę magistrali 1-wire na 7 fizyczny goldpinie na płytce. Jeśli chcemy wykorzystać inny pin, to w zdekompilowanym pliku script.fex trzeba sprawdzić sekcję [gpio_para], gdzie numery pinów gpio_pin_x są przypisane do konkretnych portów procesora, pomocny będzie też schemat ideowy płytki bpi, by sprawdzić połączenia portów z goldpinami złącza. W BPI interesują nas piny zasilające 3V3, GND i magistrali 1-wire, czyli:
Czyli podłączenie popularnego czujnika temperatury DS18b20 i rezystora 4,7kΩ powinno wyglądać tak (połączenia: czerwone +3,3V, czarne GND, białe 1-wire):
Po włączeniu Banana Pi można sprawdzić, czy czujnik został wykryty:
ls /sys/bus/w1/devices/
No i mam czujnik o numerze 28-000003def4da, odczyt zmierzonej przez niego temperatury:
cat /sys/bus/w1/devices/28-000003def4da/w1_slave
Wynik t=22000 trzeba podzielić przez 1000. Tak to wyglądało u mnie:
Mój cały układ pomiarowy wyglądał tak:
Fajnie wygląda pobór prądu – niecałe 500mA z włączoną kartą sieciową WiFi i odbiornikiem bezprzewodowej klawiatury. HP T5720 pobierał około 25W, Banana Pi 10 razy mniej!
Polecam nettempa betę 😉
Używam na rpi :). Na bpi pomiar temperatury to tylko jedna z kilku funkcji.
Witam, ilustracyjna pokazuje błędne podłączenie rezystora: powinien być wpięty między Vdd a Data. Reszta ok.
Witam
Mam mały problem z kompilacja
root@openmediavault:/sunxi-tools# make
bash: make: command not found
Czy ktoś może pomóc?
apt-get install make
w najnowszym bananianie brakuje kilku rzeczy zeby zrobić make:
apt-get install build-essential
Dzięki za info, w jakiej wersji to sprawdzałeś?
Hi, i can not “make”
fel.c:30:18: fatal error: zlib.h: Datei oder Verzeichnis nicht gefunden
#include
^
compilation terminated.
Makefile:140: recipe for target 'sunxi-fel' failed
make: *** [sunxi-fel] Error 1
andy idea?
Try install libz-dev