TCP IP i mikrokontrolery, cz 4


K U R S
Przykłady zastosowań TCP/IP
w mikrokontrolerach, część 4
Aplikacja serwera HTTP
umożliwiająca odczyt
temperatury oraz sterowanie
diodą LED przez przeglądarkę
Protokół HTTP (HyperText Trans-
fer Protocol) jest wykorzystywany
do przeglądania stron www. Jest
on oparty na mechanizmie pyta- Listingi do artykułu
są umieszczone na płycie
nie odpowiedz. Klient żąda prze-
CD-EP6/2006B oraz na stronie
słania strony z serwera www, od- http://download.ep.com.pl
powiedzią jest przesłanie strony do
klienta. Protokół HTTP wykorzystuje
port o numerze 80. Po udzieleniu
Jak mówi stare przysłowie:  co dwie głowy to nie jedna . A gdy
odpowiedzi na zapytanie klienta
głów tych będą tysiące, a nawet miliony? Aż strach pomyśleć.
połączenie jest zrywane do czasu
Tymczasem taką globalną siłę intelektu mamy dziś w zasięgu
otrzymania następnego zapytania.
ręki, ba  nawet z niej korzystamy. Wszystko za pośrednictwem
W zapytaniach wykorzystuje się kil-
ka metod jak: GET, HEAD, POST,
terabajtów informacji, które w każdej sekundzie przesyłane są
PUT itp. W przykładowej aplikacji
olbrzymią siecią informatyczną oplatającą całą kulę ziemską.
będą wykorzystywane głównie meto-
dy GET, HEAD oraz POST. Metoda
GET jest wykorzystana w zapytaniu z poziomu przeglądarki umożliwia
do żądania przesłania strony www wysłanie (z wykorzystaniem formula-
o określonym adresie. Podobna do rza i metody POST) danych o stanie
GET jest metoda HEAD, która nie diody LED (możliwe włączenie lub
zwraca do klienta treści przesyłki. wyłączenie diody LED). W serwerze
Inaczej jest z metodą POST (wy- HTTP jest także możliwość włącze-
korzystywaną podczas przesyłania nia autoryzacji poprzez ustawienie
danych z formularzy) pozwalająca odpowiedniej stałej. Aby otrzymać
żądać od serwera przyjęcia załą- żądaną stronę należy w takim przy-
czonych danych jako nowej, skiero- padku podać nazwę użytkownika
wanej do niego publikacji. Protokół i hasło. Do zestawu TCP/IP zo-
HTTP jest prosty w działaniu. Ser- stał dołączony czujnik temperatury
wer po otrzymaniu np. metody GET DS18B20 oraz dioda LED w sposób
z adresem strony, wysyła do klienta pokazany na rys. 16. Na wyświetla- Rys. 17. Okno autoryzacji
(przeglądarki) ciąg znaków strony czu LCD zestawu będzie wyświetla-
www napisanej np. w HTML. W ra- ny komunikat powitalny oraz zmie- do dokładności równej 1oC. War-
mach tego przykładu zostanie przed- rzona temperatura. Dodatkowe in- tość zmierzonej temperatury zosta-
stawiona aplikacja serwera HTTP, formacje o pracy serwera będą tak- je zapisana w postaci tekstowej do
który na zapytanie klienta (wysła- że wysyłane przez interfejs RS232 zmiennej Temperature. W programie
nie adresu /index.htm) wysyła stro- do komputerowego terminala. Na występuje stała Authenticate. Jeśli
nę powitalną, na której umieszcza list. 8 przestawiono program pracu- ma wartość równą 1, przy dostęp-
zmierzoną przez niego czujnikiem jący jako serwer HTTP. W pierwszej nie do strony www będzie dodat-
DS18B20 temperaturę. Dodatkowo kolejności konfigurowany jest wy- kowo przeprowadzana autoryzacja.
świetlacz LCD oraz moduł TCP/IP. Aby otrzymać stronę www, należy
Linia, do której została dołączona podać login oraz hasło. Instrukcje
dioda LED oraz linia będąca magi- obsługujące protokół HTTP działają
stralą 1Wire jest konfigurowana jako w nieskończonej pętli do loop. In-
wyjście. W programie występuje jed- strukcja wyboru case jest identycz-
na procedura Pom_temp służąca do na jak w poprzednich programach.
odczytu temperatury z termometru Ponieważ aplikacja pracuje jako
DS18B20. W tej procedurze w pierw- serwer, gniazdo zostaje otwarte do-
szej kolejności wysyłany jest rozkaz piero po sprawdzeniu statusu. Jeśli
Rys. 16. Sposób dołączenia czujnika pomiaru. Po opóznieniu ok. 1 se- gniazdo jest zamknięte (Sock_clo-
temperatury DS18B20 oraz diody LED kundy następuje odczyt temperatu- sed), następuje otwarcie gniazda
do zestawu TCP/IP ry oraz odpowiednia jej konwersja z portem 80 charakterystycznym dla
Elektronika Praktyczna 7/2006
108
K U R S
ne w formacie Base64. danych wykorzystywane są instruk-
W opisywanym przy- cje restore oraz read. Po wysłaniu
kładzie loginem jest do przeglądarki liczby przesyłanych
test i hasłem jest rów- danych następuje wysłanie strony
nież test. W dalszej www odczytywanej kolejno z pamię-
kolejności z otrzyma- ci programu. W kod strony podczas
nych danych odczyty- jej wysyłania wplatana jest wartość
wany jest login i hasła temperatury oraz stan diody LED.
i dekodowane funkcją W przypadku otrzymania strony
base64dec. Jeśli login www o nazwie innej niż /index.htm,
i hasło są identyczne wysyłana jest strona www, która
z tymi, które zapisa- powoduje przekierowanie strony na
no w programie, to adres /index.htm. Tak jak w przy-
zmiennej Bauth zostaje padku głównej strony, najpierw ob-
przypisana wartość 1 liczana jest i wysyłana liczba da-
Rys. 18. Wygląd pobranej z serwera strony WWW (wyłączenie ponownej nych, a następnie sama strona www
autoryzacji). Także do informująca o przekierowaniu. W ko-
protokołu HTTP. Kolejna instruk- zmiennej Ipcon zostaje zapisany dzie HTML instrukcja:
cja konfiguruje otwarte gniazdo do adres IP klienta. Jest on zapamię- meta HTTP EQUIV= refresh
pracy w trybie serwera (nasłuchu). tywany, aby po odświeżeniu strony CONTENT= 5
W przypadku otrzymania statusu nie była przeprowadzana ponowna powoduje, że strona www bę-
Sock_close_wait, otwarte gniazdo autoryzacja, aż do zamknięcia prze- dzie automatycznie odświeżana co
zostaje zamknięte, co ma miejsce glądarki www. Po przeprowadzonej 5 sekund. Znaki o kodzie ASCII
po wysłaniu strony www do klien- poprawnie autoryzacji, do przeglą- 034 to znaki cudzysłowia ( ). Wspo-
ta. Po otrzymaniu statusu Sock_es- darki zostaje wysłane polecenie minaliśmy wcześniej o możliwości
tablished świadczącego o żądaniu o kodzie 200 informujące, że będzie sterowania przez serwer diodą LED
klienta, sprawdzany jest jego adres wysyłana strona www. W przypadku z poziomu przeglądarki. Wykorzysta-
IP (pobrany za pomocą instruk- wyłączonej autoryzacji także będzie no do tego celu przyciski wysłania
cji getdstip) z adresem znajdującym wysyłane identyczne polecenie. Po formularza przy pomocy metody
się w zmiennej Ippon. Jeśli adresy wysłaniu tego typu polecenia, na- POST. Instrukcje zapisane w HTML
są różne, zmienna Bauth przyjmuje stępuje skok do podprogramu struc, realizujące wysłanie formularza
wartość 0. Porównanie adresów jest w którym jest wysyłana strona z komunikatem zapalenia diody LED
wykonywane, aby autoryzacja była www. Do klienta najpierw należy są następujące:
jednorazowa dla danego klienta, wysłać informację o tym, ile danych

a nie wymagana po każdorazowym będzie wysyłanych, po czy można odświeżeniu strony www w prze- wysłać samą stronę www. Przed name= ledon >
glądarce. W dalszej części programu wysłaniem strony www, do prze- sprawdzane jest czy są jakieś dane glądarki jest wysyłany komunikat ON >


do odebrania. Jeśli są, sprawdza- Content Type: text/html, informujący Dla przycisku wyłączającego dio-
na jest metoda zapytania. Jeśli jest o formie zapisu strony www (zapis dę LED, instrukcje będą podobne,
to GET lub HEAD, zmienna BCMD w języku HTML). W pierwszej kolej- z tym że wyraz ledon zostanie za-
przyjmuje wartość 1 oraz następuje ności sprawdzany jest adres żądanej stąpiony wyrazem ledoff. Naciśnię-
skok do podprogramu page. W tym strony www. Jeśli jest identyczny cie przycisku spowoduje wysłanie
podprogramie z otrzymanych danych z /index.htm, to wysyłana jest stro- do serwera zapytania z wykorzy-
z przeglądarki zostaje odczytana na- na www, przy czym w pierwszej staniem metody POST. Po wykry-
zwa żądanej strony www. Nazwa kolejności obliczana jest liczba da- ciu przez serwer tej metody wy-
żądanej strony zostaje zapisana do nych, jaka będzie wysyłana do konywany jest podprogram page,
zmiennej Shtml. Jeśli autoryzacja przeglądarki. Liczba danych jest ob- a zmiennej Bcmd zostaje przypisa-
zostaje włączona i sprawdzane ad- liczana z wykorzystaniem instrukcji na wartość 2. W przypadku metody
resy IP są różne (zmienna Bauth Len. Obliczenia są prowadzone aż POST wykrywany jest komunikat
wynosi 0), do przeglądarki klienta do napotkania tekstu końca strony Content Length: z którym związana
jest wysyłane polecenie o kodzie . Liczba wysy- jest liczba wysłanych przez prze-
401, będące żądaniem autoryzacji. łanych danych jest zapisywana glądarkę danych. Liczba wysłanych
W kolejnej linii wysyłana jest na- w zmiennej wsize. Jest ona wy- danych z przeglądarki jest zapisy-
zwa serwera, który żąda autoryzacji. syłana za komunikatem Content wana do zmiennej Bcontent. Jeśli
Będzie ona wyświetlana w okienku  Length:. Na liczbę wysyłanych da- zmienna Bcmd jest równa 2, przy
autoryzacji, które zostało pokazane nych mają wpływ nie tylko dane metodzie POST po instrukcjach au-
na rys. 17. Po wysłaniu informacji zapisane w HTML samej strony, ale toryzacji następuje odczyt danych
o autoryzacji, następuje ponowne uwzględniana jest też wartość zmie- wysłanych po naciśnięciu przycisku
oczekiwanie na dane od klienta. Je- rzonej temperatury oraz stan diody wysyłającego formularz. Wysłane
śli w otrzymanych danych znajdu- LED. Strona www została zapisana dane są odczytywane do zmiennej
je się tekst Authorization: Basic, to w pamięci programu za pomocą in- Buf leżącej w tej samej przestrzeni
znaczy że otrzymano z przeglądarki strukcji data. Jest ona identyfikowa- adresowej pamięci mikrokontrolera
nazwę użytkownika i hasło kodowa- na etykietą www. Do odczytu tych co zmienna s. Liczbę odbieranych
Elektronika Praktyczna 7/2006
109
K U R S
Na rys. 19 cjach (po odpowiednich
przedstawio- przeróbkach). Dokładniej-
no informa- szych informacji o proto-
cje wysłane kołach TCP i UDP należy
p r z e z m i - szukać w dokumentach
krokontroler RFC. W artykule nie wy-
do terminala czerpano wszystkich za-
podczas dzia- gadnień. Nie przedstawio-
łania serwe- no także wszystkich moż-
ra HTTP. Na liwych instrukcji zwią-
p o d s t a w i e zanych z modułem TCP,
o p i s a n e g o a dokładnie biblioteką
Rys. 19. Postać informacji wysłanych przez mikrokontroler do terminala w y ż e j s e r - tcpip.lbx jak np.: getdst-
podczas działania serwera HTTP wera HTTP port, która umożliwia od-
p o k a z a n o czyt portu podłączonego
danych wskazuje zmienna index.html jak wykorzystując język klienta, udpwrite wysyłają-
Bcontent. Jeśli otrzymano P o z a l o g o w a n i u HTML zaprezentować na ca protokołem UDP dane
tekst ledon, dioda LED (rys. 17) zostaje wyświe- stronie www informacje czy instrukcji maketcp,
zostaje zapalona, a jeśli le- tlona strona www, która uzyskane z czujnika tem- która formatuje adres IP
doff dioda zostaje zgaszo- automatycznie jest od- peratury oraz jak można do zmiennej LONG. Pod-
na. Temperatura jest mie- świeżana co 5 sekund. sterować układem wyko- czas testów programów
rzona zawsze po wysłaniu Na rys. 18 przedstawiono nawczym, którym wcale bardzo pomocny okazuje
strony www. W tym cza- wygląd pobranej z serwera nie musi być dioda LED się komputerowy terminal
sie jest także wyświetla- strony www. Wyświetla-  równie dobrze może to oraz program easytcp.exe.
na na wyświetlaczu LCD. na jest na niej zmierzo- być np. przekaznik, czy Jeśli Czytelnicy będą
Aby pobrać stronę www na temperatura oraz stan triak załączający urządze- zainteresowani tą tematy-
z serwera, w przeglądarce diody LED. Przycisk LED nie o większym obciąże- ką, w przyszłości zostaną
należy wpisać następujący ON włącza diodę LED, niu. przedstawione kolejne apli-
adres: http://192.168.1.8/ a LED OFF wyłącza ją. kacje, jak serwer DHCP
Podsumowanie czy FTP, a także aplikacje
W y k o r z y s t y w a n i e umożliwiające połączenie
Ethernetu oraz Interne- się z Ethernetem czy In-
tu w wielu nietypowych ternetem za pomocą naj-
aplikacjach będzie się co- prostszego mikrokontrolera
raz bardziej rozpowszech- wykorzystującego do tego
niało. Już dziś można interfejs I2C (potrzebnych
w prosty sposób dołączyć jest tylko kilka linii mi-
do sieci mikrokontroler 8 krokontrolera). Tego typu
 bitowy, co zostało przed- komunikację umożliwia
stawione w przykładach. wykorzystywany w artyku-
Miejmy nadzieję, że opi- le moduł IIM7000A lub
sane w artykule programy IIM7010. Prosimy o listy
wykorzystujące protokoły w tej sprawie.
TCP i UDP wiele wyja- Marcin Wiązania, EP
śniły i że będą przydatne marcin.wiazania@ep.com.pl
w wielu własnych aplika-
Elektronika Praktyczna 7/2006
110


Wyszukiwarka

Podobne podstrony:
TCP IP i mikrokontrolery, cz 1
TCP IP i mikrokontrolery, cz 2
TCP IP i mikrokontrolery, cz 3
DNS Konfiguracja w sieci TCP IP
TCP IP a model OSI
,sieci komputerowe,Zestaw protokołów TCP IP (2)
TCP IP Księga eksperta
Protokół TCP IP R01 5
Bezpieczeństwo w sieciach TCP IP

więcej podobnych podstron