niedziela, 23 listopada 2014

BTE14-04 (+sterowniki) Klon Arduino Uno za 15zł - czy warto?

Cześć!

Już jakiś czas temu planowałem zakupić coś zgodnego z pinologią Arduino. Miałem co prawda komputerek Intel Galileo z rozkładem pinów Arduino, ale nie był to ani dobry komputerek, ani dobre Arduino. Przeglądając strony Aliexpress znalazłem różne klony różnych wersji tych otwartoźródłowych płytek. Zdecydowałem się na coś najtańszego oraz kompatybilnego z UNO R3. Znalazłem płytkę za 4,5$ co była całkiem spoko opcją, jedynym jej brakiem był brak kabla USB, który i tak miałem. Jest to płytka oznaczana jako BTE14-04. Chińczyk się szybko uwinął i w 10 dni po zamówieniu miałem już ją u siebie.


Rzut okiem
Tak wygląda omawiany klon.

Płytka wygląda na dobrze wykonaną, laminat nie przypomina w żadnym stopniu tego z produkcji garażowej. Wszystko trzyma się dobrze, nawet wtyk USB sprawia wrażenie że wytrzyma swoje. Czy wyrobi się po jakimś czasie? Wyjdzie w praniu.
Wbudowane są 4 ledy: od zasilania, TX i RX, oraz podpięta pod 13 pin (standard pod demo Hello World - migającej diody).
Zasilanie zewnętrzne działa poprawnie, stabilizator AMS1117 ogarnia do 12V, wyżej nie testowałem (nota katalogowa mówi max 15V oraz prąd max 1A). 


Software

Widok z panelu sterowania
Po wpięciu urządzenia pod USB, mój system (Windows 8.1) wykrył i zainstalował sterowniki bez problemów. W przypadku 'niższego' systemu trzeba pobrać własnoręcznie:
http://goo.gl/UJc30b (Dzięki Dominik za linka! :))
W menadżerze urządzeń w zakładce porty pojawiło się kolejne urządzenie USB-SERIAL CH340. Pod portem znalezionym przy tej nazwie będzie się zgłaszał nasz klon i ten port trzeba będzie wybrać przy dłubaniu się w Arduino IDE.

Pobieramy najświeższe Arduino z oficjalnej strony http://arduino.cc/en/main/software. Instalujemy, w narzędziach wybieramy płytkę Arduino Uno i port pod którym się zgłosiła płytka i tyle. Można spokojnie kodzić :) Przetestowałem kilka przykładów, wszystko chodzi. Mogę z czystym sumieniem polecić tą płytkę każdemu zainteresowanemu zakupem.

Niedocenione Arduino

"Kanapka" z shieldem ze stykówką :)
Nie miałem wcześniej styczności z 'hardwarowym' Arduino, bawiłem się tylko trochę z ATB. Nie dostrzegłem specjalnego potencjału, tyle że musiałem szukać który pin megi odpowiada pinowi programowemu z IDE. Teraz bawiąc się z tym prawdziwym Arduino, stwierdzam że jest genialne w swojej prostocie. Wraz z nakładką z płytką stykową jest fajną małą (6x5cm) platformą do testów. Pełno przykładów, jeśli masz pomysł to po prostu składasz je do kupy wedle uznania. Kto nie testował, polecam sprawdzić. Taka moja krótka opinia, najprawdopodobniej w przyszłości poświęcę szerszy artykuł tejże platformie.

Pozdrawiam :)

sobota, 1 listopada 2014

[BETA] Wykres temperatury po WWW - Malinowy projekt użytkowy

Witajcie cześć i czołem!

[Uwaga! Projekt w wersji beta, czyli autor był zbyt leniwy by go uporządkować i pousuwać bugi.]

Mieszkając w domu jednorodzinnym do grzania przeważnie mamy piec C.O. Pracę tego pieca trzeba nadzorować, mieć pogląd na temperaturę, co się dzieję, czy się nie zagotował. Do tej pory w moim domu służył do tego celu dedykowany pecet, stara dobra Dell'ka z rodziny Optiplexów w połączeniu z jakimś termometrem z wykresem na USB od chińczyka z non stop bugującą się aplikacją. Sezon grzewczy mamy dość długi, ok. 4-5 miesięcy, a pecet chodził 24h na dobę. Przydałoby się tu rozwiązanie mniej prądożerne i tu przyszło mi do głowy zastosować malinę.

Nadruk na obrazku przy alarmie?
Czemu nie:)
Założenia projektu: Generator wykresów z dwóch termometrów, z jakąś formą alarmu, czy to sms, czy to miganie dźwięk, cokolwiek. Nie wiedziałem jeszcze co to będzie, ale wiedziałem że tablet zostanie użyty jako mobilny podgląd tychże wykresów, z włączanym ekranem na stałe.

Podłączanie i implementacja czujników DS18B20 w Raspberry Pi jest bajecznie prosta, plug and play i mamy pomiar automagicznie.
Z wykresem jest pewna rozkmina. Jakiś program okienkowy, czy w terminalu czy co? Z pisaniem softu stricte pod PC nie mam żadnego doświadczenia więc szukałem jakiegoś prostego rozwiązania. Znalazłem, ba, nawet zalążek projektu który chciałem uzyskać. Posłużył mi on za bazę do mojego zastosowania.
http://webshed.org/wiki/RaspberryPI_DS1820
Na powyższej stronie znajdziemy także jak sprawdzić czy podłączone czujniki działają i parę innych podstaw.

Wykres na tablecie? Czemu nie!
Mój projekt bazujący na powyższym zalążku składa się z 3 elementów:
- skryptu Pythona stanowiącego główną bazę zlecającego wykonanie pomiaru, narysowanie wykresu, sprawdzenie czy Malina wciąż jest połączona z siecią i paroma innymi dodatkami
- programu RRDtool wykonującego wykresy na podstawie wartości pomiarów
Strona programu: http://oss.oetiker.ch/rrdtool/
- serwera www z obsługą PHP

Każdy postaram się omówić w miarę szczegółowo, aby każdy mógł zrozumieć jak to działa. Działam na Raspbianie, Python w wersji 2.7.3, wiadomo standard. Jest to wersja rozwojowa, można sporo rzeczy poupraszczać, ale jest sprawna. Ja tam żyję zasadą jeśli coś jest głupie, ale działa, to nie jest głupie :D

Zacznijmy od wgrania zależności komendami w terminalu:
sudo apt-get update (opcjonalnie, jeśli kolejne komendy nam nie ruszają z miejsca)
sudo apt-get install rrdtool (program odpowiedzialny za tworzenie wykresów)
sudo apt-get install apache2 php5 php5-gd (serwer www + php5 z jednym modułem który nam się przyda)

Wrzuć poniższą paczkę ode mnie [link]: http://goo.gl/8E8fLC
Zawartość folderu www do /var/www/, pozostałe pliki wraz z folderem term do /home/pi/
Podpinamy dwa czujniki DS18B20 zgodnie z instrukcją. Odczytujemy ich numery ID z konsoli po wklepaniu komendy:
cat /sys/bus/w1/devices/w1_bus_master1/w1_master_slaves
Powinniśmy otrzymać tyle wyników w formie np. 28-000004c00e62 ile podpięliśmy czujników. Wpisujemy numerek pierwszego do pliku get_temp.pl i drugiego get_temp2.pl w folderze term. 
Odpalamy terminal, wpisujemy komendę:
sudo python temp.py 

Plik generuj_baze.sh tworzy wzorcową bazę (jeden plik dla jednego czujnika) do której będą zapisywane wyniki pomiarów z czujników temperatury. Ja w paczce dorzuciłem wygenerowane od siebie, niemniej sprawdź jak się je wytwarza.

Po odpaleniu skrypt sprawdza kolejno:
1. Czy Malina wciąż jest połączona przez WiFi - jeśli nie, ponawia połączenie i zapisuje godzinę rozłączenia. Tak chciałem sprawdzić o której godzinie router dobiera nowe ip. Wszystko pod net.sh
2. Odpytuje czujniki DS18B20. get_temp.pl get_temp2.pl
3. Zleca wykonanie dwóch wykresów przez RRDTool. graph_temp.sh Oraz generowanie dwóch czarnych wykresów (opcjonalnie, do popróbowania) graph_temp_black.sh
Takie cudo.
4. Sprawdza czy nie jest przekroczona temperatura, jeśli jest, zmienia zawartość strony z wykresem ze zwykłej na alarmową.

Wchodzimy na stronę [ip_naszej_maliny]/temp.php i jeśli wszystko jest w porządku naszym oczom powinny ukazać się dwa wykresy jak u mnie. Strona automatycznie odświeża się co pół minuty, czyli co tyle co ile generowany jest nowy pomiar.
Możemy także wejść na [ip_naszej_maliny]/black.php i zobaczyć wykresy w wersji czarnej. Sam do końca nie wiem które są lepsze, zależy od sytuacji.

Jak działa alarm? Po krótce opisze.
Po sprawdzeniu warunku komenda bashowa kopiuje wzór alarmowy strony z wykresami do strony domyślnej. Alarm.php -> Temp.php Wzór ten nadrukowuje na wykresie napis ALARM i sprawia że wykres ten miga.
Nie rozkminiałem za bardzo PHPa, ale takim prostym mykiem nie potrzebujemy tworzyć niesamowitych skryptów w tym języku, które by sprawdzały czy cośtam nie zgłosiło potrzeby zmiany obrazka etc...
Jedynie musiałem rozwiązać problem nadrukowania obrazka na obrazek, przegniłem deko czasu, ale udało się :) Jak to zrobić, prześledz kod stron po kolei. Kiedy alarm minie, skrypt kopiuje z powrotem wzór normalny do normal.php -> temp.php.

Patent jest fajny, można użyć go jako dodatku do domu inteligentnego czy innych bajerków :) Nie jest to jedyna droga, widziałem już na internecie parę projektów pokrewnych, dla każdego coś dobrego.
Planuje go jeszcze rozszerzyć pod kątem konfiguracji strony z wykresem, generowanie wykresu czarnego co też jest niezłym patentem. Trzeba go dopracować, poskładać może te skrypty sh w jeden. Niemniej patent działa, testowałem go u siebie przy C.O. przez parę dni.

Na koniec wszystkie linki:
Paczka z projektem ode mnie http://goo.gl/8E8fLC
Bardzo fajna dokumentacja do RRDTool, tam można konfigurować sobie do woli serio https://calomel.org/rrdtool.html
Projekt z którego zerżnąłem szkielet http://webshed.org/wiki/RaspberryPI_DS1820
Fanpage AvrLand, sporo warsztatowych zajawek ode mnie, czasem wrzucam ciekawostki na które natrafię w sieci etc... zachęcam do lubienia :) https://www.facebook.com/avrland
Mój nowy projekt na VPS: vps.avrland.ovh

Może trochę chaotycznie, jak coś nie halo pytajcie śmiało :)

Pozdrawiam,
Marcin