AVT-5166.pdf

(1798 KB) Pobierz
032-035_serwer_http.indd
PROJEKTY
Dodatkowe materiały >>
Serwer HTTP
Opisywany projekt może
posłużyć jako bazowy do
realizacji wielu różnych
urządzeń kontrolowanych
poprzez sieć Internet lub
Ethernet. Jest klasycznym
przykładem użycia prostych
i ogólnie dostępnych narzędzi
do realizacji ambitnego zadania.
Autor zaimplementował pomiar
temperatury i sterowanie
funkcją włącz/wyłącz za
pomocą strony WWW, jednak
korzystając z opisywanego
rozwiązania, można zbudować
urządzenie służące do
realizacji znacznie bardziej
zaawansowanych zadań
i kontroli wielu różnych
parametrów.
Rekomendacje:
serwer HTTP może stanowić
inspirację dla konstruktorów
projektujących urządzenia
i instalacje kontrolowane zdalnie,
np. dla inteligentnych budynków.
Sieć Internet jest dziś prawie w każdym
domu, a większość z nas posiada stały dostęp
do Internetu. Dlaczego zatem nie wykorzystać
tego ogólnie dostępnego medium do komunika-
cji z mikrokontrolerem? Podłączając go do sieci
uzyskuje się wygodną, dwukierunkową komuni-
kację niemalże z dowolnego miejsca na świecie.
W prezentowanym urządzeniu mikrokontroler
pełni rolę serwera http. Wartości zmierzonej
temperatury i przyciski sterujące wyświetlane
są na stronie WWW. Zastosowanie przeglądarki
stron internetowych jako interfejsu użytkowni-
ka, zwalnia użytkownika z konieczności instalo-
wania i poznawania dodatkowych programów
komunikacyjnych. Dzięki łatwej, intuicyjnej
obsłudze, z układu może korzystać każdy, kto
umie poruszać się po Internecie. Na wygene-
rowanej przez urządzenie stronie internetowej
wskazywane są temperatury minimalna i mak-
symalna oraz wyświetlane są przyciski umożli-
wiające wyzerowanie temperatur, i sterowanie
obciążeniem dołączonym do przekaźnika.
Budowa
Schemat serwera HTTP przedstawiono na
rys. 1 . Jego sercem jest mikrokontroler ATme-
ga32 firmy Atmel, pracujący z zewnętrznym
rezonatorem kwarcowym. Do połączenia mi-
kroprocesora z siecią Ethernet zastosowano
moduł NM7010A firmy Wiznet, zawierający
wszystko to, co jest potrzebne do umożliwienia
Atmedze komunikowania się za pomocą proto-
kołu TCP/IP. Producent wyposażył go w gniaz-
do RJ-45 oraz 2 diody LED informujące o stanie
interfejsu. Moduł komunikuje się z otoczeniem
za pomocą interfejsu I 2 C, co nie jest bez zna-
czenia, ponieważ konieczne jest użycie tylko
dwóch doprowadzeń portów. Napięcie za-
silania modułu jest równe 3,3 V, jednak na
doprowadzeniach interfejsu I 2 C dopuszczalne
jest używanie napięć o poziomach TTL, bez ko-
nieczności stosowania dodatkowych układów
dopasowujących poziomy napięć. Układ scalo-
ny W3150A umożliwia otwarcie 4 niezależnych
gniazd komunikacyjnych ( sockets ). Gniazda
dzielą pomiędzy siebie bufor danych o wielko-
ści 16 kB. Powód, dla którego wybrano właśnie
ten moduł komunikacyjny był taki, że kompila-
tor Bascom ma gotowe do użycia funkcje jego
obsługi, co znacznie skraca czas od pomysłu do
realizacji.
Komunikacja przy pomocy I 2 C wymaga, aby
każde urządzenie podłączone do interfejsu
posiadało swój adres. Tak jest również w przy-
padku użytego modułu komunikacyjnego. Jego
adres można ustalić za pomocą doprowadzeń
oznaczonych jako A8...A14 (A14 to bit bardziej
znaczący), na które należy podać albo stan niski
zwierając je do masy, albo stan wysoki podając
poprzez rezystor zasilający o wartości 10 k V
napięcie 3,3 V. W opisywanym urządzeniu
adres modułu ustalono na 80H, czyli binarnie
10000000. Oczywiście w zależności od po-
AVT–5166
W ofercie AVT:
AVT–5166A – płytka drukowana • AVT–5166B – płytka drukowana + elementy
PODSTAWOWE PARAMETRY
• Napięcie zasilania: 12 VDC
• płytka dwustronna, z metalizacją, o wymiarach (118×69) mm
• komunikacja: Ethernet (moduł NMZ01A)
• oprogramowanie w Bascom AVR
• mikrokontroler ATmega 32
PROJEKTY POKREWNE wymienione artykuły są w całości dostępne na CD
Tytuł artykułu
Nr EP/EdW Kit
Internetowy interfejs dla mikrokontrolera
EP 3-5/2002 AVT-5055
„Wyświetlacz” ethernetowy
EP 12/2007-1/2008 AVT-5118
Uniwersalny interfejs internetowy
EP 4-5/2006 AVT-927
Karta przekaźników z interfejsem Ethernet
EP 2/2007 AVT-966
Uniwersalny interfejs ethernetowy
EP 1/2007 AVT-1443
Karta wejść z interfejsem Ethernet
EP 10/2006 AVT-953
32
ELEKTRONIKA PRAKTYCZNA 1/2009
750403536.071.png 750403536.082.png 750403536.093.png 750403536.104.png 750403536.001.png 750403536.012.png 750403536.023.png 750403536.024.png 750403536.025.png 750403536.026.png 750403536.027.png
Serwer HTTP
Na CD karty katalogowe i noty aplikacyjne elementów
oznaczonych na Wykazie Elementów kolorem czerwonym
WYKAZ ELEMENTÓW
Rezystory
R1, R2, R3, R7: 10 k V
R4, R5, R6: 4,7 k V
R8: 1 k V
Kondensatory
C1, C2, C6, C8, C10: 100 nF
C3, C4: 33 pF
C5: 100 m F/16 V
C7, C9: 10 m F/16 V
Półprzewodniki
U1: 7805
U2: LM2937ET-3,3
U3: DS1820
D1: 1N4148
T1: BC557B
T2: BC337-40
M1: NM7010A
M3: ATmega32
BR1: mostek prostowniczy 1 A
Inne
S1, S2: mikroswitch
XTAL1: 11,059 MHz
CON1, CON2: ARK2 5 mm
P1: przekaźnik 12 V
trzeb można ustawić dowolny inny adres, który
później należy przypisać odpowiedniemu para-
metrowi komendy CONFIG TCPIP.
Krótki opis protokołu HTTP
Protokół HTTP standardowo korzysta z por-
tu numer 80 (TCP). Po wpisaniu adresu w prze-
glądarce internetowej nawiązuje ona połącze-
nie z otwartym gniazdem komunikacyjnym
serwera i wysyła zapytanie. Typowe zapytanie
przeglądarki wygląda jak niżej:
GET /nazwa żądanego zasobu HTTP/1.1
Accept: image/gif, image/x–xbitmap, image/
jpeg, image/pjpeg, */*
Accept–Language: pl Accept–Encoding: gzip,
deflate
User–Agent: Mozilla/4.0 (compatible; MSIE
6.0; Windows 98; BCD2000)
Host: 127.0.0.1
Connection: Keep–Alive
Pierwsza linia zapytania informuje serwer
o tym, do jakiego zasobu żąda dostępu użyt-
kownik. Kolejne wiersze niosą informacje o ak-
ceptowanych przez użytkownika rodzajach
plików, rodzaju przeglądarki, systemu operacyj-
nego i innych szczegółach związanych z trans-
misją danych. W przypadku opisywanego
urządzenia wystarczająca jest analiza pierwsze-
go wiersza, określającego rodzaj informacji, do
której dostępu żąda użytkownik. Odpowiedź
serwera wygląda następująco:
HTTP/1.0 200 OK{010}{013}”)
Keep–Alive; timeout=15,
max=100{010}{013}
Connection: Keep–Alive{010}{013}
Transfer–Encoding: chunked{010}{013}
Content–Type: text/html; charset=iso–8859–
2{010}{013}{010}{013}
Każdą wysyłaną linię kończą znaki CR i LF.
Po wysłaniu pustej linii do przeglądarki klien-
ta następuje transmisja właściwej treści strony
internetowej. Transmisję należy zakończyć za-
Rys. 1. Schemat elektryczny serwera
mykając gniazdo komunikacyjne, co instruuje
przeglądarkę o zakończeniu przesyłania treści
strony. Innym zapytaniem, na które musi odpo-
wiadać urządzenie jest zapytanie metody POST.
Instruuje ono serwer o konieczności przesłania
danych formularzy. Urządzenie wykorzystuje
tę metodę do przesłania hasła wymaganego
do zmiany stanu przekaźnika. Metoda POST
jest lepsza od metody GET, ponieważ zmienna
zawierająca hasło nie jest „doklejana” do ad-
ELEKTRONIKA PRAKTYCZNA 1/2009
33
750403536.028.png 750403536.029.png 750403536.030.png 750403536.031.png 750403536.032.png 750403536.033.png 750403536.034.png 750403536.035.png 750403536.036.png 750403536.037.png 750403536.038.png 750403536.039.png 750403536.040.png 750403536.041.png 750403536.042.png 750403536.043.png 750403536.044.png 750403536.045.png 750403536.046.png 750403536.047.png 750403536.048.png 750403536.049.png 750403536.050.png 750403536.051.png 750403536.052.png 750403536.053.png 750403536.054.png 750403536.055.png 750403536.056.png 750403536.057.png 750403536.058.png 750403536.059.png 750403536.060.png 750403536.061.png 750403536.062.png 750403536.063.png 750403536.064.png 750403536.065.png 750403536.066.png 750403536.067.png 750403536.068.png 750403536.069.png 750403536.070.png 750403536.072.png 750403536.073.png 750403536.074.png
PROJEKTY
resu przez przeglądarkę, tylko jest przesyłana
w sposób niewidoczny dla użytkownika. Dzię-
ki temu nie ma możliwości podejrzenia hasła
przez osoby postronne oraz nie jest ono zapisy-
wane w historii przeglądanych stron. Przykład
zapytania metody POST podano niżej (może on
nieznacznie różnić się w przypadku różnych
przeglądarek):
POST /index.htm HTTP/1.1
Host: 127.0.0.1
User–Agent: Mozilla/4.0 (compatible; MSIE 6.0;
Windows 98; BCD2000)
Content–Length: 7
Content–Type: application/x–www–form–
urlencoded
Pwd=123
Linia Content–Length zawiera liczbę infor-
mującą o długości w bajtach przesyłanej za-
wartości (w tym przypadku hasła) z wyłącze-
niem części nagłówkowej. Linia z hasłem nie
zawiera znaku końca wiersza, dlatego należy ją
pobierać bajt po bajcie. W zależności od prze-
glądarki, po linii Content–Length , wysyłana jest
pusta linia, a po niej zmienna lub jeszcze kilka
linii innych informacji. Problem kompatybilności
z różnymi przeglądarkami rozwiązano w ten
sposób, że serwer pobiera kolejne wiersze cze-
kając na linię Content–Length . Z niej pozyskuje
informacje o liczbie bajtów do pobrania. Na-
stępnie sprawdzana jest liczba bajtów w bu-
forze odbiorczym, a linie pobierane są tak
długo, aż zawartość bufora będzie o 6 bajtów
większa, niż długość zmiennej Pwd . Zależnie od
przeglądarki, długość linii zawierającej zmienną
może różnić się i stąd te dodatkowo pobierane
6 bajtów, co doskonale sprawdza się w prakty-
ce. Gdy w buforze znajdzie się pożądana liczba
bajtów, są one kolejno pobierane i zamienianie
na zmienną typu string (tekst). Linie pomiędzy
Content–Length a zmienną Pwd nie zawierają
informacji ważnych z punktu widzenia aplika-
cji i są przezeń ignorowane.
Rys. 2. Strona WWW opisywanego serwera
częstotliwość zegarowa szybkiej transmisji I 2 C
wynosi 0,4 MHz i taką częstotliwość podano
jako parametr w programie.
Aby interfejs pracował poprawnie wymaga-
ne jest zezwolenie na przerwania. W Bascomie
służy do tego instrukcja Enable Interrupts .
Po załączeniu przerwań program przechodzi do
pętli głównej. Na początku wykonywane jest
sprawdzenie, czy gniazdo komunikacyjne jest
zamknięte. Jeśli tak, to jest ono przez program
otwierane z użyciem portu 80 i ustawiane
w tryb nasłuchu. Pierwszy parametr komendy
Getsocket określa numer gniazda, kolejny nu-
mer portu, a ostatni opcje dodatkowe. War-
tość 0 oznacza brak dodatkowych opcji.
W kolejnym kroku program sprawdza, czy
w buforze odbiorczym znajdują się jakieś
dane. Jeśli jest on pusty, rozpoczynany jest po-
miar temperatury. Układ DS1820 zastosowany
w urządzeniu był już wielokrotnie opisywany
na łamach Elektroniki Praktycznej i dlatego
pominięto opis części programu zawierający
obsługę odczytu temperatury. Jeśli bufor za-
wiera ważne dane, to rozpoczyna się analiza
zapytania wysłanego przez klienta. Program
sprawdza w jaki sposób rozpoczyna się zapy-
tanie i odnajduje ciąg znaków HTTP. Pomiędzy
ciągiem a nagłówkiem odnajdywana jest na-
zwa żądanego zasobu. Jeśli zostanie rozpo-
znana metoda GET, rozpoczyna się przesyłanie
strony internetowej. W przypadku metody
POST, zanim klient otrzyma kod strony, zosta-
nie pobrane hasło i porównane ze zmienną
programu o nazwie haslo . Gdy wynik porów-
nania będzie pomyślny, to następuje zmiana
stanu przekaźnika i powrót do strony głównej.
W przeciwnym przypadku użytkownik zostanie
poinformowany o błędnym haśle przy pomocy
współpracy z modułem. Kolejne parametry
określają: numer MAC układu W3100A i jego
adres IP, maskę podsieci i adres bramy. Para-
metr Localport zawiera informację o domyśl-
nym numerze portu, który posłuży do otwiera-
nia gniazd komunikacyjnych. Dopuszczalna jest
zmiana parametru poza częścią inicjująca pro-
gramu, w której można podać dowolną jego
wartość, którą można później zmienić. Parame-
try Tx i Rx definiują rozmiary buforów transmi-
syjnego i odbiorczego. Układ W3100A jest wy-
posażony w 4 gniazda komunikacyjne i pamięć
o wielkości 16 kB, po 8 kB na transmisję i od-
biór. Do programisty należy właściwy podział
tej przestrzeni. Każde gniazdo komunikacyjne
zdefiniowane jest przez 2 bity parametru. Dwa
młodsze bity dotyczą gniazda nr 0, a najstarsze
gniazda nr 3. Wartość 00 ustala rozmiar bufo-
ra na 1 kB, 01 – 2 kB, 10 – 4 kB a 11 – 8 kB.
W tym ostatnim przypadku możliwe jest użycie
tylko pojedynczego gniazda o numerze 0. Ten
sposób podziału dotyczy zarówno bufora od-
biorczego, jak i transmisyjnego. Przypomnijmy,
że każdy z nich ma rozmiar 8 kB.
Jako kolejne ustawiane są parametry in-
terfejsu I 2 C, to jest: adres modułu Ethernet
i szybkość transmisji (parametr Clock ustala-
jący częstotliwość zegara SCL). Standardowa
Opis programu
Na początku programu umieszczono dekla-
rację stałych, które będą używane przez pro-
gram np. do sterowania otwarciem gniazda
komunikacyjnego. Jako kolejne umieszczono
instrukcje wprowadzające nastawy interfejsu
TCP/IP. Są to Config Tcpip = Int0 , Mac =
12.128.12.34.56.78 , Ip = 192.168.0.50
, Submask = 255.255.255.0 , Gateway =
192.168.2.1 , Localport = 5000 , Tx =
$55 , Rx = $55 , Twi = &H80 , Clock
= 400000.
Pierwszy parametr określa, z którego prze-
rwania będzie korzystał mikrokontroler podczas
Rys. 3. Schemat montażowy
List.1. Kod źródłowy strony głównej w języku HTML
<head><meta http–equiv=refresh content=40 /></head>
<hr><center><b><font size=6 color=blue>Temperatura wynosi 21°C</b></font></center>
<br><center>Temperatura maksymalna 23 minimalna 20<center>
<hr><center><a href=zeruj>Zeruj temperatury</a></center>
<center><a href=index.htm>Odswiez</a></center>
<br><form action=index.htm method=post >Przekaznik jest Wlaczony
<input type=password name=pwd>
<input type=submit value= wlacz></form>
34
ELEKTRONIKA PRAKTYCZNA 1/2009
750403536.075.png 750403536.076.png 750403536.077.png 750403536.078.png 750403536.079.png 750403536.080.png 750403536.081.png 750403536.083.png 750403536.084.png 750403536.085.png 750403536.086.png 750403536.087.png 750403536.088.png 750403536.089.png 750403536.090.png 750403536.091.png 750403536.092.png 750403536.094.png 750403536.095.png 750403536.096.png 750403536.097.png 750403536.098.png 750403536.099.png 750403536.100.png 750403536.101.png 750403536.102.png 750403536.103.png 750403536.105.png 750403536.106.png 750403536.107.png 750403536.108.png 750403536.109.png 750403536.110.png 750403536.111.png 750403536.112.png 750403536.113.png 750403536.114.png 750403536.002.png 750403536.003.png 750403536.004.png 750403536.005.png 750403536.006.png
Serwer HTTP
komunikatu wyświetlanego na odrębnej stronie
internetowej.
– Adres wywoływany w celu wyzerowania musi
pozostać zeruj.
– Adres, do którego odwołuje się formularz,
musi pozostać index.htm , a nazwa pola do
wprowadzania hasła pwd .
Inaczej może być konieczna modyfikacja pro-
gramu sterującego.
na podstawce mikrokontrolera. Wraz z mo-
dułem dobrze jest go umieścić w podstawce,
by uniknąć uszkodzenia podczas lutowania.
Mikrokontroler należy skonfigurować tak, aby
pracował z zewnętrznym rezonatorem kwarco-
wym. W tym celu, przy pomocy programatora,
należy nadać bitom clksel3...cksel0 wartość lo-
giczną 1.
Strona główna
Kod źródłowy strony głównej, który jest wy-
syłany do przeglądarki przedstawiono na list. 1 .
Pierwsza linia jest odpowiedzialna za automa-
tyczne odświeżanie strony. Parametr content
określa częstotliwość odświeżania w sekundach.
Kod źródłowy możne być zmieniony, jednak wy-
magane jest pozostawienie bez zmian następu-
jących wartości:
Montaż urządzenia
Urządzenie zmontowano na dwustronnej
płytce drukowanej ( rys. 3 ). Montaż rozpoczyna
się od rezystorów i kondensatorów, a kończy
Jan Jaczewski
dzej89@o2.pl
R
E
K
L
A
M
A
KO N KU R S
WIĘCEJ ŚWIATŁA
Diody superluminescencyjne mają tak intensywne światło i są tak tanie (w ofercie www.sklep.avt.pl ), że
każdemu elektronikowi serce się rwie żeby coś fajnego z nimi zrobić, np. światła dyskotekowe, podświetlenia,
dekoracje, reklamy świetlne, światła ostrzegawcze itd. I Ty powinieneś coś zrobić. Włącz się. Weź udział
w nieustającym konkursie WIĘCEJ ŚWIATŁA. Zrób zdjęcia uzyskanych efektów świetlnych i zamieść je na
specjalnej stronie konkursowej ( wiecejswiatla.ep.com.pl ). Opisy i schematy układów prześlij pod adresem
redakcji redakcja@ep.com.pl.
NAGRODY: za materiał zdjęciowy umieszczony na wiecejswiatla.ep.com.pl
dostaniesz darmową prenumeratę 2 numerów EP (prenumeratorom przedłużamy ich prenumeratę o 2 gratisowe
numery). Opisy i schematy układów mają szansę publikacji na łamach EP – honorarium 250 zł/stronę.
35
ELEKTRONIKA PRAKTYCZNA 1/2009
750403536.007.png 750403536.008.png 750403536.009.png 750403536.010.png 750403536.011.png 750403536.013.png 750403536.014.png 750403536.015.png 750403536.016.png 750403536.017.png 750403536.018.png 750403536.019.png 750403536.020.png 750403536.021.png 750403536.022.png
Zgłoś jeśli naruszono regulamin