Schemat ideowy modułu pokazano na rysunku 1. Najważniejszym elementem jest układ scalony IC1 będący kontrolerem Ethernet (10BASE-T) z interfejsem SPI. Układ IC1 do poprawnej pracy wymaga taktowania sygnałem o częstotliwości 25 MHz, który jest zapewniony przez rezonator kwarcowy Q1 w połączeniu z kondensatorami C1 i C2. Użyty rezonator powinien być dobrej jakości, zaś częstotliwość 25 MHz powinna być jego częstotliwością podstawową.
W układzie wykorzystane zostało gniazdo Ethernet (CON1) ze zintegrowanym transformatorem, co znacznie zmniejsza powierzchnię zajmowaną na płytce. Dławik L1 (koralik przeciwzakłóceniowy), rezystory R2...R5, kondensatory C9 i C10, to elementy terminujące/dopasowujące transformatora. Rezystory R6 i R7 ograniczają prąd płynący przez diody LED wbudowane w gniazdo, a wykorzystywane do sygnalizowania stanu połączenia sieciowego.
Rezystor R1 jest wymagany do prawidłowej pracy części analogowej kontrolera i w wypadku "krzemu" w wersji B1 lub B4 jego wartość powinna wynosić 2,7 kΩ, natomiast w wypadku wersji B5 lub B7 - 2,32 kΩ. Zaproponowaną na schemacie wartość 2,4 kΩ wybrano ze względu na większą popularność układu w wersjach B5 lub B7 oraz małą popularność rezystorów 2,32 kΩ (nie stwierdzono wadliwego działania układu przy wartości 2,4 kΩ). Kondensator C8 jest wykorzystywany w obwodzie wewnętrznego stabilizatora 2,5 V, zaś kondensatory C3...C7 filtrują napięcie zasilające kontroler.
Ostatnimi elementami wymagającymi komentarza są złącza CON2 oraz CON3 typu goldpin. Na złącze CON2 wyprowadzone zostały wszystkie sygnały sterujące kontrolera, tj. reset (RESET), interfejs SPI (CS, SCK, MOSI, MISO), przerwanie (INT), przerwanie Wake-up On Lan (WOL) oraz wyjście sygnału zegarowego (CLKO). Złącze CON3 służy do zasilenia modułu. Rozstaw złączy na płytce drukowanej wynosi 22,86 mm (9×2,54 mm), co pozwala na jej łatwe umieszczenie na płytce stykowej.
Układ należy zasilić napięciem 3,3 V, ale warto wiedzieć, że wejścia będę poprawnie pracowały również przy napięciu 5 V. Jest to cecha często niedostrzegana przez konstruktorów urządzeń bazujących na omawianym układzie i np. mikrokontrolerze AVR.
Mianowicie, w celu dopasowania poziomów logicznych, napięcie zasilające mikrokontroler zostaje obniżone do 3.3 V przy niezmienionej częstotliwości taktowania (np. 16 MHz), która jest wtedy zbyt wysoka. A wystarczy jedynie zasilać mikrokontroler napięciem 5 V, zaś układ kontrolera Ethernet 3,3 V, aby spełnić wszystkie warunki wynikające z charakterystyk tych układów.
Montaż
Na rysunku 2 pokazano schemat montażowy układu. Montaż najwygodniej rozpocząć od elementów SMD, pozostawiając elementy przewlekane (w tym wypadku złącza CON1..CON3) na sam koniec. W pierwszej kolejności warto zmontować stronę górną, zaczynając od układu kontrolera IC1.
Układ ten można przylutować na co najmniej kilka sposobów - w prototypie układ został przylutowany w ten sposób, że po ustaleniu jego pozycji, przylutowanych zostało kilka wyprowadzeń po przeciwnych stronach obudowy, potem pozostałe, bez zwracania uwagi na zwarcia wywołane zlewającą się cyną, której nadmiar został zebrany plecionką. Wszystkiemu towarzyszyła spora ilość topnika.
Następnie zamontowane zostały pozostałe elementy SMD strony górnej i dolnej, przy czym nieco uwagi wymaga Q1, gdyż jego obudowa nie jest przyjazna i zasłania pola lutownicze. W tym przypadku należy ocynować jedno z pól i przylutować do niego jedno z wyprowadzeń Q1. Następnie zaaplikować sporą ilość topnika i przylutować pozostałe wyprowadzenia. Należy przy tym zwracać uwagę, aby nie przegrzewać tego elementu, gdyż może to prowadzić do odlutowania się już przylutowanych wyprowadzeń.
Jako ostatnie przylutowane zostały złącza. Złącze CON1 należy zamontować tradycyjnie od strony górnej, zaś złącza CON2 i CON3 od strony dolnej, zgodnie z poniższą instrukcją. Na początku należy delikatnie (bez wciskania) umieścić płytkę w płytce stykowej, wyrównać złącza i przylutować po dwa przeciwległe wyprowadzenia. Następnie wyjąć płytkę i solidnie przylutować pozostałe wyprowadzenia. Czynność tę warto wykonać bardzo starannie, co zaoszczędzi późniejszych problemów z umieszczaniem płytki w płytce stykowej oraz wyłamywaniem się wyprowadzeń.
Uruchomienie
Trudno mówić o uruchomieniu układu bez przyłączenia go do systemu nadrzędnego, wyposażonego w odpowiednie oprogramowanie. W zasadzie, bez oprogramowania można sprawdzić, czy moduł został poprawnie zmontowany, zwyczajnie poprzez podłączenie go do sieci lokalnej. Jeśli połączenie w warstwie łącza danych zostało poprawnie zestawione, lewa dioda gniazda Ethernet będzie świecić.
Jednak dużo ciekawszym sposobem na uruchomienie i przetestowanie modułu jest uruchomienie serwera WWW opartego na omawianym module oraz mikrokontrolerze. W tym celu można posłużyć się np. prezentowaną w bieżącym wydaniu EP płytką ATmega32U4-DIPMOD oraz oprogramowaniem pochodzącym ze strony http://code.google.com/p/uhttpd-avr/.
Na rysunku 3 pokazano schemat połączenia modułów ATmega32U4-DIPMOD i ENC28J60-DIPMOD, zaś na fotografii 4 wygląd układu zbudowanego na płytce stykowej. Całość zasilana jest z portu USB komputera, do którego dołączony jest moduł ATmega32U4-DIPMOD. Oprogramowanie uhttpd-avr wybrane zostało ze względu na minimalną ilość zmian, które należy wprowadzić w celu jego uruchomiania. W artykule wykorzystana została wersja o oznaczeniu uhttpd-avr-2009-07-09.
Po pierwsze należy poinformować kompilator o prędkości taktowania mikrokontrolera modułu ATmega32U4-DIPMOD, co należy uczynić poprzez ustawienie zmiennych F_CPU oraz F_CLOCK w pliku Makefile. W przypadku autora, obie zmienne przyjęły wartość 16000000, gdyż mikrokontroler taktowany był ze stałą częstotliwością 16MHz.
Druga zmiana jest ściśle związana z wersją użytego kompilatora (w przypadku autora był to avr8-gnu-toolchain-3.4.1.798). Jeśli kompilacja kończy się niepowodzeniem z błędem error: unknown type name 'prog_char', należy zmodyfikować plik Makefile i do zmiennej CFLAGS dopisać -Wno-deprecated-declarations-D__PROG_TYPES_COMPAT_
Dodatkowo, kompilator może wymusić, aby wszystkie wystąpienia nazwy typu prog_char poprzedzić kwalifikatorem const (źródła zmodyfikowane w opisany sposób dostępne są w materiałach dodatkowych do artykułu). Zmiany te wymagane są w przypadku nowszych kompilatorów, z których usunięty został typ prog_char.
Tak zmodyfikowanym programem (plik uhttpd-avr.hex) należy zaprogramować mikrokontroler i można podejmować pierwsze próby łączenia się z modułem, który standardowo będzie dostępny pod adresem http://10.0.2.20/ z maską sieci 255.255.255.0 (autor uhttpd-avr omyłkowo podaje na stronie adres http://192.168.0.2/). Jeśli wszystko przebiegło prawidłowo, w przeglądarce powinniśmy ujrzeć stronę jak na rysunku 5. Prezentowana aplikacja nie ma możliwości odczytu, czy zmiany stanu wyjść mikrokontrolera, jednak jest dobrą bazą do własnych eksperymentów w tym zakresie.
Wykaz elementówRezystory: Kondensatory: Półprzewodniki: Inne: |
Podsumowanie
Liczbę aplikacji zaprezentowanego modułu można mnożyć przez ilość projektowanych urządzeń, które chcemy przyłączyć do sieci Ethernet. Jego przydatność zwiększa fakt, że moduł daje się umieścić bezpośrednio w docelowym urządzeniu, jaki i na płytce stykowej, zaś w Internecie można znaleźć niezliczoną ilość przykładowych aplikacji układu ENC28J60. Na zakończenie mała przestroga: programowanie układu kontrolera warto rozpocząć od zapoznania się z jego notą katalogową, poprzedzoną lekturą erraty "ENC28J60 Silicon Errata".
Andrzej Telszewski
atelszewski@gmail.com