Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

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

p.kaczmarek2 28 Jul 2016 12:42 6366 3
IGE-XAO
  • 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:
    Code: c
    Log in, to see the code

    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:
    Code: c
    Log in, to see the code

    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:
    Code: c
    Log in, to see the code


    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 :)

    Cool? Ranking DIY
    Can you write similar article? Send message to me and you will get SD card 64GB.
    About Author
    p.kaczmarek2
    Level 26  
    Offline 
  • IGE-XAO
  • #2
    Urgon
    Editor
    AVE...

    Plus za projekt z użyciem PICa i Pinguino. Ale płytka zasmarkana straszliwie. Popraw te gluty, bo to nieładnie, a i topnik zmyj...
  • IGE-XAO
  • #4
    mariomario
    Level 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.