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

PP Interface do Raspberry Pi

PiotrPitucha 26 Lip 2013 22:38 18627 22
  • PP Interface do Raspberry Pi

    Witam
    Chciałem się pobawić Raspberry PI ale świadomość podpinania się na krótko z kabelkami do GPIO trochę mnie przerażała, postanowiłem zbudować interface który pozwoliłby trenować programowanie peryferiów w bezpieczny dla Raspberry Pi sposób.
    Poszukałem trochę konstrukcji dostępnych w handlu ale każda realizowała jakąś pojedynczą funkcję i na stole musiałoby się pojawić wiele płytek równocześnie.
    Zdopingowało mnie to tylko do zrobienia czegoś realizującego kilka funkcji na jednej płytce.
    Układ ma wymiary Raspberry Pi z wcięciami na wystające złącza i jest wtykany na goldpiny złącza GPIO Raspberry, jest też z tego złącza zasilany ( istnieje możliwość podłączenia zewnętrznego zasilania peryferiów ).
    Funkcje:
    - 8 wejść logicznych, na 4 wejściach można symulować stany przyciskami
    - 8 wyjść logicznych buforowanych na ULN2803, dwa z nich podpięte do przekaźników o obciążalności 10A.
    Expanderem pracującym na SPI jest układ MCP23S17
    Ta część interface jest zgodna adresowo i programowo z komercyjnym PiFace
    Do testowania używam programu Piface Emulator opisanego Link w tym miejscu, sugerowałem się kształtem płytki z tego opracowania, ale układ połączeń jest już własny, dzięki temu udało mi się wygospodarować mały otwór wentylacyjny

    - RTC zbudowany jest na układzie PCF8563, zasilany jest z Raspberry Pi, na płytce są otwory na wlutowanie bateryjki litowej, zastosowanie supercap wymagałoby dodania opornika ładującego kondensator z zasilania 3,3V.
    W układzie zastosowałem stały kondensator 18pF, jeśli ktoś chciałby kalibrować RTC to jest miejsce na trymer, w trakcie budowy nie miałem szans go kupić

    - Na gniazdo wyjściowe doprowadziłem jeden z pinów GPIO, niestety nie jest to pin obsługiwany przez standardowe biblioteki 1-Wire, u siebie przekrosowałem to kabelkiem by nie komplikować obsługi DS18B20 i stosować typowe biblioteki

    Problemy przy konstrukcji:
    - dogrzebanie się do materiałów konstrukcji PiFace by zapewnić zgodność nie było trudne, ale mam wrażenie że materiały te są pełne niedopowiedzeń przypadkowych lub celowych mających "umilić" życie powielaczom układów
    - brak miejsca, choć płytka nie jest zbyt gęsta to wcięcia kształtów powodują że sensowne rozmieszczenie elementów staje się kłopotliwe przy ścieżkach szerokości 15 mils, dopiero widok na rzeczywistej płytce daje obraz co możnaby ulepszyć, ale to widok dość kosztowny przy cenach wykonania płytek :cry:





    Schemat, tutaj będzie rozczarowanie, schemat nigdy nie powstał, nie miałem na niego czasu, chciałem najpierw sprawdzić układ pod względem przydatności, po prostu podpinałem pod GPIO odpowiednie końcówki układów według manuali od producentów:
    RTC PCF8563
    Expander MCP23S17 ( uwaga nie mylić z MCP23017, ten jest na I2C )
    ULN2803 ( ten jest podpiety jako bufor GPA w MCP23S17 )
    Port GPB układu MCP23S17 by zachować zgodność z PiFace pracuje jako wejście, port GPA jako wyjście.
    W dostępnych materiałach nie znalazłem informacji o rezystorach szeregowych do LED, zastosowałem 470Ω co daje bardzo jasne świecenie, odnoszę wrażenie że w oryginale było to 330Ω jeśli dobrze odczytałem paski na rezystorach ze zdjęć.
    Jeden z pinów GPIO podpięty jest bez bufora, nie miałem go w trakcie projektu a chciałem mieć dostęp do testowania programów, wymaga to uwagi by nie zepsuć naszego komputera

    Błędy i niedopatrzenia, układ ma choroby wieku dziecięcego :)
    - pomyliłem linie w RTC i muszę je przekrosować drutem
    - 1-Wire ma być docelowo buforowany by móc pracować na lini bez zasilania, chwilowo 1-Wire podpiąłem przewodem zamiast pinu z GPIO, docelowo ma być jedno i drugie
    - zagubiona masa do przycisków to trzeci brak w płytce
    - przekaźniki są na 250V ale dopiero po przejściu na ścieżki 10 mils będę mógł zapewnić bezpieczne odległości do pracy na napięciu sieciowym, muszę poczytać normy, teraz chyba tylko po lakierowaniu byłyby spełnione.
    PP Interface do Raspberry Pi
    Raspberry i interface

    PP Interface do Raspberry Pi
    Interface zapięty na komputerze

    PP Interface do Raspberry Pi
    Brak przestrzeni spowodował że część rezystorów i kondensatorów lutowana jest od spodu

    Na załączonych zdjęciach widać leżący interface obok Raspberry Pi, kabelki z interface to podłączony czujnik temperatury DS18B20, na drugim ten sam interface nałożony złączem na "kanapkę" na Raspberry Pi, jak widać otrzymujemy zgrabną kostkę do rejestracji stanów na wejściu i możliwością sterowania wyjściami nawet z drugiego końca świata :)

    Podsumowanie:
    - zyskałem bezpieczny układ uruchomieniowy w którym mogę obserwować na LEDach skutki działania moich programów
    - mogę czytać stany logiczne z 8 wejść i przetwarzać je dalej na dane sterujące
    - mogę obsługiwać urządzenia podłączone pod 1-Wire (np. temperatura)
    - mogę powiązać z czasem uzyskanym w RTC dane pomiarowe
    - bez układów zewnętrznych mogę sterować odbiornikami o poborze do 10A
    Przy tych samych wymiarach co PiFace uzyskałem zwiększoną funkcjonalność.
    Cena chwilowo jest kosmiczna ze względu ma duże koszty płytek, nakład pracy na jeden układ poniżej 2 godzin.
    Przy 20 sztukach koszt można szacować na 100zł, co wynosi 2/3 ceny PiFace, jak na układ o zwiększonej funkcjonalności wydaje mi się ceną atrakcyjną.
    Piotr


    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz pendrive 32GB.
  • #3 27 Lip 2013 21:28
    PiotrPitucha
    Poziom 33  

    Witam
    Płytki są spod Warszawy. Nie chcę dołować wykonawców, ale mi się niezbyt podobają; dokładnie 1/4 płytek była wadliwa (co zauważył producent), ale jakoś nie odbiło się to na cenie.
    Następnym razem wracam do starego ulubionego wykonawcy i mam nadzieję, że się nie popsuli (mówię o Faldruku), generalnie byłem z nich zadowolony.
    Gdyby nie moje drobne błędy pewnie upomniałbym się o resztę płytek, ale w tym wypadku nie ma sensu.
    Piotr

  • #4 28 Lip 2013 00:29
    edenlubawa
    Poziom 15  

    Moim zdaniem mógłbyś popracować trochę nad projektowaniem ścieżek, trochę kłują w oczy ścieżki krzywo poprowadzone.

  • #5 28 Lip 2013 01:49
    gbd.reg
    Poziom 21  

    W jakim programie projektowałeś płytkę? Z tego co wiem to większość programów oferuje budowanie płytek na podstawie schematów, dzięki czemu trudniej o pomyłkę, gdyż od razu widzisz co jest niepodłączone lub podłączone źle. Nie znam dedykowanego softu, który byłby o tego typu funkcjonalność uboższy... Nie rozumiem tutaj argumentu braku czasu na zaprojektowanie schematu, bo tyle samo albo więcej czasu spędziłeś na poprawianiu błędów na płytce...

    Polecam poradniki: http://youtu.be/5CF0Q81nGzY w polecanych znajdziesz następne części, jest ich 7 i dotyczą obsługi programu eagle, jednak wiedzę spokojnie można przenieść na dowolny program do projektowania obwodów elektronicznych.

  • #6 28 Lip 2013 08:19
    PiotrPitucha
    Poziom 33  

    Witam
    Co do krzywo prowadzonych ścieżek to w programie ograniczyłem się do 45°, 90° i w konsekwencji chcąc dotrzeć z miejsca na miejsce robię schodki, dodatkowo staram się nie prowadzić ścieżek sygnałowych równolegle na obu warstwach bo nie jestem w stanie przewidzieć wzajemnego ich wpływu, może jest żaden, ale dmucham na zimne.
    Projektowane w ograniczonej wersji Protela99, trzeba się było spieszyć by się nie skończył :)
    Wiem że Protel ma autorouter ale... to nie jest takie proste jak się go nie zna, po drugie trzeba mieć elementy w bibliotece a takich jak tu nie było, czyli potrójna robota, najpierw robienie dwu bibliotek SCH i PCB a dopiero potem projekt i nim się zrobi to program się zablokuje.
    Próbowałem w Kicadzie ale to zupełnie inna filozofia i miałem kłopot z prowadzeniem ścieżek, nie mówiąc o bardziej zaawansowanych funkcjach.
    W konsekwencji kładłem złącza pin po pinie zamiast całych elementów, muszę sobie zrobić swoje biblioteki do jakiegoś bezpłatnego programu i wtedy mogę skorzystać z dobrodziejstwa autoroutera.
    Co do braku pomyłek to też nie jest takie oczywiste jak się bazuje na schematach celowo/przypadkowo wprowadzających w błąd, dopiero po prototypie jestem pewien co i jak :) , na dodatek ze się pomylę na schemacie jest prawie tak samo prawdopodobne jak pomyłka bezpośrednio na PCB.
    Błąd na RTC to moja wina, ale nieszczęśliwe dobranie pinu z GPIO wynikało z opisu złącza przez twórców PiFace.
    Piotr

  • #7 28 Lip 2013 10:54
    unitrax
    Poziom 9  

    Bardzo mi się to podoba, podobne niesamowicie do IOschield do arduino.
    Chyba najbardziej rozbudowanym rozwiązaniem do RaspberryPi pozostaje jednak płytka GertBoard, znając elektrodowych inżynierów, niebawem też powstanie coś tańszego a zarazem znacznie bardziej zaawansowanego.

  • #8 28 Lip 2013 11:32
    PiotrPitucha
    Poziom 33  

    Witam
    Dziękuję za uznanie i czekam na pomysły :)
    Na tapecie mam dużą kartę z przekaźnikami, ilość praktycznie nieograniczona, spokojnie można wysterować tym ponad setkę przekaźników.
    Co do zaawansowanych interface to zastanawiam się nad płytka z procesorem wyposażonym w USB, hardware w dopracowanej jednej wersji dla różnych zastosowań i ładowana do procesora obsługa portów do konkretnych zastosowań.
    Piotr

  • #9 28 Lip 2013 13:10
    krzycho123
    Poziom 31  

    Bardzo ciekawy projekt , podoba mi się że pomyślałeś o chłodzeniu bo chyba da się go nawet użyć z radiatorem nie ?

    Czy zamierzasz wprowadzić ten moduł do sprzedaży czy czysto hobbystycznie go zaprojektowałeś ?

  • #10 28 Lip 2013 16:09
    PiotrPitucha
    Poziom 33  

    Witam
    Chłodzenie polepsza cyrkulację pewnie o kilka maksymalnie kilkanaście procent, celowałem w mikrowentylatory 8x8mm ale musiałbym ich kupić duży worek by hurtownia to ściągnęła, sam byłem zaskoczony że takie małe istnieją.
    Układ robiłem dla siebie, ale pewnie coś udałoby się wygospodarować, tylko ze względu na czystość regulaminową na takie pytania odpowiem wyłącznie pocztą prywatną.
    Pozdrawiam

  • #11 02 Sie 2013 17:32
    krzycho123
    Poziom 31  

    Dzięki Koledze PiotrPitucha mam i swój egzemplarz interfejsu :)

    Niestety narazie nie udało mi się go uruchomić. To znaczy jest wykrywany po SPI ale nie ma chyba komunikacji bo symulator PiFace nie działa.

    System Raspbian ,zgodnie z opisem pobrałem liste aktualnych pakietów :

    Code:
    sudo apt-get update


    Po czym instalujemy paczkę:
    Code:
    wget -O – http://pi.cs.man.ac.uk/download/install.txt | bash


    Restart po czym uruchamiamy emulator :
    Code:
    ~/piface/scripts/piface-emulator


    Być może gdzieś popełniam jakiś błąd , zworki adresowe zgodnie z foto , początkowo miałem reset podłączony do masy dopiero później spostrzegłem błąd.
    Na schemacie oryginalnego PiFace reset jest luzem.

    Fotka układu .

    PP Interface do Raspberry Pi

    EDIT:Wszystko działa , miałem przerwę w jednej ze ścieżek do expandera.

  • #12 02 Sie 2013 17:59
    PiotrPitucha
    Poziom 33  

    Witam
    Po pierwsze uruchamiam wszystko jako sudo, inaczej nie próbowałem.
    Po drugie czy wyedytowałeś blacklist ? jeśli nie to załaduj z ręki:

    Code:
    sudo modprobe spi-bcm2708

    Teraz układ powinien działać, ale jak chcesz widzieć cokolwiek w emulatorze to zaznacz Override Enable oraz Keep inputs updates.
    Jest to opisane w którymś pliku który Ci wysłałem.
    Pozdrawiam

  • #13 02 Sie 2013 18:06
    krzycho123
    Poziom 31  

    Oczywiście sterownik SPI załadowany ręcznie przez - sudo modprobe spi-bcm2708

    Bez tego nie wykrywa płytki . Niestety mimo to nie działa.

  • #14 02 Sie 2013 18:18
    PiotrPitucha
    Poziom 33  

    Witam
    1) zbadaj zasilanie 5V, 3,3V z pewnością jest jak wykrywa expander
    2) zwieraj na złączu po kolei wyjścia do masy, diody powinny świecić i przekaźniki klikać
    3) jeśli to działa to zamiast emulatora odpal Pythona i wpisz ten programik Flashing a LED z dokumentacji, jeśli nie działa to jedyny pomysł to niski stan na Reset, może jakiś paproch zwiera bo obok jest masa

  • #15 03 Sie 2013 14:45
    krzycho123
    Poziom 31  

    Wzbogacając funkcjonalność interfejsu trzeba pomyśleć o zdalnym zarządzaniu.

    Oczywiście możemy spokojnie używać zdalnego pulpitu przez VNC i mieć uruchomiony PiFace emulator lub wydawać komendy przez terminal.
    Alternatywnie można używać samego SSH który jest mniej wymagający niż przekazywanie obrazu po sieci .

    Mając przekierowane odpowiednio lokalne porty dla adresu naszego RPi (22 ,80 i 4444) możemy także używać ciekawej aplikacji dla Androida - RaspiR .

    Pozwala zdalnie (za pomocą skryptów) zarządzać naszym urządzeniem i wyjściami interfejsu. Polecam zapoznać się z tą appką.

    https://play.google.com/store/apps/details?id=info.vandenhoff.android.raspi

    PP Interface do Raspberry Pi

  • #17 05 Sie 2013 23:01
    PiotrPitucha
    Poziom 33  

    Witam
    Właśnie po to wyprowadziłem na mojej płytce 1-Wire :)
    Nettemp to doskonałe narzędzie aczkolwiek zauważyłem jeden drobny problem, na wizualizacji jest niekonsekwencja w opisach temperatury co utrudnia odczyt, po kilka razy jest rozpisana ta sama temperatura na wykresie :(, jedne wartości są opisane po dwa razy, inne po trzy.
    Drugi problem to logowanie, uważam je za potrzebne, ale nie rozumiem czemu można klepać przekaźnikami bez zalogowania, to dość niebezpieczne.
    Gdyby jeszcze można sterować wyjściami podpiętymi po SPI czy też I2C to można by zrobić z mojej płytki kompletny układ sterowania.
    Pozdrawiam

  • #18 05 Sie 2013 23:11
    mormodark
    Poziom 11  

    Co do logowania to będzie na 100% nie było go bo testowałem nettemp'a na komórce ale to inny temat :) A zupełnie nie rozumiem o co chodzi z opisami temperatury. Masz do mnie maila na priv albo forum daj znać.

    Co do twojego projektu jest naprawdę fajny i gratuluję :)

  • #19 16 Sie 2013 16:36
    PiotrPitucha
    Poziom 33  

    Witam
    Podsumuję temat i zamknę bo już nic nowego w tej materii nie będzie się działo.
    Układ działa prawidłowo i spełnił moje nadzieje:
    - Pracuje od momentu powstania z programem Nettemp monitorując temperaturę w mieszkaniu, aplikacja jest bardzo wygodna bo umożliwia wizualizację przez internet, może być widoczny pod publicznymi adresami IP
    - Pracuje bez kłopotów pod PiFace Emulator, program jest bardzo wygodny do testowania płytek
    - Pracuje w Pythonie, tu się dopiero uczę ale chyba nie ma prostszego języka do obsługi mojej płytki :)
    - Pracuje sterowanie z telefonu z Androidem w programie Raspi-R, z innymi aplikacjami mam problem bo wymagają wyższej wersji Androida niż ma mój telefon, na pożyczonym tablecie sprawdzałem jeszcze kilka programów, wszystkie działają bez problemów.
    Ze względu na duże koszty nie będę poprawiał błędów w płytce przez produkcję nowej, krosy zabezpieczyłem patexem by połączenia były trwałe.
    Z doświadczeń zostało mi kilka płytek i kilka gotowych układów, jeśli ktoś jest chętny to proszę o kontakt na priv.
    Piotr

  • #20 19 Sie 2013 22:38
    krzycho123
    Poziom 31  

    Wracając jeszcze do zdalnego sterowania PiFace , ponieważ nie udało mi się uruchomić żadnego z publikowanych w internecie rozwiązań zarządzania przez www .
    Razem z kolegą stworzyliśmy własne rozwiązanie sterowania przez www ,które jest w zasadzie niezależne od platformy .

    Całość działa w oparciu o skrypty python i php , póki co niestety nie mam pomysłu na zwracanie i pokazywanie stanu wyjść na stronie może ktoś podpowie :D

    W planach dodanie kilku funkcji w tym czasowe sterowanie ale póki co się sprawdza.

    PP Interface do Raspberry Pi

  • #21 24 Sie 2013 22:15
    bobeer
    Poziom 28  

    Projekt jest praktyczny, bo zabawa z portami procesora lubi się skończyć nieprzyjemnie ;). Moje R-Pi nie ma buforowania i muszę się stresować, jak podpinam coś nowego :). Wg mnie używanie tego komputera do sterowania LED lub przekaźników poza jakimiś tam walorami edukacyjnymi jest totalnie bezsensu (marnotrawstwo zasobów sprzętowych i innych). Jak widzę biblioteki w pytonie żeby zmienić lub odczytać stan portu to mam żywe skojarzenia z bascomem :)
    Na szczęście jest w sieci nieco informacji odnośnie asemblera na tę platformę, jeśli ktoś chciałby zrobić coś co ma działać bardziej w czasie rzeczywistym.

  • #22 26 Sie 2013 11:17
    PiotrPitucha
    Poziom 33  

    Witam
    Masz awersję do Pythona i Bascoma i do C bo lubisz się narobić w Assemblerze?
    Wydaje mi się ze pisanie systemów sterowania na Pi nie jest pozbawione sensu w żadnym języku a to z powodu szybkości procesora i względnie nieograniczonej przestrzeni.
    Oczywiście można wyważać otwarte drzwi i pisać swoje biblioteki, ale skoro są dla Pythona i C to bawienie się w pisanie własnych musi mieć bardzo głęboki sens, dla przykładu napisanie swojego systemu operacyjnego do sterowania.
    Wracając do Bascoma, w EdW jeden z autorów porównał kody wynikowe Bascoma, C i Assemblera, jak się zarzekał całe życie programował w Assemblerze, może zadanie nie było zbyt rozwinięte ale kody wynikowe różniły się zaledwie kilka procent.
    Kolega stworzył system pomiarowy dla modelu samolotu, takie tam bajery typu obroty śmigła, pobór prądu, GPS i wiele innych, zsynchronizował to z obrazem z kamery dało się to zrobić w Bascomie, nim powiesz że Bascom do niczego się nie nadaje to zobacz Link
    Dawno temu pracowałem w szpitalu, respirator dla niemowląt był sterowany procesorem 8085 jeśli jeszcze ktokolwiek jeszcze pamięta ten Intelowski wyrób.
    System niewątpliwie czasu rzeczywistego, od którego zależało życie niemowlaków napędzany był zegarem 2,5MHz i nie był to RISC więc teoretycznie odpowiadał RISCowi napędzanemu zegarem 0,25MHz, Raspberry Pi ma koło 2400 razy szybszy zegar i mocniejszy procesor i mówisz że sterowanie z Pi to tylko w Assemblerze?

  • #23 29 Gru 2013 19:46
    PiotrPitucha
    Poziom 33  

    Witam
    Pisałem o tym już na innych forach, ale trafiłem na epokowe rozwiązanie :).
    Jak donosi autor Nettempa :

    Poniżej przedstawiam jak jest to wszystko u mnie podłączone. A dokładnie dwa czujniki DS18B20 podłączone pod GPIO 4 tylko na dwóch liniach. Za poprawne działanie tylko na dwóch przewodach odpowiada moduł w1_gpio z wpisem pullup=1. Całość wpisu w /etc/modules to w1_gpio pullup=1

    Sprawdzałem działa, może się komuś jeszcze przyda.
    Piotr