Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska
Programowanie aplikacji sieci Ethernet Przykład 1 Na podstawie: Monk S.: Arduino dla początkujących, HELION, Gliwice 2014 2
Arduino z nakładką Ethernet 3
W szkicu przykładu na początku umieszczono dwie linie kodu, które należy dostosować do swojej sieci W sieci nie mogą znajdować się dwa urządzenia posiadające identyczny adres MAC Dla nakładki Ethernet nie ma możliwości automatycznego nadania adresu IP Należy przypisać do Arduino adres IP należący do puli adresów wewnętrznych sieci Adres IP musi być obsługiwany przez ruter swojej sieci Adres będzie miał postać: 10.0.1.x lub 192. 168.x 4
Po połączeniu Arduino z PC za pośrednictwem USB, należy załadować szkic i odłączyć kabel USB Podłączyć do Arduino zasilanie zewnętrzne oraz kabel sieci Ethernet W przeglądarce internetowej należy wpisać adres IP, przypisany wcześniej do Arduino Efekt działania prostego serwera Program odczytuje wartość analogową z portu A0 oraz wartość zwracaną przez funkcję millis() 5
Szkic projektu 6
Szkic projektu Inicjowanie biblioteki Ethernet oraz transmisji szeregowej 7
Szkic projektu Protokół przesyłania hipertekstu (HTTP) w kodzie HTML 8
Szkic projektu client.stop informuje przeglądarkę o przesłaniu wszystkich danych 9
Programowanie aplikacji sieci Ethernet Przykład 2 - konfigurowanie złączy Arduino za pośrednictwem sieci Na podstawie: Monk S.: Arduino dla początkujących, HELION, Gliwice 2014 10
Sterowanie wyjściami Arduino D3-D7 (z nakładką Ethernetową) za pośrednictwem sieci Wykorzystywana jest metoda przesyłanie danych w standardzie HTTP W kod HTML trzeba wbudować mechanizm wysyłający formularz z Arduino do przeglądarki Kliknięcie przycisku Uaktualnij wysyła do Arduino wybrane ustawienia Ponowne kliknięcie przycisku Uaktualnij wysyła kolejne żądanie 11
Sterowanie wyjściami Arduino D3-D7 (z nakładką Ethernetową) za pośrednictwem sieci 12
Sterowanie wyjściami Arduino D3-D7 (z nakładką Ethernetową) za pośrednictwem sieci 13
Sterowanie wyjściami Arduino D3-D7 (z nakładką Ethernetową) za pośrednictwem sieci 14
Sterowanie wyjściami Arduino D3-D7 (z nakładką Ethernetową) za pośrednictwem sieci 15
Sterowanie wyjściami Arduino D3-D7 (z nakładką Ethernetową) za pośrednictwem sieci 16
Sterowanie wyjściami Arduino D3-D7 (z nakładką Ethernetową) za pośrednictwem sieci Cd. void writehtmlforpin(ethernetclient client, int i) 17
Sterowanie wyjściami Arduino D3-D7 (z nakładką Ethernetową) za pośrednictwem sieci 18
Sterowanie wyjściami Arduino D3-D7 (z nakładką Ethernetową) za pośrednictwem sieci 19
Sterowanie wyjściami Arduino D3-D7 (z nakładką Ethernetową) za pośrednictwem sieci 20
Sterowanie wyjściami Arduino D3-D7 (z nakładką Ethernetową) za pośrednictwem sieci W szkicu użyto dwóch tablic służących do sterowania portów Arduino pinstate[] - przechowuje stan wyjść pins[] - określa adresy portów (numery Arduino) Arduino musi odczytać nagłówek generowany przez przeglądarkę pobranie informacji przesłanych do Arduino za pomocą formularza Wystarczą dane zawarte w pierwszej linii nagłówka Te dane przechowuje tablica line1[] 21
Sterowanie wyjściami Arduino D3-D7 (z nakładką Ethernetową) za pośrednictwem sieci Użytkownik po kliknięciu Uaktualnij wysyła dane z przeglądarki Adres URL strony Parametry rozpoczynają się po znaku? i są rozdzielone separatorem & 0=1 oznacza, że pierwsze wyjście o num. 3 zostanie włączone; 4=0 oznacza wyłączenie wyj. o num. 7 22
Sterowanie wyjściami Arduino D3-D7 (z nakładką Ethernetową) za pośrednictwem sieci W pierwszej linii nagłówka występują te same parametry żądania Zapis GET / wskazuje stronę główną, żądaną przez przeglądarkę Funkcja readheader() odczytuje pierwszą linię nagłówka Funkcja pagenameis() sprawdza czy żądana jest strona główna 23
Sterowanie wyjściami Arduino D3-D7 (z nakładką Ethernetową) za pośrednictwem sieci Następnie szkic generuje nagłówek i kod HTML wyświetlanego formularza Funkcja setvaluesfromparams() odczytuje każdy z parametrów żądania i uaktualnia tablicę pinstates[] Porty ustawiane są zgodnie z tablicą pinstates[] Dla każdej linii portu wywoływana jest funkcja writehtmlforpin(), która generuje listę wyboru Funkcje redheader(), pagenameis() i value0fparam() są funkcjami ogólnego przeznaczenia i mogą być wykorzystane w innych projektach 24
Programowanie aplikacji sieci Ethernet Przykład 3 - komunikacja z portalem Twitter Na podstawie: Evans M., Noble J., Hocenbaum J.: Arduino w akcji HELION, Gliwice 2014 25
Komunikacja z portalem Twitter Prosta zasada działania portalu Twitter Posiadacz konta może rozsyłać w całej sieci Twitter komunikaty (tweety) o długości maksymalnie 140 znaków. Inni użytkownicy mogą zapisywać się do różnych kanałów i automatycznie otrzymywać z nich aktualizacje tweetów Twitter dobrze współpracuje z innymi usługami, można np. automatycznie wysyłać tweety do konta w portalu Facebook Projekt polega na skonfigurowaniu Arduino z nakładką Ethernet tak aby po naciśnięciu przycisku połączonego z Arduino, automatycznie wysyłać komunikaty do portalu Twitter 26
Komunikacja z portalem Twitter Założenie konta w portalu Twitter (www.twitter.com) Pobranie specjalnego tokena, który umożliwi autoryzację Arduino podczas wysyłania komunikatów przez to konto Token umożliwia pośredniemu serwerowi WWW mediację pomiędzy Arduino a portalem Twitter Możliwa jest również bezpośrednia komunikacja z portalem, ale korzystanie z usługi pośredniczącej jest lepsze (m.in. mniejsza biblioteka Twitter) Pobieranie tokena otworzyć stronę http://arduino-tweet.appspot.com Kliknąć odnośnik Step 1: Get a token to post a message using OAuth 27
Komunikacja z portalem Twitter Funkcje biblioteki Twitter 28
Komunikacja z portalem Twitter Połączenia Po podłączeniu nakładki Ethernet skopiować szkic. 29
Komunikacja z portalem Twitter 30
Komunikacja z portalem Twitter 31
Komunikacja z portalem Twitter 1 - próba podłączenia do sieci z usługą DHCP 2 gdy niemożliwe, ręczne przypisanie adresu 3 otwarcie połączenia szeregowego dla komunikatów diagnostycznych 4 wysyłanie tweeta gdy nawiązane połączenie z portalem 5 test przycisku i wysłanie tweeta 32
Komunikacja z portalem Twitter Twitter wysyłanie tego samego komunikatu w krótkich odstępach i dlatego w programie inkrementacja naciśnięć 33
Dziękuję Zygmunt Kubiak 34 09-200 6