Zdalne sterowanie Arduino

ethernet shieldW dzisiejszym wpisie chciałem zaprezentować, jak w prosty i szybki sposób możemy wykonać zdalne sterowanie Arduino. W założeniach projektu inteligentnego domu jest możliwość sterowania oświetleniem przez aplikację www z dowolnego miejsca. Z pomocą przychodzi nam projekt Teleduino. Jest to darmowa usługa stworzona przez Nathana Kennedy’ego. Usługa nie wymaga żadnych specjalnych szkiców — aby sterować układem Arduino, wystarczy wywołać specjalny adres URL w przeglądarce internetowej.

Do celów testowych wykorzystałem 4 diody led aby sprawdzić działanie wspomnianej usługi. Docelowo wykorzystam Teleduino do sterowania przekaźnikami RM6.

układ led

 

Aby móc korzystać z Teleduino, niezbędny jest moduł ethernet shield oraz kabel sieciowy podłączony do routera z dostępem do internetu. Warto również zbudować sobie prosty układ do testowania.

Pierwszym krokiem jest rejestracja i utworzenie unikalnego klucza identyfikującego. Robimy to wypełniając odpowiednie pola na stronie projektu. Po chwili na naszą skrzynkę e-mail trafi nasz unikatowy klucz który będzie miał następującą postać:

178544321Z9AEFF952ABCDEF8534B2BBF

Otrzymany klucz należy następnie przekonwertować na zmienną tablicową za pomocą narzędzia Arduino Sketch Key. Po poprawnym wygenerowaniu tablicy powinniśmy otrzymać coś takiego:

teleduino array

Każdy klucz jest unikatowy i przypisany do jednej płytki Arduino więc niema obawy, że wygenerujemy kod którym będziemy sterować inną płytką niż swoją. Również mamy pewność, że nikt nie przejmie kontroli nad naszą płytką. Chyba że udostępnimy komuś  API KEY.

Kolejnym krokiem jest pobranie biblioteki Teleduino i skopiowanie jej do katalogu gdzie znajduje się IDE ARDUINO. W moim wypadku jest to ścieżka:

C:\Program Files (x86)\Arduino\libraries

Uruchamiamy ponownie środowisko Arduino IDE i z menu PLIK->PRZYKŁADY wybieramy TELEDUINO328->Teleduino328/TeleduinoEthernetClientProxy.

W środowisku IDE zostanie wyświetlony szkic Teleduino. Przed wysłaniem tego szkicu na płytkę Arduino należy zastąpić domyślny klucz wygenerowaną wcześniej tablicą.
Po zastąpieniu tej zmiennej należy zapisać i wysłać szkic na płytkę Arduino.

Możemy teraz połączyć platformę Arduino z siecią i obserwować diodę LED. Po około 30 sekundach dioda powinna kilka razy zamigać i zgasnąć. Po prawidłowym nawiązaniu połączenia dioda LED powinna migać raz na około 5 sekund. Ponieważ dioda LED stanu połączenia jest sterowana przez pin cyfrowy nr 8, podczas stosowania usługi Teleduino nie możemy wykorzystać tego pinu do żadnych innych celów.

ethernet shield

 

Jak sterować pinami za pomocą adresu URL?

Sprawa jest banalnie prosta. Wpisujemy w adres dowolnej przeglądarki następujący ciąg:

http://us01.proxy.teleduino.org/api/1.0/328.php?k={KLUCZ}=setDigitalOutput&pin={X}&output={Y}

W miejsce {KLUCZ} wpisujemy oczywiście swój indywidualny klucz, który otrzymaliśmy pocztą elektroniczną. W pole {X} oraz {Y} wpisujemy odpowiednio numer pinu którym chcemy sterować oraz wartość 1 (stan wysoki) lub 0 (stan niski).

Przykład: chcemy aby na pinie numer 5 uzyskać stan wysoki. Wpisujemy następujący adres URL w pasku przęglądarki:

http://us01.proxy.teleduino.org/api/1.0/328.php?k=F33B9E28FFB3223321A7FIII21DC83369&r=setDigitalOutput&pin=5&output=1 

 

Teleduino to świetna biblioteka jeżeli chodzi o proste sterowanie przez Internet. Posiada również wiele innych funkcji takich jak sterowanie PWM. Po więcej informacji zapraszam do dokumentacji projektu jak również do książki Arduino. 65 praktycznych projektów wydawnictwa Helion.

18 myśli na temat “Zdalne sterowanie Arduino

    1. Sprawdź czy Twoje arduino ma dostęp do sieci, możesz to zrobić za pomocą routera i listy aktywnych urządzeń. Jak zdobędziesz adres IP – puść ping. Pamiętaj, że w URL też musisz podmienić klucz na ten który otrzymałeś.

        1. Przy takim zapytaniu (pomijam mój API KEY) &r=setDigitalOutput&pin=0&output=0
          jest taka odpowiedź na przeglądarce:
          {„status”:200,”message”:”OK”,”response”:{„result”:0,”time”:0.23519706726074,”values”:[]}}

          1. Niestety, jeżeli Arduino nie pinguje to może być problem ze sketchem lub modułem ethernet shield. Sprawdź jeszcze czy uruchomi się u Ciebie przykład z Arduino IDE -> przykłady->ethernet>webserver. Po wpisaniu w pasku przeglądarki adresu IP arduino powinna wyświetlić się jakaś treść.

    1. Odwołuje poprzedni komentarz. Jest innym problem po wpisaniu adresu IP, odpowiedź przeglądarki jest następująca: ERR_CONNECTION_TIMED_OUT

      1. Sprawdź proszę poprawność połączenia sieciowego: kabel, ustawienia routera, adresacja, adres mac. Wina również może leżeć po stronie ethernet shield.

        1. Adres MAC ethernet shield jest taki jaki był nic nie zmieniałem, tylko ten klucz jak pisali w instrukcji. Kabel jest nowy. Adresacja, sprawdzam w ustawieniach router w DHCP Client List i jest ten shield z mac adresem takim.

          1. To niestety, nie jestem w stanie nic pomóc. Obawiam się, że wina może być po stronie ethernet shield. Skoro nawet na ping nie odpowiada. Jeżeli kupiłeś jakiś klon/podróbkę to możesz napisać do sprzedawcy z prośbą o wymianę.

    1. Nie dało mi to spokoju i do tej biblioteki tej oryginalnej dopisałe, na początku funkcji loop() dodałem linijkę Serial.print(serverIp); i zwróciło mi to adres IP: 173.230.152.173. Po wpisaniu tego w CMD PING odpowiedź była poprawna, pinguje.

  1. ta metoda GetAllInputs u mnie jako tako działa tzn. nie raz jak odświeżę to się zmieniają wartości w values choć niż nie podłączałem ani nie odłączałem.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *