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:

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:

Instalacja potrwa chwilę

Bananian - instalacja pakietów

Teraz ściągniemy sobie źródła sunxi tools z githuba:

po sklonowaniu przechodzimy do folderu 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:

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:

można wylistować zawartość /boot (lub innego użytego folderu), gdzie po zamontowaniu powinien znajdować się plik script.bin:

Teraz użyjemy narzędzia bin2fex do dekompilacji pliku na format tekstowy:

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:

Na samym końcu dopisujemy linijkę:

Bananian - edycja script.fex

Zapisujemy plik. Teraz trzeba go skompilować, czyli script.fex zamienić na 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:

No i mam czujnik o numerze 28-000003def4da, odczyt zmierzonej przez niego temperatury:

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!

Wpis “Banana Pi, Bananian i obsługa ds18b20 na 1-wire” komentowano 7 razy

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

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

Dodaj komentarz