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