Arduino YUN - pierwsze kroki

Arduino YUN to fantastyczna platforma. Bezproblemowy dostęp do Arduino przez sieć, to jest to czego dotąd brakowało. W zastosowaniach tego typu, gdzie potrzeba interakcji z elektroniką a potem wysyłania danych w sieć, pewnie będzie się lepiej sprawdzać niż Raspberry Pi.

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.

Arduino YUN - widok ogólny

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.

Złącza Arduino YUN

Arduino YUN – spód

Programowanie Arduino YUN

Pierwsze koty za płoty…

Na pokładzie jest ATmega32u4 czyli niby jak Arduino Leonardo, jednak… Na razie na sucho przeglądając
arduino.cc nietrudno 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:

Po zalogowaniu do panelu

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:

Tego jeszcze nie było - hasło do Arduino

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.

Nie tylko wygoda - jak się przekonacie w kolejnych przykładach, jeżeli Wasz projekt zawiera też pliki HTML, zostają one automatycznie załadowane na kartę microSD w YUN podczas ładowania szkicu. Oczywiście tylko gdy programowanie odbywa się przez WiFi. Programowanie przez kabel microUSB działa tak jak w Leonardo - po prostu ładuje szkic do pamieci flash.

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: 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ą.

Co z tego wynika?

Arduino YUN, jest potężnym narzędziem w rodzinie Arduino. Z jednej strony Arduino Leonardo, z mnogością gotowych rozwiązań na sterowanie praktycznie wszystkim, z drugiej strony OpenWRT na którym może działać skrypt robiący wiele rzeczy, które trudno było zrobić na Arduino - łączność z Internetem, dość rozbudowana aplikacja WWW zamiast prostej strony HTML - to wszystko jest w zasięgu ręki!