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

Niewykryte czujniki 1-wire

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ę

Bananian - instalacja pakietów

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:

Sunxi tools - kompilacja na bananian

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:

Bananian - dekompilacja pliku script.bin

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

Bananian - edycja script.fex

Zapisujemy plik. Teraz trzeba go skompilować, czyli script.fex zamienić na script.bin:

./fex2bin script.fex /boot/script.bin

Kompilacja script.fex do 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:

Zasilanie i 1-wire BPi

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):

Podłączenie ds18b20 do banana pi

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:

Banana Pi odczyt z ds18b20

Mój cały układ pomiarowy wyglądał tak:

Banana Pi, Bananian i ds18b20

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!

Możesz również polubić…

10 komentarzy

  1. techfreakpl pisze:

    Polecam nettempa betę 😉

  2. Arti pisze:

    Witam, ilustracyjna pokazuje błędne podłączenie rezystora: powinien być wpięty między Vdd a Data. Reszta ok.

  3. Luka pisze:

    Witam
    Mam mały problem z kompilacja
    root@openmediavault:/sunxi-tools# make
    bash: make: command not found

    Czy ktoś może pomóc?

  4. Tomasz Polak pisze:

    w najnowszym bananianie brakuje kilku rzeczy zeby zrobić make:
    apt-get install build-essential

  5. stoffl pisze:

    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?

  1. 31.03.2020

    […] temperatury DS18B20 korzystający z magistrali 1-wire to dość znany element. Opisywałem go tutaj czy tutaj. By odczytywać z niego temperaturę w Raspbianie, musimy zacząć od włączenia […]

Leave a Reply

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.