Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

Początki z Banana Pi i IoT

Banana Pi + DS18B20 = IoT

Witajcie :) Jest mój pierwszy wpis na DP, ale bardzo ciekawy. Będzie trochę programowania, trochę zabawy z kabelkami - coś co lubią duzi chłopcy ;)

Co będziemy potrzebować:

  • Banana PI
  • ds18b20
  • rezystor 4.7k?
  • Płytka stykowa i parę kabelków
  • 15 minut żeby złożyć i uruchomić

Skoro mamy skompletowany potrzebny sprzęt to zabieramy się do złożenia tego w działającą całość.

Podłączamy czujnik temperatury ds18b20 według schematu:

Z racji tego że banana pi nie ma wbudowanej sprzętowej obsługi 1 wire to musimy włączyć wersje programową. W tym celu musimy edytować plik script.bin i dodać w nim obsługę 1 wire. Zaczynamy od zalogowania się do naszego banana i pobrania potrzebnej aplikacji która odkoduje plik z ustawieniami i ponownie zakoduje poprawiony plik.

sudo su cd ~ git clone git://github.com/linux-sunxi/sunxi-tools.git apt-get install libusb-1.0 cd sunxi-tools make

Jeśli nie macie domyślnie zamontowanej partycji boot ( u mnie nie była) to trzeba zamontować ją ręcznie na czas edycji wymaganego pliku. Ja partycje boot zamontowałem w /mnt

mount /dev/mmcblk0p1 /mnt

Edytujemy plik script.bin

./bin2fex /mnt/script.bin script.fex nano script.fex

Po otwarciu pliku w edytorze dopisujemy na końcu pliku dwie linijki.

[w1_para] gpio = 18

Pin 18 odpowiada pinowi 12 ze schematu powyżej. Zapisujemy plik i zapisujemy zmieniony plik na partycji boot, potem restartujemy urządzenie.

./fex2bin script.fex /mnt/script.bin reboot

Po uruchomieniu ponownym przystępujemy do testu odczytu temperatury. Wykonujemy poniższe polecenie:
Dodanie modułów:sudo su modprobe wire modprobe w1-gpio modprobe w1-therm

Odszukanie urządzenia i odczyt temperatury:ls /sys/bus/w1/devices/w odpowiedzi dostaniemy informację o znalezionych termometrach w moim przypadku jest to 28-0000052e0305. Teraz wystarczy, że w poniższym kodzie wpiszecie adres swojego termometru.

cat /sys/bus/w1/devices/TuWpiszAdres/w1_slaveU mnie wygląda to następująco:cat /sys/bus/w1/devices/28-0000052e0305/w1_slave

Po wykonaniu zapytania otrzymujemy informację o temperaturze:5c 01 4b 46 7f ff 04 10 a1 : crc=a1 YES 5c 01 4b 46 7f ff 04 10 a1 t=21750W moim przypadku jest to t=21750 czyli mam 21.75 stopni Celsjusza.

Teraz przystąpimy do wysyłania informacji z termometru przy użyciu skryptu napisanego w pythonie do bardzo ciekawej strony https://thingspeak.comW tym celu musimy wykonać następujące czynności:

  1. Udajemy się na stronę i zakładamy darmowe konto https://www.thingspeak.com
  2. Logujemy się i klikamy ikonkę 'Channel'
  3. Klikamy ikonkę 'Create New Channel'
  4. Nadajemy nazwę projektowi np. Termometr w domu i wpisujemy nawę w polu 'Field 1' np. Temperatura
  5. Klikamy 'Update Channel' po uzupełnieniu informacji podanych w poprzednim kroku
  6. Klikamy zakładkę 'API Keys' wyświetlony tam kod api 'Write API Key' wykorzystamy w kodzie pythona
  7. W zakładce 'Private view' będziemy widzieć zapis graficzny z naszego miernika temperatury podpiętego do banana pi
  8. Pobieramy przygotowany prze zemnie skrypt temp.pywget https://dl.dropboxusercontent.com/u/38897001/temp.py
  9. Edytujemy pobrany skrypt i zmieniamy w nim dwie wartości 'KOD-API' i '28-0000052e0305' odpowiednio w pierwszym wpisujemy swój kod api ze strony thingspeak.com a w drugiej adres naszego czujnika ds18d20

    nano temp.py

  10. Uruchamiamy kod i obserwujemy w konsoli status przesyłania i odczytu temperatury. Na stronie internetowej naszego projektu też powinny się ładować nowe wartości.python temp.py
  11. Po przetestowaniu poprawnego działania możemy uruchomić nasz skrypt w tlescreen python temp.pyw celu opuszczenia okna z aplikacją pracującą w tle klikamy Ctrl + a i Ctrl + d

A tutaj jak to wygląda u mnie: https://thingspeak.com/channels/34528

Mam nadzieję że jest przejrzyście i zrozumiale napisane :)
Liczne komentarze mile widziane jak i tworzenie własnych rozwiązań IoT i chwalenie się nimi na blogu dobrych programów. 

linux internet programowanie

Komentarze

0 nowych
DjLeo MODERATOR BLOGA  18 #1 19.04.2015 21:17

Witaj na pokładzie. Kombinowanie z Malinką jak zawsze spoko. Wpis jak na początek całkiem niezły ;). Czekam na kolejne.

SpeX   7 #2 19.04.2015 22:03

Czy taki termometr trzeba kalibrować?

SweetDreams   10 #3 19.04.2015 22:14

@SpeX: Nie trzeba

owca_z   2 #4 19.04.2015 23:44

Jak byś nie chciał wysyłać tego w świat to zobacz na projekt http://techfreak.pl/nettemp/

cyryllo   17 #5 20.04.2015 07:20

Tekst ok, ale pełno błędów. Popraw to. Fajnie, że są tutaj użytkownicy Banana Pi :P Czekam na kolejne wpisy ;)

  #6 20.04.2015 11:16

dlaczego na powyższym schemacie jeden z czujników jest w całości podłączony do pinu zasilania (łącznie z pinem od danych ?). Przecież to mija się kompletnie z celem, ponieważ nie odczyta się nic z niego.

cyryllo   17 #7 20.04.2015 14:00

@jacaato (niezalogowany): Gdzie niby jest tak podłączone? wg mnie wszystko jest ok.

mktos   10 #8 20.04.2015 19:47

Z mojego doświadczenia to obsługa 1-wire nie działa niestety na Archu - prawdopodobnie wymagane by było przebudowanie jądra na to wzięte z Raspbiana, ale nie chciało mi się kombinować.

  #9 20.04.2015 20:09

@cyryllo jak to czytałem to ledwie wstałem z łóżka. zauważyłem szybko swój błąd, ale nie mogłem już edytować komentarza. oczywiście jest ok, pozdrawiam :)

  #10 27.04.2015 07:37

Znowu dallas? To się robi nudne, te czujniki już wszędzie podłączają, jeszcze trochę do suszarki na pranie go podłączą.
Autor lepiej opisałby podłączenie czegoś ciekawszego np. BMP180 lub DHT22. Do tego kawałek skryptu który zapisywałby wyniki i prezentował to na wykresie.
Przykład: http://obrazki.elektroda.pl/8386317500_1430112994.png

  #11 11.05.2015 10:36

@@GUTEK@_2 (niezalogowany): ds18b20 ma tę zaletę, że jest na protokole 1-wire i pisząc sobie samemu do niego bibliotekę możemy (musimy) zaimplementować także obsługę tego protokołu, którą można potem wykorzystać przy innych czujnikach. dht22 i dht11 mają własne protokoły, które nie są z niczym innym kompatybilne (nawet pomiędzy 11 i 22 nie do końca chce to działać (poza tym, nie polecam dht11, 22 narazie testuję i jest nadzieja większa :P )), co do barometru, to osobiście nie miałem potrzeby korzystania z I2C, więc się nie wypowiem czy łatwo, czy nie.

zypolit   3 #12 03.06.2015 14:22

Czy czasami nie lepiej - https://www.ematador.pl/pl/p/Raspberry-PI-2-model-B-900MHz-Quad-Core-1-GB-RAM/774 ? Wiadomo - koszty podobne, bardziej mam na myśli temat funkcjonalności. Co myślicie?