Elektroda.pl
Elektroda.pl
X
Elektroda.pl
Licencja Pulsonix
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

PIC18F67J60 własna płytka developerska Ethernet (serwer/klient WWW)

p.kaczmarek2 09 Maj 2019 14:59 2067 1
  • PIC18F67J60 własna płytka developerska Ethernet (serwer/klient WWW)
    Zdjęcie powyżej przedstawia moją płytke developerską PIC18F67J60 podłączoną do mojego klona PICKIT2.

    Witajcie moi drodzy
    Dziś przedstawię moją płytkę developerską dla mikroprocesora PIC18F67J60 oferującego m. in. sprzętowe wsparcie Ethernet (bez wymogu zewnętrznych układów!), czyli możliwość podłączenia do internetu/sieci LAN. Projekt został zrobiony głównie z myślą o samodzielnych eksperymentach z automatyzacją domu i Internet of Things. Płytka może być w roli serwera WWW, klienta WWW bądź ogólnie klienta/serwera UDP lub TCP.

    Historia projektu
    Jest to druga wersja projektu i jednocześnie jedna z pierwszych płytek które zaprojektowałem w Eagle pod eksport Gerberów i produkcję PCB prototypu w fabryce (zamówiłem 10 sztuk płytki). Pierwsza wersja tego projektu została zrealizowana na płytce wytrawionej w domu metodą termotransferu i wyglądała tak:
    PIC18F67J60 własna płytka developerska Ethernet (serwer/klient WWW) PIC18F67J60 własna płytka developerska Ethernet (serwer/klient WWW)
    PIC18F67J60 własna płytka developerska Ethernet (serwer/klient WWW)


    Bieżąca wersja
    Nowa wersja płytki oferuje:
    - PIC18F67J60 (8 bitowy, 128kB flash, 3808 bajtów SRAM, SPI, I2C)
    - złącze RJ45 z osobno transformatorem separującym H1102
    - trzy pamięci EEPROM na szynie I2C (o różnych adresach)
    - wyprowadzone wszystkie piny
    - złącze ICSP do programowania
    - dwie diody LED od Ethernetu są na płytce
    - dwie dodatkowe diody LED
    - przycisk RESET dla mikroprocesora
    - stabilizator 3.3V by móc zasilać płytkę wyższym napięciem (ale uwaga - to jak wysokim zależy od zastosowanego stabilizatora!)
    - złączę DC jack dla zasilacza
    - rezonator 25MHz dla mikroprocesora
    To jest PIC18F67J60, więc nie ma osobnej 'kostki' do obsługi komunikacji Ethernet.

    Tak wygląda projekt płytki w Eagle:
    PIC18F67J60 własna płytka developerska Ethernet (serwer/klient WWW)
    Całość jest upakowana na przestrzeni mniej więcej 100mm x 33mm.
    Jest to intencjonalny zabieg, gdyż taki rozmiar pozwala zmieścić 3 kopie płytki na panelu 10cm na 10cm. Niektóre (podkreślam, niektóre) płytkarnie mogą dość tanio wytworzyć taki panel i nie zwrócić uwagę na to, że jest tam 'repeated design'.


    Wykonanie
    W tej chwili nie mam dostępu do zdjęcia pustej płytki przed lutowaniem, ale jak będę miał to tutaj wrzucę.
    Całość zlutowałem najzwyklejszą lutownicą kolbową. Płytkę programuję z pomocą swojego klona PICKIT2 a kod piszę w MikroC.
    Płytka w trakcie programowania, jeszcze bez części elementów:
    PIC18F67J60 własna płytka developerska Ethernet (serwer/klient WWW)

    Pierwszy prototyp w trakcie lutowania, zrobiony dość chałupniczo (nie miałem wtedy jeszcze wszystkich elementów więc użyłem THT):
    PIC18F67J60 własna płytka developerska Ethernet (serwer/klient WWW) PIC18F67J60 własna płytka developerska Ethernet (serwer/klient WWW)
    To samo co wyżej ale po przylutowaniu 4.7k rezystorów od I2C i pinhd 2x2 dla I2C EEPROMów:
    PIC18F67J60 własna płytka developerska Ethernet (serwer/klient WWW)

    A tak wyglądały kolejne 3 sztuki w trakcie testów przylutowanego mikroprocesora, ale przed lutowaniem elementów od komunikacji Ethernet:
    PIC18F67J60 własna płytka developerska Ethernet (serwer/klient WWW)

    Tak wygląda przykładowy projekt (bazujący na 'HTTPDemo' od Mikro C) w środowisku od Mikroelektroniki którego używam:
    PIC18F67J60 własna płytka developerska Ethernet (serwer/klient WWW)
    PIC ma następujące ustawienia konfiguracji:
    PIC18F67J60 własna płytka developerska Ethernet (serwer/klient WWW)
    Tak wygląda soft PICKIT2 którego używam do programowania:
    PIC18F67J60 własna płytka developerska Ethernet (serwer/klient WWW)

    Przykładowe kody
    Tu wrzucam parę przykładów kodów dla tego mikroprocesora napisanych w Mikro C PRO for PIC. Skonfigurowane są one dla rezonatora kwarcowego 25MHz. Przykłady są uproszczone, tzn. blink/PWM nie używają w ogóle kodu związanego z Ethernet. Może te przykłady komuś ułatwioną one pierwsze kroki z tym PICem.

    Przykładowy kod - blink LED
    Jest to najprostszy przykład dla tego PICa (i dla mojej płytki) - miganie diodami na PORTB co 1000ms.
    Zdjęcie pokazuje płytkę w trakcie pierwszych testów blink LED, podłączona jest ona do mojego programatora PIC (klon PICKIT2) na którym są też diody do testów:
    PIC18F67J60 własna płytka developerska Ethernet (serwer/klient WWW)
    W załączniku kod i cały projekt MikroC:
    HTTPDemo_b...simple.zip Download (58.9 kB)
    W załączniku też jest skompilowany hex (pod rezonator 25MHz)


    Przykładowy kod - blink LED (Timer 0)
    Jak wyżej, lecz zrealizowane na sprzętowym liczniku czasu (timer 0):
    PIC18F67J60 własna płytka developerska Ethernet (serwer/klient WWW)
    W załączniku kod i cały projekt MikroC:
    HTTPDemo_b...timer0.zip Download (60.4 kB)
    W załączniku też jest skompilowany hex (pod rezonator 25MHz)

    Przykładowy kod - PWM1 & PWM2 ledy
    Prosty przykład użycia sprzętowego PWM (Pulse Width Modulation) do sterowania jasnością diod LED. Program używa dwóch PWMów - PWM1 i PWM2 które mają wyjścia na pinach RC1 i RC2:
    PIC18F67J60 własna płytka developerska Ethernet (serwer/klient WWW)
    \W załączniku kod i cały projekt MikroC:
    HTTPDemo..m.zip Download (69.82 kB)
    W załączniku też jest skompilowany hex (pod rezonator 25MHz)

    Przykładowy kod - HTTP sterowanie przez WWW demo
    Jest to lekko zmodyfikowany (uproszczony) przykład od MikroC. Pozwala na sterowanie diodami przez prostą stronkę internetową która jest dostępna na lanie (trzeba odpowiednio skonfigurować adres IP, gateway itp. dla PICa). PIC jest tu w roli servera-hosta.
    W załączniku kod i cały projekt MikroC:
    HTTPDe..zip Download (176.36 kB)
    W załączniku też jest skompilowany hex dla adresu IP PICa 192.168.0.123.

    Błędy na płytce
    Na płytkę zasadniczo wkradł się jeden błąd. Pin mikroprocesora RG4 jest podpisany na silkscreen jako RG1. Nie przeszkadza to jednak w jej użytkowaniu, należy jednak pamiętać co jest co.

    Podsumowanie
    Z płytki jestem bardzo zadowolony. Zachęcony sukcesem wkrótce uznałem, że zaprojektuję nowszą wersję tego PCB, tym razem ze złączem RJ45 zintegrowanym z transformatorkiem od Ethernet (tzw. "RJ45 jack with integrated magnetics"), która również jest już mniej więcej gotowa, ale wrzucę ją tu za jakiś czas. I tym razem zlutuję go od razu z elementami SMD, bo już wszystkie wymagane mam, nie będę ich chałupniczo zastępować odpowiednikami THT...
    Niedługo zaktualizuje post i dodam źródła Eagla/Gerbery płytki z tematu.

    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
  • Licencja Pulsonix