Arduino YUN – rozpoznanie bojem
Arduino YUN jest połączeniem Arduino Leonardo (ATmega32u4) z jednoukładowym komputerem Atheros AR9331 (występuje on w niektórych routerach TP Linka i Linksysa). Tak znaczy to, że YUN ma na pokładzie od razu Ethernet i WiFi.
Złącza
Arduino YUN ma nastepujące złącza – Ethernet (RJ-45), USB-A (host), USB-B micro (client), karta microSD, gniazdo U.FL dla antenty WiFi, miejsce na przylutowanie modułu PoE (jak do Ethernet Shielda lub Arduino Ethernet). Zauważyliście – nie ma złącza zasilania – zasilany z gniazda micro USB lub przez Vin. W tym drugim przypadku sami musimy zadbać by było to stabilizowane 5V.
Pierwsze koty za płoty…
Na pokładzie jest ATmega32u4 czyli niby jak Arduino Leonardo, jednak… Na razie na sucho przeglądając http://arduino.cc/en/Guide/ArduinoYun nie trudno zobaczyć kilka interesujących faktów. Po pierwsze, można korzystać z niego jak z Leonardo – podłączamy do komputera przez kabel micro USB, odpalamy IDE (ale wersję 1.5.x), programujemy, wgrywamy tak jak zawsze. Ale to jest nudne (choć działa, właśnie zmodyfikowanego Blinka wgrałem), więc pójdźmy dalej.
Niech stanie się WiFi
Jeżeli YUN jeszcze nie był konfigurowany to na linuxowej części YUN (działa na niej odmiana OpenWRT) jest uruchomiony access-point o identyfikatorze sieci Arduino YUN-MAC_ADRES (warto MAC adres sobie zapisać). Jest sieć bez hasła, więc podłączamy się do niej. Nasz komputer dostaje adres przez DHCP, adres YUN to zawsze 192.168.240.1, ale nie musimy tego pamiętać, bo z dzierżawą DHCP dostajemy ładny wpis arduino.local
– taki adres wpisujemy w przeglądarkę.
W pole na hasło wpisujemy arduino
i oto jest:
Jeżeli klikniemy w CONFIGURE to przeniesiemy się do prostego okna konfiguracyjnego. Tam wybieramy nazwę dla swojego Arduino, nowe hasło (bo przecież nikt nie zostawi domyślnego, prawda?) i co najważniejsze sieć WiFi do której ma się nasze Yun podłączyć. Po restarcie pozostaje się podłączyć do tej samej sieci. Jeżeli nazwa naszego arduino YUN (którą przed chwilą skonfigurowaliśmy) jest unikatowa w naszej sieci, możemy się do niego dostać przez nasza_nazwa.local
. Jeżeli nie, to trzeba sprawdzić na routerze jaki IP dostało nasze Arduino (szukać listy komputerów w DHCP i tam znaleźć MAC naszego YUN) i można się podłączyć. Działa? No to następny krok.
Restartujemy IDE i w menu Tools/Port powinno być nie tylko /dev/ttyACM0 (Arduino Yun) ale również Arduino IP ADRES (Arduino Yun). Wybieramy ten port z adresem IP i upload! Pojawia się dialog którego wcześniej nie spotkaliśmy:
Wpisujemy hasło, które nadaliśmy naszemu Arduino i szkic załadowany! Dla pewności możesz podłączyć YUN do drugiego komputera, by być pewnym, że Arduino IDE Cię nie oszukuje nie wgrywa kodu ukradkiem przez USB :) Trwa to trochę dłużej niż przez USB, ale jeżeli nasze Arduino znajdzie się w trudno dostępnym miejscu… cóż, wygoda niesamowita.
WiFi to mało – RESTful API do Arduino
Teraz kilka słów o mostku czyli Bridge. Jest to połączenie między AR9331 a ATmega32u4, czyli biblioteka która pozwala przez interfejs REST komunikować się bezpośrednio z ATmega32u4. Skorzystajmy z przykładu: http://arduino.cc/en/Tutorial/Bridge wgrywamy ten szkic na nasze Arduino i od teraz mamy gotowy interfejs by zmieniać stan portów cyfrowych przez zapytania HTTP.
Na szybko napiszmy prosty skrypt, podłączmy diodę do portu 12 (bo po co korzystać z gotowej na 13 :) ) i testujmy. Skrypt to:
curl http://arduino.local/arduino/mode/12/output curl http://arduino.local/arduino/digital/12/1 sleep 2 curl http://arduino.local/arduino/digital/12/0 sleep 2 curl http://arduino.local/arduino/digital/12/1 sleep 2 curl http://arduino.local/arduino/digital/12/0 sleep 2 curl http://arduino.local/arduino/digital/12/1 sleep 2 curl http://arduino.local/arduino/digital/12/0 sleep 2 curl http://arduino.local/arduino/digital/12/1 sleep 2 curl http://arduino.local/arduino/digital/12/0 sleep 2
Innymi słowy Blink, czyli miganie diodą, ale przez sieć i WiFi.
Spójrzcie na ten filmik, w tle widać jak wykonuje się skrypt a na pierwszym planie YUN blinkuje naszą diodą.
Podsumowanie – na gorąco
Na pierwszy rzut oka – Arduino YUN to fantastyczna platforma. Bezproblemowy dostęp do Arduino przez sieć, to jest to czego dotąd brakowało. W zastosowaniach tego typu, pewnie będzie się lepiej sprawdzać niż Raspberry Pi. Ale potestujemy jeszcze to się przekonamy.
Zobaczyłem to Bridge dokładnie i rzeczywiście wymiata. Bardzo łatwo stworzyć usługę http w kontrolerze.
Już mam na myśli pełno zastosowań.
Właśnie mnie znudziło zwykłe Arduino i szukałem czegoś lepszego. YUN wygląda bardzo obiecująco, połączenie możliwości linuxa i nadal prostoty programowania.
Mam nadzieję że będzie więcej takich artykułów, będzie łatwiej podjąć decyzję którą platformę wybrać.
A tak przy okazji to możecie jeszcze coś polecić prócz BeagleBone i Raspberry Pi? Może gotowe rozwiązanie z dotykowym LCD? Ale bez też mnie interesuje.
I już jutro będzie u mnie :)
@Piotrek,
To wiedz, że następna dostawa najwcześniej na przełom października/listopada… Wiec kto się nie pospieszy będzie musiał czekać :)
@MWM
Szczerze mówiąc nie mam doświadczenia w kwestii platform linuxowych by doradzać…
Z ekranem dotykowym polecam tablet na Androidzie :-)
Można coś podłączyć przez ADK.
@netmaniac Chłopaki z Nettigo mają jeszcze 7 na magazynie, aczkolwiek fakt, że ilość Yunów jest ograniczona :)
Pytanie może trochę laickie i z innej beczki ale zastanawiam się: Czy można i w jaki sposób sterować serwem poprzez GUI routera z OpenWrt (np. Gargoyle)do którego podłączone jest pod usb Arduino? – tak by nie wydawać komend typu: „curl http://arduino.local/arduino/digital/12/0” bo w tym przypadku musielibyśmy sterować nim o określony kąt przypisany do pewnych wartości/liczb/znaków ale wykonywać płynne ruchy o X-stopni…
Wydaje mi się, że możesz w Yun stworzyć serwer stron internetowych prezentujących GUI do obsługi twojego urządzenia. Jest tam wbudowany Python 2.7, dzięki któremu możesz stworzyć różne usługi internetowe.
Jak nie chcesz się w to babrać, możesz utworzyć własną stronę w HTML z tymi linkami, i zmieniać ich poszczególne parametry za pomocą JavaScript i różnych kontrolek html.
Jeśli potrzebujesz komunikacji ze stroną w czasie rzeczywistym to istnieją też odpowiednie biblioteki operujące na WebSocket.
Witam czy arduino yun będzie działało bez problemu z http://nettigo.pl/products/355 ?
Jasne nie powinno być problemów.
Arduino Yun to takie Arduino Leonardo tylko połączone z dodatkowym komputerem z Linuksem przez piny 0 i 1.
Jak by co jest jeszcze elastyczna alternatywa:
http://nettigo.pl/products/508
Ale wszystko zależy od twoich potrzeb.