Serwisy partnerskie:
Close icon
Serwisy partnerskie

Infinity: system automatyki domowej - Oprogramowanie serwera www cz.1

AVT3232
kit
Zgodnie z zapowiedzią, w tym miesiącu omówimy konfigurację i (dla chętnych) zostanie przedstawiony program działający w mikrokontrolerze LPC2378. Wszelkie odwołania do sprzętowej części serwera dotyczą opisu serwera www zamieszczonego w poprzednim numerze czasopisma.
Article Image

Masz ogromny powód do satysfakcji, bo zrobiłeś (zrobisz albo planujesz zrobić) serwer www, czyli „pełnoprawne urządzenie sieciowe”. Właśnie dlatego działanie Twojego serwera www „w pojedynkę” nie ma absolutnie żadnego sensu. Musi on być (podkreślmy z dumą: pełnoprawnym, a nie żadnym okrojonym czy zubożonym) składnikiem sieci komputerowej. Lokalnej sieci komputerowej, która może być i zapewne jest/będzie podłączona do Internetu.

Twój serwer www po zaprogramowaniu procesora jest gotowy, aż rwie się do pracy, ale w pojedynkę nic nie zdziała i musi wykorzystać możliwości, jakie daje sieć komputerowa. Aby to było możliwe, trzeba go skonfigurować, czyli sprawić, by on widział sieć, w której będzie pracował i by ta sieć też go widziała.

Do czego jest potrzebny moduł serwera www w systemie automatyki domowej?

Z punktu widzenia systemu automatyki domowej moduł serwera www wydaje się (i słusznie) absolutnie najważniejszym składnikiem tego systemu. Owszem, ale jest dołączony do (domowej, lokalnej) sieci komputerowej, a tam jest większa demokracja. Patrząc z punktu widzenia sieci komputerowych, nasz serwer www jest (wprawdzie pełnoprawnym), ale wcale nie najważniejszym składnikiem. Jest jednym z wielu urządzeń sieciowych i w tej sieci to nie on narzuca swoje wymagania, tylko musi się dostosować do tej sieci (do jej parametrów/ustawień).

Nie wgłębiając się w informatyczne szczegóły, powiemy, że do konfiguracji naszego serwera www z punku widzenia „internetowego” potrzebne są: adres MAC, adres IP, maska podsieci oraz adres IP bramy domyślnej. Ja w programie umieściłem ustawienia domyślne (które czasami nazywam „fabrycznymi”, ponieważ pochodzą z fabryki, fabryki w pracowni w moim domu). Wartości tych parametrów (domyślnych) są tak dobrane, by pasowały do sieci w moim domu.

Jestem przekonany, że będą odpowiednie także dla 99% Czytelników, gdyż są powszechnie używane na całym świecie. Trudno mi powiedzieć, skąd się wzięła „moda” na adresy IP postaci 192.168.0.xx. Takiej adresacji odpowiada, wręcz jako transakcja wiązana, maska podsieci 255.255.255.0, gdyż ta wartość maski zawsze wyselekcjonuje właściwie numer sieci bez względu na wartość xx (w adresie IP). O znaczeniu adresów MAC, IP, maski podsieci więcej piszę w dalszej części artykułu, więc jeżeli w tej chwili jest to trochę tajemnicze, to nie przejmuj się tym.

Fot.1 Zwykłe uruchomienie serwera podczas  normalnej pracy

Najprawdopodobniej możesz wykorzystać „fabryczne”, domyślne wartości parametrów sieciowych. Wtedy żadna dodatkowa konfiguracja serwera i analiza nie jest konieczna. Możesz ustawić przełączniki według fotografii 1, dołączyć swój serwerek www do sieci komputerowej, cieszyć się, że jest w tej sieci widoczny i... czekać na następne artykuły w EdW, które pokażą, jak „z drugiej strony serwera www” dołączać kolejne moduły systemu automatyki domowej.

Koniec. Kropka. Amen.

W zasadzie dalej nie musisz czytać. Ale... może jednak warto wspiąć się na wyżyny i sięgnąć gwiazd, ale do tego niezbędny jest pewien wysiłek, który prowadzi do wiedzy. Można, rzecz jasna, studiować odpowiednie książki i zasoby Internetu – wysiłek ogromny. Tę wyboistą drogę mam za sobą i wiem, co sprawiło mi najwięcej problemów, toteż postaram się przedstawić ważne informacje w sposób możliwie prosty i (mam nadzieję) zrozumiały.

Może się jednak zdarzyć, że sieciowe parametry domyślne nie będą Ci odpowiadać, więc będą wymagały korekty. Na przykład jeżeli masz zamiar, drogi Czytelniku, wykorzystać więcej niż jeden egzemplarz serwera w tej samej sieci lokalnej, to musisz już zadbać, by każdy egzemplarz miał unikalny adres MAC i adres IP.

W celu ewentualnego ustalenia właściwych parametrów konfiguracji sieci możesz poprosić o pomoc informatyka, znaczenie tych parametrów powinno być dla niego oczywiste. Jednak zanim to zrobisz, zachęcam Cię do samodzielnej próby konfiguracji. Jak to zrobić, opowiem za chwilę.

Rozumiem, że niektóre pojęcia na razie graniczą z czarną magią (chociaż jeżeli poznasz przeciwnika, to okaże się, że wcale tak nie jest). Jednak dla Twojego dobrego samopoczucia króciuteńkie wyjaśnienie.

Co to jest adres MAC i jak działa?

Adres MAC to w sumie sprzętowy numer-adres twojej karty sieciowej (zespołu EMAC). Nie jest to informacja w jakikolwiek sposób zawarta w mikrokontrolerze czy układzie PHY w trwały sposób. Konfigurując zespół EMAC do pracy, program działający w LPC2378 nadaje mu jakiś numer. Ten numer jest zaszyty w kodzie programu mikrokontrolera na stałe i przy pierwszym uruchomieniu zostaje zapisany do pamięci EEPROM.

Każde kolejne uruchomienie posiłkuje się tym numerem zapisanym w pamięci nieulotnej. Jeżeli zostanie on zmieniony, a program serwera www daje taką możliwość, to będzie obowiązywał nowy. Wracając do wartości zaszytej w programie, można zapytać: dlaczego ma taką wartość? Odpowiedź jest banalnie prosta: taki sobie „wylosowałem”. Poza jednym wyjątkiem, jakim są same jedynki binarnie, czyli nie można nadać wartości FFFFFFFFFFFF hex, może być dowolny (i rzecz oczywista unikalny w danej sieci).

Rys.1 Szczegóły połączenia sieciowego

Z punktu widzenia prawdopodobieństwa są nikłe szanse byś wylosował już używany (łatwiej jest wygrać w Lotto). Innym rozwiązaniem jest poznanie adresów MAC widocznych w sieci lokalnej. W komputerze możesz poznać „szczegóły połączenia sieciowego” (wyklikać, zaczynając od Panel sterowania → Połączenia sieciowe), jak pokazuje to rysunek 1.

Widoczny „adres fizyczny 00-18-7D-0A-6E-25” jest adresem MAC w moim komputerze. Jeżeli zrobisz to w każdym komputerze przyłączonym do domowej sieci, poznasz wszystkich „komputerowych domowników”. Teraz pozostanie Ci wylosowanie unikalnego numeru dla serwerka. Masz jakieś obawy? Już Ci podpowiadam możliwy adres MAC: 07-19-21-33-39-44.

Jakie IP serwera www wybrać?

Natomiast adres IP Twojego serwera www, maska podsieci oraz adres IP bramy domyślnej muszą spełniać bardziej złożone kryteria. Jednak to nic skomplikowanego. Jeżeli poznałeś szczegóły połączeń sieciowych (rysunek 1), to masz już gotowe dwa parametry: maska podsieci i adres bramy domyślnej. W obrębie całej sieci lokalnej są identyczne.

Teraz zapewne rozumiesz, dlaczego mój serwer www ma takie wartości maski podsieci oraz adres bramy domyślnej, jakie są wkompilowane w program (takie parametry ma moja domowa sieć lokalna). Teraz pozostaje wybrać adres IP dla serwera www. Musi być unikalny w Twojej sieci lokalnej. Jeżeli maska podsieci ma wartość 255.255.255.0, to oznacza, że pierwsze trzy liczby z adresu IP muszą być identyczne.

Zostało „wylosować” jedną liczbę. Jeżeli poznałeś, Czytelniku, „komputerowych domowników”, to pozostało wybrać unikalną. Ja wybrałem 44, bo to „ładna” liczba (a może zasugerowałem się słowami wieszcza Mickiewicza, który w swoim poemacie napisał: a imię jego będzie czterdzieści i cztery). Jeżeli musisz zmienić wartości „fabryczne” ustawień sieciowych serwera, to już wiesz, w jaki sposób uzyskać wiedzę pozwalającą określić własne wartości parametrów.

Jeżeli obawiasz się, czy poprawnie je określiłeś, to możesz poprosić o pomoc informatyka. Teraz możesz przejść do śródtytułu Konfiguracja, gdzie podane są dalsze najistotniejsze informacje dotyczące wpisania parametrów sieciowych w serwer (istnieje ewentualnie takie rozwiązanie, że zmienisz parametry sieciowe w programie źródłowym i całość przekompilujesz).

Garść wyjaśnień dla początkujących - sieci komputerowe

Jeśli jednak jako elektronik jesteś zielony w kwestiach internetowych, chciałbym Ci wyjaśnić kilka pojęć związanych z sieciami komputerowymi. Jak było zasygnalizowane w części wprowadzającej, jednostką transmisyjną w sieci Ethernet jest ramka składająca się z maksymalnie 600 hex (0x600, czyli dziesiętnie ponad 1500) oktetów – bajtów.

Rysunek 2 pokazuje format ramki ethernetowej (ETH), której wielkość wynosi maksymalnie 600 hex oktetów. Zawiera ona nagłówek ethernetowy, w którym jest adres MAC odbiorcy, adres MAC nadawcy oraz typ danych.

Rys.2 Format ramki ethernetowej (ETH)

W poprzednim numerze zawarty był opis sprzętowy serwera www, gdzie istotnymi elementami były układ PHY (jako specjalizowany układ scalony) oraz zespół EMAC (jako integralna część mikrokontrolera ARM). Te dwa elementy są odpowiedzialne za odbiór i wyselekcjonowanie ramek adresowanych do „nas”. Selekcja następuje w oparciu o adres MAC (ang. Medium Access Control) będący informacją 48-bitową (6 bajtów).

Tu wielu Czytelników może ogarnąć zdziwienie, tak, wszystkie ramki ethernetowe są adresowane zawartością tej części ramki (adres MAC odbiorcy), a powszechnie używane adresy IP nie występują jako informacja adresowa w przesyłaniu ramek. Każdy interfejs ethernetowy, czyli układ PHY wraz z zespołem EMAC, ma własny, unikalny adres MAC (program serwera www nadaje go zespołowi EMAC, o czym będzie w dalszej części). Z powyższego płynie istotny wniosek: każdy komputer, switch czy budowane przez nas urządzenie musi mieć unikalny adres MAC. Panuje przekonanie, że ten adres musi być unikalny w skali świata, ale w rzeczywistości wystarczy unikalność w skali sieci lokalnej.

Co to jest enkapsulacja i jak działa? (ramki ethernetowe)

Drugim istotnym pojęciem związanym ze strukturą ramek ethernetowych jest enkapsulacja. Sięgając do wikipedii, możemy uzyskać następujące wyjaśnienie:

Kapsułkowanie (lub enkapsulacja, od (ang.) encapsulation) – termin odnoszący się do struktury protokołu komunikacyjnego, np. opartego na modelu OSI lub modelu TCP/IP. Kapsułkowanie polega na upakowaniu danych z wyższej warstwy w warstwie niższej danego protokołu po stronie nadawczej, a więc przed wysłaniem pakietu telekomunikacyjnego (datagramu, ramki) w sieciach pakietowych.

Część Czytelników może mieć problem ze zrozumieniem sensu. Postaram się wyjaśnić to obrazowo. Nasz serwer www otrzymuje żądanie otwarcia strony od przeglądarki internetowej, toteż jakiś komputer utworzył ramkę ethernetową i zlecił ją do przekazania do adresata. Wyobraźmy sobie Jasia Wędrowniczka, który ma dostarczyć przesyłkę z miejsca A (adres MAC nadawcy) do miejsca B (adres MAC odbiorcy). Więc zapakował wszystko do plecaczka i ruszył w drogę.

W plecaczku miał woreczek z jakąś zawartością (pole dane na rysunku 2), na którym było napisane typ = 800hex (pole typ na rysunku 2), które oznacza, że jest to ramka IP. W tym woreczku znajdowało się pudełko, na którym było kilka bazgrołów oraz napis TCP. W pudełeczku leżała koperta, na której obok różnych napisów widać było liczbę 80 (numer portu serwera stron www). W kopercie znajdowała się mała kartka, na której było napisane: poproszę o stronę główną systemu infinity.

Prosta prośba o zawartość strony została upakowana jako dane warstwy najwyższej (prośba przeglądarki internetowej) z dodaniem kilku informacji (między innymi numer portu), tworząc łącznie większą strukturę (kopertę). Po dodaniu kilku szczegółów, między innymi hasła TCP (plus dodatkowych kilka szczegółów), powstaje kolejna większa struktura (pudełko). Uzupełniając zawartość pudełka o kolejne dane, powstaje struktura większa: zawartość worka.

Uzupełniony o kilka kolejnych szczegółów (adresy MAC) tworzy zawartość plecaczka naszego Jasia Wędrowniczka wraz ze zleceniem „transportowym”. Na tym polega idea kapsułowania, opakowanie danych dodatkowymi odpowiednimi informacjami tworzy większą strukturę (przechodząc do niższej warstwy modelu OSI). Najniższa warstwa modelu OSI, jako warstwa fizyczna, czyli układ PHY, zawiera już wszystko i jest to nasz Jaś Wędrowniczek ze swoim plecaczkiem.

Analogicznie występuje termin dekapsulacja, która dotyczy rozpakowania danych. W naszej opowieści będzie to rozpakowanie zawartości plecaczka Jasia Wędrowniczka. Wyjmując z niego woreczek, widzimy, że ma napis 800 hex, czyli wiadomo, co jest w środku: pakiet IP. Rozpakowując worek, znajdujemy w nim pudełko z napisem TCP. To daje kolejną informację, czego można spodziewać się z zawartości pudełka, koperty z dodatkowymi informacjami: przede wszystkim informacji o numerze portu.

W przypadku portu o numerze 80 wiemy, że zawartość koperty jest przeznaczona dla serwera www i zawiera coś w języku HTML. Dla bardziej dociekliwych Czytelników na temat modelu OSI przygotowałem dodatkowy dokument (plik o nazwie ethernet_adresacja.pdf, który można pobrać z Elportalu jako materiały dodatkowe do tego numeru EdW).

W powyższej historyjce istnieje jedno ciche założenie: znany jest adres MAC serwera www. W ogólnym przypadku, gdy określone urządzenie wysyła cokolwiek do innego urządzenia, niekoniecznie musi znać adres MAC strony docelowej. Poszczególne komputery/urządzenia są identyfikowane poprzez adres IP, natomiast z przytoczonej historyjki wynika, że wszelka wymiana danych poprzez sieć Ethernet wymaga znajomości adresów MAC.

W rzeczywistości w sieci wykorzystywana jest podwójna adresacja. Każda karta sieciowa znajdująca się w komputerze ma adres MAC przyporządkowany jej w fazie produkcji (najczęściej jest zapisany w niewielkiej pamięci EEPROM, którą można odnaleźć na karcie sieciowej) z wymogiem unikalności w skali świata do przesyłania ramek ethernetowych do ściśle określonego urządzenia docelowego oraz adresacja IP (w popularnej notacji czterech liczb rozdzielonych znakiem kropki) nadawana przez użytkowników.

Dlaczego stosowana jest dualna adresacja w sieci Ethernet?

Wyjaśni to inna krótka historyjka. Wyobraźmy sobie rodzinę: mama Wiktoria, tata Igor oraz córka Natalia. Każda z tych osób ma przydzielony sobie indywidualny adres IP i wszystkie osoby znają powiązanie: osoba ↔ adres IP. Pozwala to na swobodną wymianę informacji między dowolnymi członkami rodziny. Pewnego razu ten spokojny świat dotknęło przykre zdarzenie: komputer Natalii uległ uszkodzeniu. Natalia prowadziła ważną wymianę danych z Wiktorią, była niejako w przymusowej, awaryjnej sytuacji.

Ponieważ Natalia była oczkiem w głowie tatusia, Igor oddał jej własny komputer, który po zmianie adresu IP (na taki, jaki jest przyporządkowany Natalii) pozwolił na zakończenie wymiany informacji pomiędzy Natalią a Wiktorią. Wiktoria poza chwilowym brakiem łączności nie zauważa żadnych zmian. Igor natomiast poszedł do sklepu i zakupił nowy i nadał mu adres IP przyporządkowany sobie.

Ponownie istnieje harmonijna wymiana informacji pomiędzy trzema osobami. W tej historyjce, z punktu widzenia elektronicznego, zaistniały następujące zdarzenia. Znana jest początkowa adresacja MAC z nadbudową w postaci adresacji IP, to znaczy ustalone jest powiązanie adresu MAC i adresu IP. Komputer Natalii ma jakiś adres MAC (nadany przez producenta komputerów) oraz jakiś adres IP (wynikający z ustalenia pomiędzy członkami rodziny).

Analogicznie komputer Wiktorii ma inny adres MAC (producent) oraz inny adres IP (ustalenie rodzinne). Identycznie jest w przypadku komputera Igora. W pewnym momencie nastąpiła zmiana, dotychczasowy adres MAC komputera Natalii wypadł z obiegu. W jego miejsce wszedł adres MAC (fizyczny, niezmienny) używany przez inną osobę (adres IP Igora) i został powiązany z nowym adresem IP (przynależnym Natalii).

Finalnie w sieci pojawia się nowy adres MAC (zakup komputera), który zostaje skojarzony z adresem IP używanym przez Igora. Nastąpiła roszada adresów MAC, która nie wpłynęła na komunikację, ponieważ w instalacji występuje druga, logiczna adresacja, którą można modyfikować, a która jest używana do wskazania komputera docelowego dla każdej przesyłanej informacji.

Uważny Czytelnik może zadać pytanie: skoro w rzeczywistości używana jest adresacja MAC, a informacje są przesyłane, posiłkując się adresacją IP, to musi istnieć jakiś mechanizm pozwalający powiązać adres MAC z adresem IP. Taki mechanizm istnieje i nazywa się protokół ARP (ang. Address Resolution Protocol) pozwalający powiązać adres IP z adresem MAC. Każdy komputer/urządzenie świeżo włączone do pracy zna jedynie własny adres MAC i rzecz jasna własny adres IP.

W trakcie działania w jakiś magiczny (chwilowo nieznany, ale wyjaśniony w dalszej części) sposób poznaje adresy MAC „kontrahentów” i gromadzi te informacje w swojej pamięci jako powiązania adresu IP z adresem MAC. Pierwsze przesłanie do określonego adresu IP wymaga „zdobycia” tego powiązania. Może ono zostać zapisane w pamięci i używane w kolejnych przesłaniach.

W rzeczywistości ta prosta idea wymaga dodania mechanizmu automatycznego usuwania zbędnych powiązań, taki „termin przydatności do spożycia” znany w przypadku produktów spożywczych. Przeterminowane powiązania są usuwane z pamięci, toteż w pewnym momencie przymusowa przerwa w komunikacji Wiktoria ↔ Natalia doprowadzi do tego, że w komputerze Wiktorii straci swoją ważność powiązanie: stary adres MAC komputera Natalii i adres IP jej komputera.

Ponowne nawiązanie łączności (po wymianie komputerów i modyfikacji adresu IP) stworzy nowe powiązanie: nowy adres MAC komputera Natalii (a dotychczasowy adres MAC komputera Igora) i adres IP przynależny Natalii. Analogicznie w przypadku komputera Igora nastąpi (po ewentualnym przeterminowaniu i usunięciu powiązania) „pozyskanie” nowego powiązania.

Tu warto zauważyć, że komputer Wiktorii „nie musiał nic wiedzieć” o zaistniałej roszadzie i pomimo tego nadal prowadzić wymianę informacji. Po chwilowym zachwianiu komunikacji wszystko wróci do normy. Historyjka ta pozwala na uwypuklenie istotnej cechy sieci komputerowych, gdzie ponad techniczną, fizyczną adresacją opartą na adresach MAC istnieje druga logiczna, niejako abstrakcyjna, adresacja IP elastycznie konfigurująca sieć lokalną.

Jednak najbardziej istotną cechą adresacji IP jest prostota budowania sieci lokalnej. Bazując na odpowiednich zakresach liczb występujących w adresie IP, można łatwo określić, jakie urządzenia sieciowe należą do sieci lokalnej, a jakie nie. Bazując jedynie na adresach MAC, nie jest to wykonalne ze względu na ogromną przypadkowość adresów MAC.

Poza tym, kto miałby ochotę na pamiętanie 48-bitowej liczby (przykładowo 281 474 976 710 654) zamiast w miarę prostego adresu IP (przykładowo 192.168.0.44, choć w rzeczywistości wystarczy zapamiętać tylko dwucyfrową liczbę 44, gdyż pozostała część jest zawsze taka sama w całej sieci lokalnej)? Dla dociekliwych przygotowałem dodatkowy dokument opisujący budowę i ideę adresu IP (plik o nazwie ethernet_adresacja.pdf, który można pobrać z Elportalu jako materiały dodatkowe).

Jak działa zdobywanie powiązań pomiędzy adresem MAC a adresem IP?

Wspomniany wcześniej „magiczny” sposób zdobywania powiązań pomiędzy adresem MAC a adresem IP zostanie wyjaśniony kolejną historyjką. Wyobraźmy sobie, że król X chce przesłać wiadomość do ściśle określonego poddanego Y. W tym celu wysyła swoich posłańców do każdej miejscowości, by odczytali oni mieszkańcom odpowiednią wiadomość.

Brzmi ona następująco: ja król X (czyli określony adres IP) zamieszkały na zamku (określony adres MAC) poszukuję pana Y (określony inny adres IP). Jeżeli wśród mieszkańców nie ma pana Y, to każdy z mieszkańców po wysłuchaniu komunikatu stwierdza, że to nie do niego i wraca do domu. Jednak w sytuacji, gdy wiadomość dotrze do mieszkańca Y, to on zgłasza się do posłańca i mówi: proszę poinformować króla (adres MAC i IP znany z królewskiego obwieszczenia), że ja, pan Y (adres IP) zamieszkuję pod tym adresem (podaje adres MAC).

Posłaniec wraca z wieściami do króla i jego nadworny pisarz notuje powiązanie pana Y (adres IP) z dostarczonym adresem zamieszkania (adres MAC). Od tej chwili komunikacja się upraszcza, gdyż już nie trzeba wysyłać do wszystkich miejscowości posłańców. Dla dociekliwych również przygotowałem dodatkowy dokument (plik ethernet_transmisja.pdf, który można pobrać z Elportalu jako materiały dodatkowe).

Co to jest maska podsieci oraz adres bramy domyślnej - wyjaśnienie

Rozumiejąc znaczenie adresu IP jako informacji logicznie przyporządkowanej określonemu adresowi MAC, pozostaje jeszcze wyjaśnić ideę i znaczenie takich pojęć jak: maska podsieci oraz adres bramy domyślnej. Posłużę się tutaj kolejną historyjką, która pozwoli zrozumieć znaczenie tych pojęć.

Wyobraźmy sobie mieszkańców pewnej ulicy, niech ona nazywa się ulica Ethernetowa. Kompletny adres każdej posesji będzie brzmiał: ulica Ethernetowa <jakiś numer domu>. Jeden z tych mieszkańców z okazji Nowego Roku wygenerował wiele pocztówek z życzeniami noworocznymi i poprosił sąsiada, by je rozesłał. Uczynny sąsiad, który znał jedynie najbliższe otoczenie, gdyż niedawno tu się sprowadził i zdążył poznać jedynie najbliższe sąsiedztwo, wziął plik przesyłek i ruszył zrealizować prośbę.

Bierze pierwszą z góry i widzi adres: ulica Ethernetowa 7, wie gdzie to jest i dociera do właściwego miejsca. Kolejna pocztówka była adresowana do miejsca, które nie jest mu znane: ulica Sieciowa 17. Nie wiedział, gdzie to jest, ale rozwiązał problem. Mieszkając przy ulicy Ethernetowej wiedział, że w okolicy znajduje się poczta, która mieści się pod adresem Ethernetowa 24. Dodarł do tego miejsca i nadał przesyłkę na poczcie.

W końcu poczta, jako instytucja, funkcjonuje od dawna i doskonale sobie radzi z dostarczaniem przesyłek pod wskazany adres, dokądkolwiek by on prowadził. Z punktu widzenia elektronicznego w powyższej historyjce występuje pełny adres: Ethernetowa 7. Uczynny sąsiad odczytuje każdy docelowy adres i wie, czy dotyczy on znanej mu okolicy, czy może lokalizacji wykraczającej poza ten teren. Decyzję podejmuje w oparcia o część adresu, samej nazwy ulicy: Ethernetowa.

Ta część adresu pełni funkcję maski podsieci: jeżeli docelowy adres (ekwiwalent adresu IP) jest zgodny ze znanym wzorcem (ekwiwalent maski podsieci), to wiadomo, że adresatem jest bliższy lub dalszy sąsiad (należy do sieci lokalnej). W przypadku braku zgodności (ulica Sieciowa brzmi inaczej niż ulica Ethernetowa), to uczynny sąsiad zaniesie przesyłkę na pocztę. Dalsze doręczenie przesyłki to już problem poczty.

Rzecz jasna, poczta musi się znajdować przy ulicy Ethernetowej (należeć do sieci lokalnej). Historyjka ta uzasadnia potrzebę i znaczenie takich pojęć jak: maska podsieci – informacji o charakterze adresu IP pozwalającej określić, czy docelowy adres IP należy do sieci lokalnej oraz adres bramy domyślnej – pełny adres IP miejsca, do którego są kierowane wszelkie przesyłki wychodzące poza sieć lokalną (w historyjce jest to adres poczty).

Cały świat zewnętrzny, ujmując żartobliwie łącznie z galaktyką Droga Mleczna, niebędący siecią lokalną, jest utożsamiany z adresem bramy domyślnej. Wszystkie pakiety sieciowe wysyłane poza sieć lokalną, dokądkolwiek są adresowane, są kierowane na adres bramy domyślnej. Podobnie, wszelkie pakiety sieciowe, skądkolwiek pochodzą (oczywiście spoza sieci lokalnej), są wprowadzane do sieci lokalnej z adresu bramy domyślnej. Ten „magiczny” adres bramy domyślnej jest adresem IP routera w naszej sieci lokalnej.

Bardziej dociekliwi Czytelnicy więcej informacji na temat maski podsieci znajdą w materiałach dodatkowych (plik o nazwie ethernet_adresacja.pdf).

Konfiguracja serwera www do systemu automatyki domowej

Jak już wiemy, konfiguracja naszego bohatera, czyli serwera www, z punku widzenia sieciowego wymaga wpisania do pamięci EEPROM używanej przez procesor LPC2378 jaki ma być jego własny adres MAC, jego własny adres IP oraz jakie są maska podsieci i adres IP bramy domyślnej w lokalnej sieci, gdzie będzie pracował. Jeżeli można wykorzystać moje ustawienia domyślne, nie musisz niczego robić – po dołączeniu do sieci LAN, moduł serwera będzie w niej widoczny (możesz nawet otworzyć serwowaną stronę, ale na razie niewiele z tego wyniknie z braku innych modułów systemu).

Jeśli trzeba coś zmienić, również nie ma problemu! Wszystkie parametry prześlemy do naszego serwera www z jakiegoś komputera w postaci tekstowej poprzez UART mikrokontrolera ARM, a konkretnie przez złącze P501 – DSUB 9-pinowy żeński (parametry transmisji: 9600 bps transmisja bez parzystości). Do tej (jednorazowej) konfiguracji możemy wykorzystać dowolny emulator terminalu, przykładowo program HYPERTERMINAL z parametrami transmisji szeregowej podanej powyżej.

Jest to jedno z możliwych rozwiązań, ale mało wygodne, gdyż należy wszystko napisać bez pomyłek (w serwerze w obsłudze konfiguracji nie ma zrealizowanej funkcjonalności związanej z klawiszem Backspace) oraz konieczny będzie kabelek bez linii modemowych (3-żyłowy łączący bez przeplotu styki 2, 3 i 5 złączki DSUB 9 męską i żeńską), gdyż ten program na starcie ustawia linie modemowe do stanu, który dla mikrokontrolera oznacza stan permanentnego resetu.

Początkowo sam używałem emulatora terminalu, ale mając na uwadze Twoją wygodę, napisałem dedykowany do tego celu program (SERWCFG). Użycie mojego programu zwalnia ze stosowania kabelka 3-żyłowego (na korzyść wersji pełnomodemowej), bowiem program w sposób „świadomy” steruje stykiem 4 i tranzystorem resetujacym Q501. W innym przypadku (inny program emulatora terminalu ewentualnie przewód bez linii modemowych) będzie istniała konieczność naciskania przycisku SW101.

Do komunikacji programu konfiguracyjnego z serwerem wystarczy połączyć złącze P501 serwera z portem COM w komputerze. Rozumiem Twój niepokój, Czytelniku, zapewne w Twoim komputerze nie ma takiego portu. W nowoczesnych laptopach wyginęły złącza typu COM i zostały zastąpione złączami USB. Jest na to rozwiązanie: należy zastosować konwerter USB ↔ RS232.

W ofercie handlowej jest szeroki wybór tego typu przejściówek. Konwertery z „normalnej półki” lub z „górnej półki” umożliwiają, oprócz samego przesyłania szeregowego danych (linie Rx, Tx), sterowanie także dodatkowymi liniami modemowymi. Tego typu konwerter będzie niezbędny w operacjach konfiguracji serwera, do załadowania kodu programu do mikrokontrolera LPC2378 i do konfiguracji wszelkich modułów stosowanych w całym systemie Infinity.

Zależnie od szczegółów, co chcemy konfigurować, trzeba ustawić odpowiednią kombinację przełączników w DIPSWITCH (SW301). Program serwera rozpoznaje następujące kombinacje związane z modyfikacją zawartości pamięci EEPROM.

Normalna praca - konfiguracja serwera www

Kombinacja przełączników pokazana na fotografii 1 oznacza zwykłe uruchomienie serwera podczas jego normalnej pracy. Parametry konfiguracyjne sieci są odczytane z pamięci EEPROM i zastosowane w programie.

Ustawienia domyślne - konfiguracja serwera www

Fot.2 Ustawienia domyślne

Kombinacja pokazana na fotografii 2 prowadzi do wpisania (przywrócenia) wkompilowanych w program domyślnych wartości parametrów konfiguracyjnych – to powrót do ustawień typu factory default. Po zrealizowaniu operacji zapisu do pamięci EEPROM, program zatrzymuje się, by istniała możliwość zmiany ustawień przełączników i ponownego wystartowania.

Adres MAC - konfiguracja serwera www

Kombinacja pokazana na fotografii 3 oznacza zmianę adresu MAC. Program oczekuje wprowadzenia z emulatora terminalu 12-cyfrowej liczby szesnastkowej (bez odstępów, przecinków, myślników itp.). Uwaga: przy użyciu emulatora terminala w przypadku liczb szesnastkowych A...F należy wpisywać je jako „wielkie” (nie jako a…f), w przypadku użycia programu SERWCFG, nie ma to znaczenia, gdyż ten program dokona zamiany małych liter na wielkie (dodatkowy argument, by użyć dedykowanego programu).

Zmiana adresu MAC jest konieczna w przypadku włączenia do sieci lokalnej więcej niż jednego serwera www (w jednej sieci lokalnej nie może być dwóch jednakowych adresów MAC). Gdy do sieci dołączony jest jeden egzemplarz, może pozostać „wartość fabryczna”. Po zapisaniu danych do pamięci EEPROM program zatrzymuje się. Należy przestawić przełączniki i zresetować mikrokontroler ARM.

Fot.3 Zmiana adresu MAC
Fot.4 Zmiana parametrów adresowych

Dane sieciowe - konfiguracja serwera www

Kombinacja pokazana na fotografii 4 oznacza zmianę parametrów adresowych. Jest ich trzy, a zapisywane są w „kropkowej” notacji adresu IP. Program wyświetla informację pozwalającą zidentyfikować parametr i oczekuje na wprowadzenie nowej wartości. Po wczytaniu kompletu, dane są zapisywane w pamięci EEPROM, a program zatrzymuje się z odpowiednim komunikatem.

Tej funkcjonalności trzeba użyć w przypadku, gdy parametry „fabryczne” nie odpowiadają adresacji używanej w docelowej sieci lokalnej, zaproponowane nie muszą odpowiadać każdemu Czytelnikowi, który miałby ochotę na zbudowanie opisywanego serwera. Użycie do konfiguracji serwera wspomnianego programu (SERWCFG) pokazane jest na rysunkach 3, 4 i 5 (program ten został utworzony w środowisku Lazarus, które jest wolnym, bezpłatnym narzędziem do tworzenia programów w języku PASCAL).

Rys.3 Konfiguracja serwera za pomocą programu SERWCFG
Rys.4 Konfiguracja serwera za pomocą programu SERWCFG
Rys.5 Konfiguracja serwera za pomocą programu SERWCFG
Rys.6 Standardowe uruchomienie serwera

Jak posługiwać się programem SERWCFG?

Posługiwanie się programem SERWCFG nie należy do skomplikowanych. W pierwszej kolejności należy wybrać port komunikacyjny i kliknąć na przycisk Otwórz PORT. Spowoduje to zaświecenie zielonej kontrolki oraz wygeneruje sygnał reset dla mikrokontrolera ARM (jako wygenerowanie impulsu na odpowiedniej linii modemowej).

Po resecie, mając przykładowo przełączniki DIPSWITCH w pozycji jak na fotografii 4, w okienku zostanie wyświetlona prośba o nowy adres IP. Po wpisaniu danych w okienku Dane i kliknięciu Wyślij, dane są przesyłane do serwera. Po podaniu wszystkich parametrów program zapisuje je w pamięci EEPROM i zatrzymuje się wyświetlając odpowiedni komunikat. Od tej chwili serwer ma zapamiętane nowe parametry sieciowe.

Również w przypadku standardowego uruchomienia serwera (przełączniki w pozycji pokazanej na fotografii 1) generowany jest odpowiedni komunikat, który można odebrać w okienku programu konfiguracyjnego (rysunek 6).

Tyle informacji podstawowych. Dalsza część artykułu przeznaczona jest dla dociekliwych i nieco bardziej zaawansowanych Czytelników, którzy chcą poznać programowe szczegóły realizacji serwera www, jednak do lektury zachęcam wszystkich. Informacje te zostaną przedstawione za miesiąc.

Do pobrania
Download icon Infinity: system automatyki domowej - Oprogramowanie serwera www cz.1
Tematyka materiału: serwer, sieć lokalna, Ethernet
AUTOR
Źródło
Elektronika dla Wszystkich luty 2019
Udostępnij
UK Logo