Moim zamiarem było wykonanie urządzenia łatwego w budowie i obsłudze. Również opis serwera głównie zawiera informacje praktyczne na temat, co z czym połączyć i co przełączyć, aby wszystko zadziałało prawidłowo.
Od strony użytkownika urządzenie działa podobnie do "dużych" serwerów wyświetlających witryny internetowe - przesyła do komputera użytkownika miniaturowe, uproszczone strony internetowe wyświetlane przez przeglądarkę. Użytkownik klikając na wyświetlane symbole elementów sterujących powoduje przełączanie przekaźników i odczyt temperatury. Prostota rozwiązania polega na tym, że do obsługi serwera i sterowania przekaźnikami nie jest potrzebny żaden dodatkowy program. Wystarczy dowolna przeglądarka internetowa.
Schemat elektryczny i opis układu
Na rysunku 1 pokazano schemat elektryczny urządzenia. Na mini serwer składają się trzy główne bloki funkcjonalne:
- blok sterowania z mikrokontrolerem U1,
- blok interfejsu z układem U4 umożliwiający podłączenie do sieci Ethernet,
- blok wykonawczy z przekaźnikami PK1...PK4 i gniazdem J4 dla magistrali 1-Wire (przeznaczone do dołączenia czujników temperatury).
Jako sterownik zastosowano mikrokontroler STM32F103CB w obudowie LQFP48. Jego głównymi zadaniami są sterowanie urządzeniami wykonawczymi i - w zależności od ustawień - dynamiczne generowanie wyglądu strony wysyłanej do przeglądarki internetowej użytkownika. Strona po każdym zapytaniu przeglądarki jest tworzona od nowa, ponieważ informacja o aktualnych ustawieniach przekaźników i mierzona temperatura mogą się zmieniać.
Interfejsowy układ scalony ENC28J60 poprzez RJ45 z wbudowanym transformatorem (S1) łączy serwer z siecią Ethernet. Przesyłanie danych pomiędzy ENC28J60 a mikrokontrolerem odbywa się za pośrednictwem SPI. Styki czterech przekaźników PK1...PK4 wyprowadzone są na osobne gniazda JP2...JP5. W stanie spoczynku styk przełączny przekaźnika (COM) jest zwarty z wyprowadzeniem NO. W stanie załączenia COM jest zwarty z wyprowadzeniem NC. Do gniazda J4 można dołączyć do 4 czujników DS18B20.
W pamięci EEPROM U3 są przechowywane nastawy serwera. Na jego tryb pracy wpływają ustawienia zwór JP6 i JP7 związane z dodawaniem do systemu nowych termometrów oraz ustawianiem adresu sieciowego. Ich funkcje dokładniej zostaną opisane później.
Do zaprogramowania mikrokontrolera można użyć gniazda J6, na które wyprowadzono sygnały RxD i TxD interfejsu UART1 mikrokontrolera. Gniazdo umożliwia bezpośrednie dołączenie modułu AVT_MOD09 pracującego w charakterze interfejsu pomiędzy gniazdem J6 a portem USB komputera. Na dodatkowym gnieździe JP1 wyprowadzono sygnały magistrali JTAG.
Napięcie zasilające +5 V jest doprowadzone do gniazda J2 zabezpieczonego diodą D5 przed odwrotną polaryzacją zasilania. Napięcie zasilania oznaczone za diodą etykietą VZ służy między innymi do zasilania przekaźników. Za stabilizatorem U2 napięcie 3V3 jest podawane na pozostałe układy serwera.
Stos TCP/IP
Do działania mini serwera oprócz części sprzętowej niezbędne jest oprogramowanie obsługujące funkcje sieciowe, czyli tzw. stos TCP/IP. Wykorzystano przykłady stosu zamieszczone na stronie http://goo.gl/SehjYP przeznaczone dla 8-bitowych mikrokontrolerów AVR. Z analizy kodu wynika, że przykłady oparto na otwarto źródłowym stosie uIP. Na potrzeby projektu stos został dostosowany do 32-bitowego mikrokontrolera STM32 i układu interfejsu ENC28J60.
Montaż płytki mini serwera
Schemat montażowy serwera pokazano na rysunku 2. Montaż radzę rozpocząć od układów związanych ze stabilizatorem U2. Jeżeli po włączeniu zasilania na wyjściu stabilizatora pojawi się napięcie 3,3 V±5%, to można przystąpić do montażu pozostałych elementów mając pewność, że przynajmniej w obwodzie zasilania nie ma zwarć. Najwygodniej najpierw przylutować mikrokontroler a dopiero potem otaczające go części w tym utrudniający montaż rezonator X1.
Jako gniazdo J6 przewidziano grzebień 4 szpilek. Jeżeli nie będzie używany port JTAG można nie montować gniazda J1 i opornika SMD R1. Podczas montażu należy zwrócić uwagę na właściwą polaryzację diod pamiętając, że w obrysie obudowy wyróżnienie wskazuje katodę. Do gniazd zwór JP6 i JP7 należy wlutować 4 szpilki dla jumperów.
Programowanie mikrokontrolera
Wykorzystując do programowania mikrokontrolera port UART należy połączyć gniazdo J6 mini serwera z wolnym portem USB komputera. Jako pośredniczący interfejs najwygodniej zastosować moduł AVT_MOD09. Należy połączyć przewodami wyprowadzenia modułu z odpowiadającymi im złączami gniazda J6: Tx z Tx, Rx z Rx itd. Następnie moduł AVT_MOD09 podłącza się za pośrednictwem standardowego kabla do wolnego portu USB komputera. Przed włączeniem zasilania należy kawałkiem przewodu zewrzeć na płytce pola lutownicze zwory Z1.
Do zapisu oprogramowania do pamięci mikrokontrolera można użyć oprogramowania firmy ST pod nazwą Flash Loader Demonstrator. Programowanie należy przeprowadzić w kolejnych krokach:
- Zasilić płytkę mini serwera napięciem +5 V.
- Na komputerze uruchomić program Flash Loader Demonstrator ustawiając następujące opcje: Port Name: z listy rozwijanej wybrać port COM, do którego podłączone jest urządzenie (w Windows informacje o wirtualnym porcie COM dostępnym przez USB można znaleźć w aplikacji Menedżer Urządzeń).
Baud Rate: 115200.
Parity: Odd.
Echo: Disabled. - Po naciśnięciu Next powinno nastąpić wykrycie mikrokontrolera zamontowanego na płytce, a po kolejnych naciśnięciach Next powinna zostać wyświetlona tablica opcji programowania.
- Za pomocą opcji menu Download To File należy wskazać położenie pliku HEX z oprogramowaniem do zapisu do pamięci Flash mikrokontrolera.
- Po zaznaczeniu opcji Download To Device, Optimize, Verify after download i naciśnięciu Next pamięć mikrokontrolera zostanie skasowana, zaprogramowana i zweryfikowana.
- Jeżeli wszystko przebiegnie prawidłowo, należy zamknąć program Flash Loader Demonstrator, odłączyć kabel USB i usunąć połączenie zwory Z1 na płytce urządzenia.
Sygnałem, że urządzenie funkcjonuje jest dwukrotne mignięcie diody D2 po ponownym zasileniu płytki mini serwera.
Sieciowy adres serwera: IP statyczny lub przydzielany dynamicznie
Każde urządzenie w sieci jest identyfikowane za pomocą adresu - w sieciach Ethernet nosi on nazwę adresu IP. W obrębie jednej sieci lokalnej nie mogą funkcjonować dwa urządzenia o takim samym adresie IP. Opisywany mini serwer może mieć adres IP statyczny lub dynamiczny, przydzielany za pomocą protokołu DHCP.
Adres statyczny może być nadawany przez użytkownika i po zapamiętaniu w pamięci EEPROM urządzenia pozostaje niezmienny nawet po wyłączeniu i ponownym załączeniu zasilania. Adres przydzielany dynamicznie jest aktualny co pewien czas i przy kolejnych włączeniach urządzenia może się zmieniać. Za przydział adresu odpowiada ruter zarządzający fragmentem podsieci, do której jest przyłączony mini serwer.
Stan zwory JP7 decyduje o tym czy urządzenie będzie posługiwało się adresem IP statycznym czy dynamicznym. Jeżeli w momencie włączenia zasilania zwora jest zwarta aktywny jest tryb adresu statycznego. Rozwarcie zwory uruchomi tryb pracy, w którym urządzenie wykorzystując protokół DHCP będzie pobierało z rutera swój adres.
Ustawienia domyślne "fabryczne"
Po zmontowaniu mini serwera a przed podłączeniem go do sieci należy przeprowadzić operację zmiany ustawień na domyślne "fabryczne". Jest to niezbędne na etapie uruchamiania serwera, później ustawienia - a szczególnie hasło - powinny być zmienione na własne. Wartości "fabryczne" są następujące:
- hasło: 123456,
- adres IP: 192.168.1.25,
- adres numer MAC: 54:55:58:10:0:25.
Zmiana ustawień na domyślne nastąpi, jeżeli w momencie włączania zasilania zwora JP6 będzie zwarta. Jeżeli przez kolejne 3...5 sekund po włączeniu zasilania zwora nie zostanie usunięta, serwer zmienia ustawienia na domyślne. Operację sygnalizuje migotanie diody LED (D2), która po 5 sekundach zacznie świecić światłem ciągłym. Po usunięciu zwory mini serwer zaczyna pracować z ustawieniami "fabrycznymi". Wymuszenie ustawień domyślnych jest jedynym sposobem odzyskania dostępu do serwera w przypadku zapomnienia hasła.
Uruchamianie: podłączenie mini serwera do sieci
Najprostszym sposobem włączenia serwera do sieci jest podłączenie go do wolnego portu rutera. Dotyczy to zarówno rozległych sieci z wieloma urządzeniami, jak i małej, domowej sieci z jednym czy dwoma komputerami podłączonymi do zarządzającego nią rutera.
Na rysunku 3 przedstawiono sytuację, w której serwer wraz z komputerem i przykładowym innym urządzeniem tworzą węzeł sieci lokalnej. Mini serwer jest dołączony do portu rutera za pomocą standardowego kabla wielożyłowego, prostego, zakończonego wtykami RJ45. Na rysunku 4 pokazano połączenia żył i rozłożenie sygnałów w takim kablu.
Jeżeli serwer ustawiony jest do pracy ze statycznym IP połączenie z nim uzyskuje się po wpisaniu w pasku adresu przeglądarki jego statycznego adresu IP. Bezpośrednio po wymuszeniu ustawień fabrycznych należy wpisać 192.168.1.25. Jeżeli w podsieci eternetowej będą pracowały dwa lub więcej serwery to na etapie uruchomienia po zmianie ustawień na domyślne użytkownik musi po kolei przypisać każdemu z serwerów unikatowy adres IP. Robi się to w opcjach serwisowych także z poziomu przeglądarki. Tak więc na samym początku uruchamiania serwera trzeba najpierw wymusić jego ustawienia domyślne żeby dotrzeć do ustawień serwisowych!
Jeżeli serwer ustawiony jest do pracy z dynamicznie przydzielanym adresem IP, to aby połączyć się z mini serwerem, trzeba poznać jego adres. Należy skorzystać z przeznaczonego do tego oprogramowania sieciowego np. oprogramowania narzędziowego rutera. Potrzebnej informacji zależnie od użytego oprogramowania powinniśmy szukać w opcjach lub podstronach nazwanych "DHCP Serwer", "DHCP klient list" lub podobnie.
Na wyświetlanej liście podłączonych urządzeń DHCP należy zidentyfikować mini serwer jako nowe urządzenie lub poprzez jego numer MAC. Żeby połączyć się z mini serwerem, należy wpisać adres IP w przeglądarce internetowej, podobnie jak w przypadku statycznego IP. Jeżeli w podsieci będą pracowały np. dwa mini serwery, ruter sam zadba, żeby przydzielić im różna adresy IP.
Ponieważ protokół DHCP w czasie negocjacji wykorzystuje adres MAC, dwa mini serwery nie mogą się posługiwać takim samym adresem MAC. Na etapie uruchomienia użytkownik powinien zmienić numer MAC serwera na unikatowy. Najprościej wykonać w następujący sposób:
- Uruchamiany serwer ustawić do pracy w trybie statycznego IP.
- W opcjach serwisowych ręcznie zmienić numer MAC na dowolny inny niż te, którymi posługują się pracujące w tej części podsieci urządzenia.
- Po zatwierdzeniu zmian należy wyłączyć serwer i rozłączyć zworę JP7. Po jego kolejnym włączeniu będzie pracował w trybie dynamicznie przydzielanego IP z unikatowym adresem MAC.
Podłączenie mini serwera bezpośrednio do komputera z kartą sieciową
Mini serwer może być także sterowany bezpośrednio przez komputer bez przyłączania do sieci Ethernet. Taką sytuację pokazano na rysunku 5. Serwer należy połączyć z gniazdem karty sieciowej komputera kablem RJ45 z przeplotem, jak na rysunku 6. Oprócz pokazanych na rysunku, pozostałe przewody kabla przy takim połączeniu nie odgrywają ważnej roli.
W tej konfiguracji ograniczeniem jest możliwość pracy serwera tylko ze stałym adresem IP, aby uzyskać połączenie z mini serwerem numer IP serwera należy wpisać w pasku adresowym przeglądarki. Jeżeli nie można uzyskać połączenia, może to oznaczać, że w aktualnych ustawieniach karta sieciowa nie obsługuje puli adresów IP, w której znajduje się adres mini serwera. Zakładając, że pracuje on z domyślnym adresem IP 192.168.1.25 należy wykonać następujące czynności (opis odnosi się do systemu Windows 7):
- Korzystając z Panelu kontrolnego należy wejść do ustawień sieciowych: Control Panel->Network and Internet->Network and Sharing Center.
- Wybrać opcję: Connections->Local Area Connection.
- Kliknąć Properties, podświetlić pozycję Internet Protocol Version 4 (TCP/IPv4), kliknąć Properties.
- Wybrać opcję Use the following IP address: i wpisać wartości takie jak na rysunku 7.
- Przyciskiem OK zaakceptować wprowadzone zmiany i zamknąć Panel kontrolny.
Od tej chwili dostęp do mini serwera powinien być możliwy, czasem trzeba wyłączyć i ponownie włączyć komputer tak aby nowe ustawienia stały się aktywne.
Jeżeli po zakończonej pracy chcemy wrócić do poprzednich ustawień należy wykonać analogiczne czynności jak powyżej tylko w punkcie 4 należy zaznaczyć Obtain an IP adress automaticaly. Należy o tym pamiętać, ponieważ pozostawienie nowych ustawień może uniemożliwić pracę komputera w dotychczasowej sieci Ethernet i połączenie z Internetem.
Podłączanie do mini serwera HTTP czujników temperatury
Operację podłączania czujników do serwera i ich rejestrację w pamięci urządzenia można przeprowadzić w dowolnym momencie. Gdy serwer jest już zasilony, zwarcie zwory JP6 rozpoczyna rejestrowanie czujników. Najpierw z pamięci usuwane są dane dotychczas używanych sensorów, następnie serwer oczekuje na dołączenie po kolei nowych czujników DS18B20. O wejściu w tryb rejestracji informuje migotanie diody D2 z częstotliwością ok. 1 Hz.
Czujniki dołącza się do dwóch przewodów magistrali 1-Wire, DQ i GND, doprowadzonych do styków złącza J4. Na rysunku 8 pokazano obudowę czujnika wraz z położeniem poszczególnych wyprowadzeń oraz sposób połączenia czujników, magistrali i złącza. Gdy mini serwer wykryje dołączenie do magistrali 1-Wire nowego czujnika, dioda D2 sygnalizuje ten fakt wydłużając impuls świecenia.
Czujnikowi nadawany jest numer z przedziału 1...4 w kolejności dołączenia go do magistrali. Proces rejestracji można przerwać w dowolnym momencie przez usunięcie zwory JP6. Serwer może pracować bez zarejestrowanych czujników (żadne pomiary temperatury nie będą wykonywane) lub z użyciem mniejszej liczby czujników niż 4.
Korzystanie z serwera: logowanie i sterowanie
Po wpisaniu adresu IP na pasku adresowym przeglądarki, mini serwer zgłasza się wyświetlając podstronę logowania z żądaniem hasła dostępu. Na rysunku 9 pokazano zrzut ekranu z wyświetloną podstroną. Po wpisaniu hasła zakończonego naciśnięciem Enter, jeżeli jest ono właściwe, zostanie wyświetlona podstrona pomiarów i sterowania.
Na rysunku 10 zamieszczono zrzut ekranu tej podstrony. W tabeli na stronie pomiarów wyświetlane są temperatury zmierzone przez dołączone do serwera czujniki. Jeżeli czujnik nie jest zarejestrowany w systemie lub odczyt zarejestrowanego czujnika nie jest możliwy zamiast temperatury wyświetlane są znaki podkreślenia. W drugim wierszu tabeli umieszczone są 4 przyciski wpływające na stan załączenia przekaźnika o numerze odpowiadającym przyciskowi. Kolejne naciśnięcia przycisku ustawiają przekaźnik w stanie przeciwnym. Jeżeli jest on załączony kolor tła przycisku będzie czerwony. Pod tabelą znajdują się trzy przyciski funkcyjne:
- "NOWY ODCZYT" służący do uaktualnienia odczytów temperatury.
- "USTAWIENIA" wywołujący przejście do podstrony wyboru ustawień serwisowych mini serwera.
- "WYLOGUJ" do zablokowania dostępu do serwera i przejście do podstrony logowania.
Wykaz elementówRezystory: (SMD 0805) Kondensatory: (SMD 0805) Półprzewodniki: Inne: |
Funkcje serwisowe
Po naciśnięciu na stronie pomiarów przycisku USTAWIENIA zostaje wyświetlona strona z listą linków do podstron zmieniających kolejne ustawienia serwera.
Hasło. Link do strony serwisowej pozwalającej zmienić dotychczasowe hasło dostępu do serwera. Zmieniając hasło najpierw w pierwszym okienku trzeba wpisać stare hasło a w kolejnych okienkach dwa razy podać nowe hasło. W haśle dopuszczalne są cyfry i litery (bez polskich znaków).
Akceptowane są hasła o długości od 3 do 30 znaków. Jeżeli hasło zostanie zaakceptowane nastąpi automatyczny powrót do podstrony z listą dostępnych operacji serwisowych. W przypadku błędu zostanie wyświetlony stosowny komunikat. Nowe hasło obowiązuje od chwili akceptacji.
Numer MAC. Link do strony serwisowej pozwalającej zmienić dotychczasowy numer MAC na nowy. W kolejnych okienkach wyświetlanych jest 6 cyfr w formacie heksadecymalnym, które użytkownik może zmienić. Jeżeli numer zostanie zaakceptowany nastąpi automatyczny powrót do podstrony z listą dostępnych operacji serwisowych. W przypadku błędu zostanie wyświetlony stosowny komunikat. Nowy numer zacznie obowiązywać po najbliższym restarcie serwera.
Adres IP. Link do strony serwisowej pozwalającej zmienić dotychczasowy statyczny adres IP na nowy. W kolejnych czterech okienkach wyświetlane są cyfry dziesiętne dotychczasowego adresu, które użytkownik może zmienić. Nowy statyczny adres IP zacznie obowiązywać po najbliższym resecie serwera.
Informacja o zarejestrowanych czujnikach
Link do strony serwisowej, na której wyświetlane są numery fabryczne aktualnie zarejestrowanych czujników. Zarejestrowane czujniki powiązane są z numerami kolejnymi, pod którymi w tabeli pomiarów wyświetlane są ich odczyty temperatury.
Uwagi końcowe
W tej wersji oprogramowania (1-12) występują problemy z cofaniem do poprzednio wyświetlanej podstrony w przypadku korzystania z narzędzi przeglądarki. Nawigacja pomiędzy podstronami działa prawidłowo, gdy używa się przycisku "POWRÓT" umieszczonego na podstronach.
Przy magistrali 1-Wire o długości znacznie przekraczającej 50 m do prawidłowego działania czujników temperatury może okazać się konieczne zasilenie ich końcówek Vdd napięciem +3,3 V. W tym celu należy odłączyć końcówki czujników od masy i podać na nie zasilanie z dodatkowego zasilacza połączonego z masą magistrali 1-Wire.
Ryszard Szymaniak, EP