Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

Raspberry Pi w slocie PCI

Nie jest to takie wspaniałe, jak mogło by się wydawać (bo nie komunikuje się z PC), ale do tej pory chyba nikt jeszcze nie wpadł na taki pomysł.
Może od początku. Od jakiegoś czasu mam skłonność do redukcji liczby zasilaczy i obudów w okolicy, chodzi w tym o kilka rzeczy, marnotrawstwo watów, zajmowane miejsce, ale przede wszystkim - zwolnione gniazdka. Domownicy mają tyle różnych elektronicznych zabawek, że doszło już do tego, iż za telewizorem są dwie, pięciogniazdkowe listwy zasilające, a wolne z tego jest całe jedno miejsce.

Dlatego ostatnimi czasy montuję sobie różne "customowe" zasilacze podobne do tego:

Ten konkretny model, podłączony do 12V zasilania pełni dwie funkcje - rozdzielacza i ładowarki do urządzeń ładowanych przez USB. Dzięki temu, jedno 12V/40W laptopowe źródło zasilania, jest w stanie podawać jedzenie bezpośrednio do sześciu urządzeń (wykorzystane są cztery). A poprzez wbudowaną ładowarkę USB nakarmi także do dwóch urządzeń USB jednocześnie, o ile sumarycznie nie pochłaniają więcej niż pięć amperów. Dzięki temu z całkowitej liczby siedmiu różnych zasilaczy ostał się ino jeden.

Ale co z tym Pi

Jak wiemy, Pi jest zasilane napięciem 5V. Można to robić przez wbudowane złącze µUSB, czego fanem nie jestem, lub przez złącze GPIO. Druga metoda zawsze wydawał mi się ciekawsza/lepsza, z dwóch powodów. Po pierwsze ograniczenia prądowe Pi a po drugie, rezygnując z zasilania przez µUSB pozbywamy się całkowicie wtyczek po jednej stronie płytki (nie mówię o wersji 2).

Gdyby ktoś chciał pytać, "ale co ty chcesz podłączyć, że potrzebujesz dużego prądu?!" - wyświetlacze LEDowe, głównie. Jeden matrycowy wyświetlacz LED 8x8 pobiera w szczycie 0,3A. Takich wyświetlaczy razem zestawiam 4-5, co w najgorszym razie daje 1,5A.

Wracając do tematu, temu czemuś na wzór serwera przydałby się zdalny reset/włącznik, a poza tym ma w sobie niezbyt obciążony 300W zasilacz. To może by go wykorzystać? Moglibyśmy wykorzystać bardzo teoretycznie któryś z wewnętrznych portów USB, ale to nam zajmie cały port (włącznie z linią danych). Możemy się wpiąć bezpośrednio w złącze molex prowadzące do PSU, ale wtedy musimy jeszcze gdzieś wsadzić samo Pi (nie lubię jak coś w obudowie nie jest dobrze przykręcone) i zrobić przelotkę. I wtedy olśnienie, wolny slot PCI.

Slot PCI ma tę przewagę nad PCIe, że dostępna jest na nim cała gama napięć, 3v3 (+standby), +5V, +12V i -12V (i możemy z niego wyciągnąć z grubsza 25W). Nic tylko się wpiąć i korzystać, a "przejściówka" przy okazji załatwi problem z mechanicznym umiejscowieniem Pi w obudowie.

Idealnie byłoby gdyby w Pi dało się odpiąć regulator napięcia 3v3 bez potrzeby odlutowania go. Wtedy można wykorzystać linię 3v3 standby dostępną nawet kiedy komputer nie pracuje. Takiej opcji nie ma, także zostaje nam skorzystanie z 5V albo osadzenie na płytce regulatora przerabiającego 12V na 5V. Zastosujemy pierwsza opcję, bo prościej a poza tym to prototyp, najwyżej się zmieni.
Do tego dwie dodatkowe zabawki, RTC oraz Atmega8, gdyż:

  • Chcę przetestować jak wbudowany w Pi sprzętowy moduł SPI radzi sobie z programowaniem kontrolerów AVR programowanych przez SPI
  • Ma dwa (w sumie trzy) wyjścia PWM (wentylatory)
  • Pragnę przetestować driver do wentylatorów ATX, który wymóżdżyłem po tym jak zastosowanie TD62783AFG w innym projekcie nie wypaliło
  • Toleruje wyższe napięcia, jak mi się coś zetknie do 5V, to nic mu się nie stanie, jak GPIO Pi zetknie się z 5V to "papa Pi" (już raz przerobiłem)

Oryginalnie chciałem wykorzystać szynę SMBus, (która jest dostępna na złączu PCI) do komunikacji miedzy Pi a serwerem. SMBus to nic innego jak I2C z nieco doprecyzowaną specyfikacją, także wyprowadzenia do tegoż są dostępne na złączu GPIO. Ale... Ale się nie da bo Linux. I rezystory, ale Linux jest większą przeszkodą. Pi ma zamontowane na szynie I2C rezystory podciągające je do 3v3, mają wartość 1k8 i trzeba je zdemontować, jeśli Pi ma być używane jako slave. Inaczej płynący przez SMBus prąd przekroczy wszystkie normy. Druga opcją jest zainstalowanie "voltage level-shiftera" na tych liniach, co przy okazji odizoluje trochę Pi od komputera. Ale nawet jeśli zmodyfikujemy sprzęt, to i tak nie możemy wykorzystać modułu i2c procesora w trybie slave (chociaż jest obsługiwany w sprzęcie) bo sam Linux nie posiada odpowiedniego wsparcia. A jestem zbyt leniwy aby takie wsparcie dopisać. Poza tym nie jestem pewien czy dokładna dokumentacja tego procesora jest dostępna w potrzebnym zakresie.
Jedyną opcją wydaje się być wsadzenie między Pi a PCI dodatkowego układu posiadającego dwa moduły i2c albo jw. i realizacja transmisji programowo.

Tak czy inaczej zostaje nam wykorzystanie PCI tylko w ramach zasilania i rozszerzenia Pi o RTC i kilka testowych zabawek, włączając to opcję wywołania resetu serwera i ewentualnego wyłączenia wszystkiego (te funkcje realizowane przez AVR).

Jak widać złącze USB zostało zdemontowane, wystawało za bardzo w tył w stosunku do sieciowego, i tak nigdy do pi nie podłączyłem niczego poza modułem Bluetooth. Poza tym Pi dostanie jeszcze swój własny pełnowymiarowy dysk HDD (skoro już niedaleko jest odpowiednie źródło mocy) podłączony przez adapter USB, który wymontowałem z kieszeni zewnętrznej na takie właśnie dyski.

Suma summarum mamy:

  • Porządnie mechanicznie osadzone Pi
  • Zdalny reset komputera w którym siedzi
  • Zdalne wyłączenie komputera w którym siedzi
  • Sterowanie wentylatorem chłodzącym Pi (wydmuchuje ciepłe powietrze na zewnątrz)
  • Monitorowanie napięć (no skoro Atmega8 ma adc...)
  • Monitorowanie temperatur (bo DS18B20 i one-wire to nie problem dorzucić)
  • Zegar RTC z podtrzymaniem
  • I wszystko mieści się w slocie PCI jak powinno, nie wystaje i nawet śledzia dostanie ;)
  • 6 kontrolek LED, z czego 3 sterowalne i wyprowadzone na śledzia

Swoją drogą ciekawostka: mini-PCIe ma wyprowadzone na sobie piny od interfejsu USB (Pi nie ma USB-device, ale można mu je dodać, co już kiedyś zrobiłem), ani PCI, ani normalne PCIe takich nie posiadają, ale miało je... AGP. Nie wiem po co je miało AGP, znaczy wiem - aby puścić do monitora, tylko chyba nigdy takiego zastosowania nie widziałem.

Oraz fascynuje mnie zrobienie wersji na złączu PCIe, z opcjonalnym akumulatorem w ramach UPS i wpięciu się w +5V SB dostępne na wtyczce zasilania płyty głównej. Tylko wtedy dysk nie będzie dostępny w momencie kiedy główne obwody prądowe zasilacza są odłączone/na zasilaniu awaryjnym. Lubimy rozwiązywać takie problemy. :D

Notka: Bateria, LEDy i rezystory do dzielników napięcia (pomiar napięć) nie są jeszcze na nich zainstalowane. 

sprzęt hobby inne

Komentarze

0 nowych
edmun   12 #1 23.09.2015 18:21

dodaję do zakładek. wrócę do przeczytania wkrótce :D

okokok   12 #2 23.09.2015 18:40

Można prosić o jakieś schematy? Jak sterujesz resetem? Co ze zadalnym włączaniem? Planujesz jakąś przetwornice na 5V z 3V3?

qbaz   11 #3 23.09.2015 18:42

@Kaworu
To się mnie bardzo podoba! Naprawdę fajne i przydatne DIY :)
Narobiłeś mi smaka i chyba też się wezmę za jakąś redukcję ilości zasilaczy ;)
Pozdrawiam

Kaworu   12 #4 23.09.2015 18:48

@okokok: Ze schematami jest ten mały problem, że prawie nigdy ich nie robię. Ale mogę podrzucić layout PCB. Reset podobnie jak i włącznik to podciągana rezystorem do +3v3/+5V linia, która jest aktywna po zwarciu do masy, także to kwestia tylko okreslenia który z 2 pinów jest właściwym sygnałem i podpięcia go do atmegi, tam tylko kwestia wprowadzenia go w stan niski na odpowiedni czas. Przy czym dwie uwagi w danym modelu płyty głównej to może być zrealizowane inaczej (chociaż nie widziałem zeby ktoś to robił inaczej, no ale opcja jest) i kwestia sprawdzenia pod jakim napieciem są przyciski, jak wyższym niż napięcie którego używamy do zasilania naszego układu (tu 3v3) to powinieneś dać jeden n-mosfet w ramach zmiany poziomów tych napięć. A z zasilaniem, chyba się po prostu mało elegancko wepnę w linię +5V SB w tej duzej wtyczce dla płyty głównej. Tam napięcie jest dostępne nawet jak komp jest wyłączony. Ewentualnie przełącznik między zasilaniem ze slotu a tym z bezpośrednio z zasilacza, nie wiem, knuję jeszcze. :D

Kaworu   12 #5 23.09.2015 18:50

@qbaz: No tak w sumie to wygodnie mieć uniwersalny model. Smacznego, baw się dobrze. :D

GBM MODERATOR BLOGA  19 #6 23.09.2015 19:17

Hehe, ciekawy, bardzo ciekawy pomysł :-)

Btw. system operacyjny (np. Windows) nie pyszczy o to, że "coś" jest podpięte do płyty głównej? (Nawet jeśli ograniczasz się do linii zasilania)

Kaworu   12 #7 23.09.2015 19:25

@GBM: Nie, aby chciał się komunikować z czymś umieszczonym w slocie trzeba go o tym powiadomić, nie czytałem dokładnie specyfikacji PCI, ale wygląda że trzeba sygnał PRSNT1# i/lub PRSNT2# pociągnąć do masy. Z reszta chyba wszelkie tego typu zabawki mają jakiś sygnał "presence detect", w usb zdaje się D- trzeba pociągnąć do zasilania i dopiero wtedy system się orientuje, że coś jest podłączone do portu. ;)

  #8 23.09.2015 19:38

Świetne, tylko czemu to jest takie wielkie...?
Pomijając fakt iż teraz większość ludzi zamieniło stacjonarkę na laptopa to takie niedobitki jak ja korzystający nadal z blaszanych pudeł i osobnego monitora kupują raczej gotowce zamiast składać coś samemu w obudowie MIDI czy Tower - innymi słowy aż się prosi o low-profile, bo większość markowych blaszaków jest teraz niska i mała, karta PCI o pełnej wysokości nie wejdzie.

GBM MODERATOR BLOGA  19 #9 23.09.2015 19:42

@Kaworu: mhm, spoko. Dzięki za odpowiedź, dobrze wiedzieć :-)

okokok   12 #10 23.09.2015 19:59

@Kaworu: no ja o takim wlasnie schemacie mowilem :-)

Kaworu   12 #11 23.09.2015 22:48

@okokok: To mi jeszcze powiedz jaki format preferujesz, oraz uprzedzam - tam kompletnie nic nie jest opisane. ;P

okokok   12 #12 23.09.2015 23:05

@Kaworu: jakikolwiek zeby to wydrukowac i wytrawic

  #13 24.09.2015 06:36

Fajny pomysł :)

Kaworu   12 #14 24.09.2015 09:14

@Marco76 (niezalogowany): Dlaczego takie wielkie? Bo to model akurat mi pasujący a nie coś do masowej sprzedaży. I co prawda testy sobie robie w czymś co ma obudowę mieszczącą pełnego ATX'a, ale docelowo będzie w czymś co mieści mini-ITXy (ale tez ma pełnej wysokości slot na karty). Do tego avr nie wejdzie pod Pi (wersja w TQFP by wlazła, ale no, prototypy), a miejsce obok zajmuje bateria z zegarem. Także to takie wielkie bo prototyp. ;P

Kaworu   12 #15 24.09.2015 09:15

@okokok: Jakbym popołudniu zapomniał to mi przypomnij, że mam linka podrzucić. ;)

PAMPKIN   10 #16 24.09.2015 12:34

Tylko po co RTC skoro jest na płycie głównej?

cyryllo   16 #17 24.09.2015 12:49

@PAMPKIN: A jak pobierze z płyty głównej?

Wpis ciekawy ale nie widzę zastosowania dla takiego rozwiązania ;) tak czy siak masz mój miecz.....

PAMPKIN   10 #18 24.09.2015 12:55

RPi kamerką zczyta z BIOSu i zOCRuje? :) No fakt nie pomyślałem, ale czas może przecież pobierać z NTP?

Kaworu   12 #19 24.09.2015 13:10

@cyryllo: Dla mnie zastosowaniem jest tutaj wsadzenie dwóch serwerów o innych zastosowaniach do jednej obudowy. Poza tym, no, eksperymenty. ;)

Kaworu   12 #20 24.09.2015 13:10

@PAMPKIN: Można, chyba że akurat sieć jest niedostępna. ;)

edmun   12 #21 24.09.2015 13:13

@Marco76 (niezalogowany): chyba sobie żartujesz. sam mam w domu 4 blaszaki + Raspberry i nie chcę żadnego laptopa czy tableta. Low profile? Spróbuj takie GTX960 czy 970 na low profile albo w małej obudowie umiejscowić. Nie mówiąc, że temperatura Cię wręcz zje na żywca. Jeden z moich sprzetów samym starym dual core robi taki piekarnik że bez konkretnej wentylacji przez całą obudowę, to nie ma co myśleć o sprawnej pracy nad zdjęciami. Wybacz, ale nie widzę sensu tej całej gonitwy za ładnymi małymi obudowami (sam w pracy mam kilkadziesiąt takich na półce i wiem jak to fajnie potem się u klientów sprawdza, gdzie po 3 miesiącach wszystkie wloty/wyloty pozapychane kurzem)

Kaworu   12 #22 24.09.2015 13:15

@okokok: http://kaw.sajuuk.eu/rpi-addon-pci.pdf - tylko uprzedzam, że to jest wersja niezbyt dokładnie przetestowana, i może coś wysadzić. Poza tym jak nie zdemontujesz gniazda USB to nie zmieści się w slot w obudowie, i jakbyś zmontował to 3 razy sprawdz czy polaczenia elektryczne są na tych liniach co powinny być. ;)

Autor edytował komentarz.
edmun   12 #23 24.09.2015 13:15

Ok, to autora tematu bo na spokojnie sobie przeczytałem. Projekt naprawdę fajny, tylko ja nie za bardzo widzę jaki jest sens lub celowość tego projektu.
Rozumiem, że celem jest ograniczenie liczby zasilaczy tak?
Wtedy celowość widzę, ale żeby Raspberry wsadzać do środka pod PCI żeby mieć zdalny reset/wyłącznik, to już trochę mnie dziwi, bo osobiście moje raspberry jest podpięte pod ten sam router co stacjonarki i zarządzanie wykonuje po wake-on-lan czy komendami zdalnymi do resetowania czy wyłączania sprzętu. Czy coś pominąłem ?

cyryllo   16 #24 24.09.2015 13:17

@Kaworu: A nawet i więcej malin wg potrzeb ;)

Kaworu   12 #25 24.09.2015 13:18

@edmun: Jak napisałem wyżej - ot umieszczenie 2 komputerów o innych zastosowaniach (ale obu serwerowych) w jednej obudowie. Jeden zasilacz mniej w gratisie. ;)
Co do WOL, no WOL ok, ale resetów jak się coś zawiesi (a się zdarza) to po WOL się nie zrobi. Tak czy inaczej to po prostu specyficzne zastosowanie malinki "skoro już tam jest", które akurat mi się przyda, co nie znaczy że ogół społeczeństwa takich rzeczy potrzebuje.
Poza tym wiesz, reset jak reset, zawsze moge wstać i duśnąć reset, ale tu chodzi o automatyczny reset kiedy akurat nie ma mnie w okolicy a serwer cos bardzo liczy. A tak się sam zrestartuje i wroci do tego co robił.

Autor edytował komentarz.
Kaworu   12 #26 24.09.2015 13:22

@cyryllo: W sumie, jakby dało się je prosto spiąć z "dużym kompem matką" to by mogły być jakieś akceleratory, czegoś, jakoś. :D

edmun   12 #27 24.09.2015 13:30

@Kaworu: Oj chyba coś nie tak wytłumaczyłem :)
WOL do budzenia tak, ale reset też mam zdalnie wraz z shutdownem, tyle że poprzez sieć a nie bezpośrednio na PCI :) Choć... teraz już wiem o co chodzi, reset resetowi nie równy i to że ja do OS'a wyślę sygnał resetu to nie jest jak puszczenie impulsu na płytę główną :D

Kaworu   12 #28 24.09.2015 13:32

@edmun: To PCI to tam tylko do zasilania jest. Ale wlasnie dokladnie o to chodzi z tym resetem. ;)

PAMPKIN   10 #29 24.09.2015 13:46

Troszkę dałeś do myślenia nad "porządkami". Projekt fajny. W sumie można zrobić tak ze wszystkim, np.: Arduino czy jakieś płytki developerskie typu STM Nucleo. Kurczę muszę pomyśleć.

Kaworu   12 #30 24.09.2015 13:48

@PAMPKIN: Znaczy wpakowac do PCI/PCIe i wziąć stamtąd zasilanie, o jasne. A co nawet lepsze, te arduina pracują normalnie jako i2c slave, więc można je nawet wpiąć w smbus i rozmawiać z nimi z "dużego" systemu. ;)

okokok   12 #31 24.09.2015 17:32

@Kaworu: To się wytnie kawałek obudowy :-) Dzięki

necavi   6 #32 24.09.2015 19:50

Od pewnego czasu podobna myśl chodzi mi po głowie. Mam już obudowę przemysłową z "szynami" z tworzywa na kilkanaście płytek z układami, które mogłyby tam pracować. Interesuje mnie jakie złącze (typ) mógłbym tam zastosować, aby przez nie przesyłać wszystkie sygnały i zasilanie układów.

Kaworu   12 #33 24.09.2015 20:43

@necavi: Przy tak opisanych wymaganiach, dowolnego które ma odpowiednią ilość pinów i spełnia wymagania prądowe. To może PCIe?

  #34 27.09.2015 06:11

A może "dubudować" switch PCIe albo PCI i spiąć z RbPi?
poprzez takie coś: http://www.avagotech.com/products/pcie-switches-bridges/

Kaworu   12 #35 27.09.2015 14:39

@Anonim (niezalogowany): Łoho, wszystko w obudowach BGA, nie ma opcji aby to normalny amator zmontował. :D