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ść.

r   e   k   l   a   m   a

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_slave

U 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=21750

W 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.com
W 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.py

    wget 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 tle

    screen python temp.py

    w 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