Przemysław Szwarc
Transkrypt
Przemysław Szwarc
Przemysław Szwarc – V rok Koło Naukowe Techniki Cyfrowej dr inż. Wojciech Mysiński – opiekun naukowy Ethernet module on PIC18F97J60 microcontroller Moduł sieciowy na mikrokontrolerze PIC18F97J60 Streszczenie Coraz bardziej praktyczne staje się wykorzystanie istniejących sieci komputerowych jako środka komunikacji dla różnorodnych urządzeń elektronicznych. Artykuł w skrócony sposób przedstawia budowę i zasadę działania urządzenia, które jednocześnie pełni rolę miniaturowego serwera WWW oraz samodzielnego systemu sterowania, systemu do którego dzięki globalnej sieci możliwy jest dostęp z niemal każdego miejsca na ziemi do którego dotarł już Internet. Słowa kluczowe: mikrokontroler, Ethernet, moduł Abstract Use of a computer network is getting more practical as a communication medium between various electronic devices. The article presents in a short way construction and principle functioning suchlike device, that is simultaneously a miniature web server and a stand-alone control system, a system that user can access through world wide web from entire globe wherever is Internet. Keywords: microcontroller, Ethernet, module 1 Wstęp W obecnych czasach Internet dotarł już niemal wszędzie, jest obecny w prawie każdym domostwie, biurze, w małych zakładach pracy, w dużych fabrykach, a wraz z nim sieci telekomunikacyjne które są niezbędne do jego funkcjonowania. Najbardziej rozpowszechniona jest kablowa sieć typu Ethernet, obecne standardy prędkości w takiej sieci pozwalają na przesyłanie dużych ilości danych, umożliwia to jednoczesne prowadzenie rozmów telefonicznych, oglądanie telewizji, czy przeglądanie stron WWW. Sposobów na wykorzystanie takiej sieci jest wiele, jednym z nich jest podłączenie różnorodnych urządzeń takich jak telewizory, konsole do gier, urządzenia audio, kamery przemysłowe, urządzenia alarmowe, sterowniki przemysłowe, automaty z napojami, drukarki. Daje to możliwość zdalnego sprawdzenia stanu urządzenia, zużytych materiałów, aktualnie wykonywanego zadania, zmiany parametrów pracy, sterowania elementami wykonawczymi. Zasięg takiej komunikacji jest globalny a zarazem względnie tani. Warunkiem poprawnego działania w sieci jest wyposażenie urządzenia w odpowiedni interfejs sprzętowy oraz programowa obsługa protokołu TCP/IP. Kiedyś do tego celu służył komputer klasy PC z wbudowaną kartą sieciową oraz z zainstalowanym oprogramowaniem. Takie rozwiązanie posiada jednak wady, mianowicie: rozmiar klasycznego komputera, koszt zakupu i oczywiście zapotrzebowanie na energię. Rozwiązaniem tych problemów może być zastosowanie pojedynczego układu który mógłby zastąpić Peceta w zakresie komunikacji sieciowej. Istnieje cała gama układów tego typu, są to specjalizowane mikrokontrolery wytwarzane przez różnych producentów. Cechują się niskim kosztem, małymi rozmiarami i coraz to większymi możliwościami. Wydajność niektórych z nich pozwala na uruchomienie systemu operacyjnego co do niedawna było zarezerwowane tylko dla większych maszyn. 2. Mikrokontroler PIC18F97J60 PIC18F97J60 jest ośmiobitowym niskonapięciowym mikrokontrolerem produkowanym przez firmę Microchip, występuję w obudowie 100-pin TQFP, dostępne są również mniejsze odmiany układu 64 i 80 pin. Technologia nanoWatt zapewnia szereg funkcji mających na celu zredukowanie zużycia energii co ma znaczenie w projektach z zasilaniem bateryjnym. Najbardziej charakterystyczną cechą tego układu jest zintegrowany kontroler sieci Ethernet w pełni kompatybilny z sieciami 10/100/1000Base-T, posiada również zintegrowany MAC oraz 10Base-T PHY, 128kB pamięci Flash dla programu ,8kB niezależnej pamięci dla bufora Ethernetu, rozsyłanie pakietów metoda Unicast, Multicast oraz Broadcast, oprócz tego wyposażony został w wiele innych funkcji takich jak: elastyczny system taktowania procesora od 2.78 do 41.67MHz dla rezonatora 25MHz pamięć programu ROM 128kB pamięć operacyjna RAM 3.8kB napięcie zasilania w zakresie od 2.35V do 3.6V (3.14V do 3.45 w trybie pracy modułu Ethernet) wysokie prądy dla PortuB i PortuC wejście/wyjście 25mA pięć timerów: dwa 8-bit i trzy 16-bit cztery zewnętrzne piny obsługujące przerwania dwa moduły CCP trzy rozszerzone moduły ECCP, jedno dwa lub cztery wyjścia PWM z wybieralną polaryzacją dwa moduły MSPP wspierający standard SPI (wszystkie 4 tryby) oraz I2C (tryby Master i Slave) dwa moduły USART obsługujące standard: RS-485, RS-232 16 kanałowy, 10 bitowy przetwornik analogowo-cyfrowy wejścia cyfrowe tolerujące napięcie 5.5V Wachtdog Timer programowalny w zakresie od 4ms do 134s ICSP złącze programowania układu zamontowanego zewnętrzna szyna pamięci adresowalna do 2MB kontroler Ethernetu zgodny z IEE 802.3 zintegrowany MAC oraz 10Base-T PHY automatyczne wykrycie polaryzacji portu Ethernet 8kB pamięci SRAM dla bufora Ethernetu automatyczne powtórne wysłanie pakietu w przypadku kolizji automatyczna generacja sum kontrolnych CRC automatyczne odrzucanie błędnych pakietów sygnalizacja aktywności oraz statusu Producent układu zapewnia, jako biblioteki w języku C, bezpłatny stos TCP/IP optymalizowany dla rodzin mikrokontrolerów PIC18, PIC24 oraz dsPIC. Stos jest zestawem programów które dostarczają usługi dla aplikacji opartych o protokół TCP/IP. Użytkownik nie musi znać wszystkich złożonych specyfikacji protokołu TCP/IP aby go używać. Stos jest podzielony na wiele warstw, gdzie każda z warstw ma dostęp do usług z jednej lub więcej warstw bezpośrednio pod nią. Przez specyfikacje wiele warstw stosu TCP/IP dostępne są nie tylko w przypadku ich wywołania ale także w przypadku wystąpienie zdarzenia takiego jak time-out czy przybycie nowego pakietu. Praktyczne implementacje mogą być zrealizowane w przybliżeniu na 28-34kB kodu programu. w zależności od wykorzystanych modułów, pozostawiając więcej przestrzeni pamięci programu dla aplikacji użytkownika. Protokoły wspierane przez darmowy stos TCP/IP: ARP, IP, ICMP, UDP, TCP, DHCP, SNMP, HTTP, FTP, TFTP. 3. PIC-MAXI-WEB PIC-MAXI-WEB jest płytką ewaluacyjną oferowaną przez firmę Olimex, sercem zestawu jest mikrokontroler PIC18F97J60, dodatkowo na wyposażeniu znajdują się: przekaźniki, wyświetlacz LCD, wejścia analogowe, odseparowane wejścia optyczne, potencjometr, termistor, gniazdo Ethernet. Dostępne jest również gniazdo z bezpośrednio wyprowadzonymi pinami mikrokontrolera co daje użytkownikowi możliwość podłączenia własnych elementów zewnętrznych. Dostępne jest również gniazdo ICSP/ICD które służy do programowania układu bez potrzeby demontażu czyli tzw. programowanie w systemie, oraz dynamicznej analizy programu w trakcie jego wykonywania co znacznie przyspiesza proces projektowania. Rys. 1. Widok płytki PIC-MAXI-WEB. 4. Moduł rozszerzający Moduł ma na celu poszerzenie zakresu możliwości PIC-MAXI-WEB. Wyposażony został w dwa dodatkowe przekaźniki, cztery wyjścia tranzystorowe z dwa jako wyjścia z modulacją szerokości impulsu (PWM) pracujące z częstotliwością 2,5kHz. Zegar PCF8583 z podtrzymaniem bateryjnym, dwa wyjścia analogowe 0-10V działające w oparciu o przetwornik MAX518 oraz wzmacniacz, zegar jak i przetwornik komunikują się z mikrokontrolerem poprzez wspólną magistralę I2C. Cztery wejścia logiczne przystosowane do napięcia +24V oraz termometr cyfrowy mogący pracować w zakresie temperatur od -55°C do +125°C. Całość została zaprojektowana i wykonana w warunkach domowych, niektóre części pochodzą z odzysku. Schemat elektryczny jak i model PCB wykonany został za pomocą programu EAGLE. Rys. 2. Widok płytki rozszerzeń. 5. Działanie Po załączeniu zasilania na wyświetlaczu LCD ukazuje się pierwotnie zaprogramowany adres IP urządzenia, informacja ta jest niezbędna do wywołania sterownika. W przypadku gdy w sieci zastosowany jest serwer DHCP, sterownik pobierze przydzielony mu przez ten serwer nowy adres IP który także zostanie wyświetlony. W przeglądarce internetowej obsługującej język JAVA w miejsce adresu internetowego należy wpisać adres IP urządzenia po zatwierdzeniu wyświetlone zostanie okienko wymuszające podanie loginu oraz hasła w celu uzyskania dostępu do strony WWW, na której wyświetlane są stany wszystkich wejść oraz wyjść zastosowanych w sterowniku. Zaimplementowane to zostało po to aby osoby niepowołane nie miały dostępu do sterownika. Zmiana loginu i hasła wymaga przekompilowania programu i ponownego zaprogramowania mikrokontrolera. Po udanym logowaniu wyświetlona zostanie strona WWW, na której wyświetlane są stany wyjść, wejść, odczytana temperatura, godzina. Możliwe jest też ręczne wysterowanie każdego z wyjść, zmiana godziny wszystko poprzez przeglądarkę. Możliwa jest także zmiana wyglądu strony, wcześniej odpowiednio przygotowaną stronę można wysłać do sterownika który zapisze ją sobie w zewnętrznej pamięci. Rys. 3. Strona WWW sterownika w przeglądarce. Sam podgląd wejść/wyjść, czy ich ręczna zmiana jest dobra wtedy gdy nad danym procesem czuwa operator, zapewniona tez musi być łączność, w przypadku jej utraty tracona jest kontrola nad sterownikiem. Rozwiązanie takie jest mało użyteczne, wyjściem z takiej sytuacji jest zaimplementowanie algorytmu sterowania wewnątrz samego urządzenia, które w przypadku utraty łączności poradzi sobie z powierzonym mu zadaniem. 6. Literatura [1] Bentham J. „TCP/IP Lean – Web Servers for Embedded Systems”, CMP Books, Kansas 2002 [2] Grębosz J. „Symfonia C++”, Oficyna Kallimach, Kraków 1999 [3] Hadam P. „Projektowanie systemów mikroprocesorowych”, BTC, Warszawa 2004 [4] www.microchip.com ,opis PIC18F97J60, stos TCP/IP [5] Predko M. „Programming and Customizing the PIC Microcontroller”, The McGraw-Hill Companies