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!

Wojtek

Zobacz komentarze

    • 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?

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

  • 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?

Ostatnie posty

Tani moduł IoT z kamerką ESP32 CAM – pierwsze uruchomienie

Mega tanie, bezprzewodowe moduły Internet of Things na dobre zadomowiły się w naszych sieciach. Od…

1 dzień temu

Aktualizacja oprogramowania w stacji lutowniczej AiXun T3A

Pewnie nie każdy posiadacz tytułowej stacji lutowniczej wie, że posiada ona możliwość aktualizacji firmware'u. Producent…

2 tygodnie temu

Programator USB AVR ISP z Arduino Nano

Jakiś czas temu, przeglądając Aliexpress natknąłem się na ciekawy shield do Arduino Nano. Według opisu…

3 tygodnie temu

Tester elementów elektronicznych na atmega – aktualizacja firmware’u

W mailach i komentarzach kilka razy przewijała się prośba o ten wpis. Chodzi o aktualizację…

2 miesiące temu

Wzmacniacz słuchawkowy Lovely Cube – popularny klon Lehmanna

Dziś tematyka audio, a nawet audiofilska. Uznany wzmacniacz słuchawkowy Lehmann Black Cube Linear o dość…

2 miesiące temu

Podsumowanie 2023 roku

Tradycyjnie w styczniu, publikuję podsumowanie minionego roku na stronie grylewicz.pl. Poniżej trochę liczb, lista najpopularniejszych…

3 miesiące temu