- Układy wykonawcze: 4 przekaźniki przełączne zamontowane na płytce serwera.
- Układy pomiarowe: obsługa maksymalnie 4 elektronicznych termometrów DS18B20 dołączanych do serwera za pomocą 2-przewodowej magistrali 1-Wire.
- Obsługa: praca w lokalnej sieci Ethernet, obsługa za pomocą dowolnej przeglądarki internetowej.
- Adres IP: statyczny lub dynamiczny.
- Zabezpieczenie dostępu: hasło użytkownika.
- Napięcie zasilania: +5 V.
- Pobór prądu: maksymalnie 350 mA.
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 mini serwer składają się trzy główne bloki funkcjonalne:
- sterowania z mikrokontrolerem U1,
- interfejsu z układem U4 umożliwiający podłączenie do sieci Ethernet,
- 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://tuxgraphics.org/electronics/200905/embedded-tcp-ip-stack.shtml 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.