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

Płytka developerska PIC Pinguino2550 i sterowanie lampką za pomocą pilota

p.kaczmarek2 28 Lip 2016 12:42 5604 3
  • Płytka developerska PIC Pinguino2550 i sterowanie lampką za pomocą pilota
    Witajcie moi drodzy!
    Dziś chciałbym pokazać wam moją kolejną płytkę opartą o mikrokontroler PIC i USB bootloader Pinguino - PINGUINO2550. Ponadto pokażę również wykorzystanie tej płytki w praktyce, czyli jak w prosty sposób zrobić sterowanie z pomocą pilota na Pinguino.
    Płytka powstała ponieważ chciałem wykorzystać resztki elementów z szafy, w tym malutki skrawek laminatu, oraz poeksperymentować z lutowaniem SMD (tutaj obudowa SOIC).

    Pinguino 2550
    Pinguino2550 to po prostu płytka z PIC18F2550 i bootloaderem USB kompatybilnym ze środowiskiem Pinguino. PIC18F2550 jest ośmiobitowym mikroprocesorem od Microchipa, cechuje go m. in. 32KB Flash, 2048B RAM i sprzętowe USB. Płytkę można by porównać do Arduino Nano, które w wersji z ATmega328 też ma 32KB Flash.

    Płytka developerska PIC Pinguino2550 i sterowanie lampką za pomocą pilota
    Ja w swoim projekcie zastosowałem tego PICa w obudowie SOIC, ale oczywiście jest też on dostępny w bardziej przyjaznej obudowie DIP.
    Wybór SOIC był podyktowany tylko tym, że chciałem pierwszy raz spróbować lutować czegoś z SMD.
    Płytka developerska PIC Pinguino2550 i sterowanie lampką za pomocą pilota

    Całość oparłem o ten schemat, dodatkowo wyprowadziłem piny potrzebne do programowania ICSP (MCLR, VCC, GND, PGD, PGC), pominąłem natomiast diodę POWER i użyłem rezonatora 12MHz zamiast 20MHz, bo taki miałem w zapasach (pod niego też jest dostępny bootloader).
    Płytka developerska PIC Pinguino2550 i sterowanie lampką za pomocą pilota

    Płytkę zaprojektowałem tak, by zmieściła się na starym ścinku laminatu, który miałem pod ręką. Początkowo założyłem, że tylko PIC będzie w SMD, ale ostatecznie kondensatory odsprzęgające, rezystor 10k od pinu RESET oraz kondensator 220nF dla pinu VUSB też zamontowałem powierzchniowo. Wszystkie elementy (no, oprócz PICa) są z szuflady, elementy SMD wziąłem z wylutu, bo nigdy wcześniej nic w SMD nie robiłem.
    Na płytce znajduje się również wyjście ICSP dla programatora takiego jak PICKIT2 - użyłem go tylko raz przy pierwszym wgraniu bootloadera Pinguino.

    Lutowanie poszło dopuszczalnie jak na pierwszy raz - korzystałem z pasty do lutowania, najtańszej lutownicy kolbowej i cyny 0.5mm. Całość wyszła tak:
    Płytka developerska PIC Pinguino2550 i sterowanie lampką za pomocą pilota Płytka developerska PIC Pinguino2550 i sterowanie lampką za pomocą pilota

    Po wykonaniu płytki i zlutowaniu całości użyłem mojego prostego klona PICKIT2 aby wgrać na PICa bootloader Pinguino poprzez ICSP. W tym przypadku wybrałem wersję na rezonator 12MHz, ale w repo Pinguino są też bootloadery dla innych wartości (20MHz, 16Mhz, itd).

    Środowisko Pinguino
    Płytka jest kompatybilna z środowiskiem i bootloaderem Pinguino. Programowanie odbywa się poprzez USB.
    W tym projekcie użyłem wersji Pinguino V11, ponieważ ona wprowadza bibliotekę IRRemote. IRRemote nie była dostępna w poprzednich wersjach.
    Płytka developerska PIC Pinguino2550 i sterowanie lampką za pomocą pilota

    Pinguino CDC
    Chciałbym tutaj jeszcze wspomnieć o mechanizmie CDC, którego użyłem w dalej opisanym przykładowym projekcie. CDC jest po prostu wirtualny COM port, który jest emulowany bezpośrednio na PICu. Nie wymaga żadnych układów FTDI232 jak Arduino. Pozwala na szybkie i łatwe debugowanie naszych programów.
    Przykładowy program wysyłający informacje po CDC:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    Wysyłane w ten sposób dane można odebrać tak jak z wirtualnego portu szeregowego, czyli np. z pomocą RealTerm lub Putty.
    Pinguino2550 przedstawione powyżej wspiera CDC bez potrzeby dodawania żadnych dodatkowych częsci (takich jak FTDI).

    Użycie Pinguino w praktyce i sterowanie lampką z pomocą pilota od TV
    W sumie w tym miejscu bym mógł już zakończyć opis konstrukcji, ale uznałem, że warto by było jeszcze pokazać do czego można użyć Pinguino w praktyce. Oczywiście, możliwości są wręcz nieskończone. Tak samo jak z Arduino. Ale ja uznałem, że proste i zarazem ciekawe będzie sterowanie przekaźnikiem z użyciem pilota od TV.
    Do tego użyłem:
    - Pinguino2550
    Płytka developerska PIC Pinguino2550 i sterowanie lampką za pomocą pilota
    - Gotowy moduł przekaźnik na 5V z Aliexpress
    Płytka developerska PIC Pinguino2550 i sterowanie lampką za pomocą pilota
    - Odbiornik IR z wylutu
    Płytka developerska PIC Pinguino2550 i sterowanie lampką za pomocą pilota Płytka developerska PIC Pinguino2550 i sterowanie lampką za pomocą pilota

    Odbiornik IR pochodzi z jakiegoś starego telewizora. Przed wylutowaniem obejrzałem płytkę i określiłem, który pin to GND, VCC i sygnał. Następnie umieściłem go na małej płytce uniwersalnej i podłączyłem do Pinguino. Potem wgrałem kod programu, który odczytuje kody IR i wysyła je poprzez USB (CDC) do wirtualnego portu COM na komputerze:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    Podłączyłem Pinguino do komputera i z wirtualnego portu COM odczytałem kody przycisków:
    Płytka developerska PIC Pinguino2550 i sterowanie lampką za pomocą pilota
    Warto zwrócić uwagę, że ten sam przycisk wysyła dwa różne kody naprzemiennie.
    Następnie napisałem program, który oczekuje wciśnięcia danego przycisku i wtedy przełącza przekaźnik:
    Kod: c
    Zaloguj się, aby zobaczyć kod


    Oto całość w akcji:

    Układ reaguje na każde naciśnięcie klawisza, nie gubi przełączeń, krótko mówiąc działa tak, jak powinien.


    Podsumowanie
    Z mojego Pinguino jestem bardzo zadowolony, zwłaszcza że wcześniej próbowałem zwyczajnych implementacji sterowania z pomocą pilota i kodów RC5 i ciągle napotykałem różne problemy. Biblioteka IRRemote z Pinguino wszystko rozwiązała i zadziałała od razu. Z pewnością oszczędziło mi to wiele czasu. No i przy okazji poćwiczyłem lutowanie SMD.
    PS: Oczywiście dobrze wiem, ze ten sam projekt można by zrobić na gotowym Arduino Nano z chin za parę groszy, no ale nie każdy lubi składać swoje projekty z gotowych klocków :)

    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
  • Relpol przekaźniki
  • Relpol przekaźniki
  • #4
    mariomario
    Poziom 18  
    Bardzo fajny projekt, dobry konkurent dla Arduino. Teraz tylko czekać na jakieś konkretne wykorzystanie PIC'ów i/lub Pinguino w roli przydatnych urządzeń np:

    - tester tranzystorów
    - miernik indukcyjności cewek
    - miernik pojemności kondensatorów
    - jakieś mniejsze projekty ale niezwykle przydatne: sterowniki pieców, sterowniki przepływu powietrza do rekuperatora itp.