Serwer na OrangePi cz.1 – wybór płytki, chłodzenie, zasilanie awaryjne

Jako kompletny n00b z dziedziny minikomputerów i obsługi linuxa, postanowiłem… uruchomić linuxa na minikomputerze :) Jak się to skończyło? Właśnie czytasz bloga, który jest hostowany na minikomputerze wielkości paczki fajek, który beztrosko dynda na kablu ethernet w mojej szafie – więc chyba nie jest tak źle :) Dla kogo jest ten wpis? Dla kompletnie początkujących w tym temacie. Jest to część pierwsza z trzech, zapraszam.

Minikomputer?
orangepi_hw2„A komu to potrzebne? A dla czego?” Jako pierwsza szlaki przetarła Raspberry Pi, chyba nie ma dzisiaj kogoś kto by o niej nie słyszał. Potem do koszyka owoców dołączyły tańsze alternatywy w postaci Banana Pi oraz jeszcze tańsza Orange Pi. Wszystkie te platformy oferują cały wachlarz możliwości sprzętowych w zależności od wersji i ceny. Występują w wersjach od „zero” lub „light” w cenie kilku $ z tylko naprawdę podstawowym wyposażeniem, aż po wersje wypasione po kilkadziesiąt $ oferujące 1Gbit ethernet, WiFi, obsługę SATA, 2GB pamięci RAM, 16GB pamięci flash eMMC, itd. Większość z nich posiada gniazdo HDMI, większość z nich pozwoli na odtwarzanie filmu 4K w 30fps. Co można na nich zrobić? Serwer WWW, serwer NAS, odtwarzacz multimedialny do TV, platformę do gier, czy nawet inteligenty sterownik domu, bo płytki posiadają też 40 pinowe złącze GPIO do dowolnego wykorzystania. Tutaj ograniczeniem jest głównie dostępność gotowych programów/systemów i nasza umiejętność z ich korzystania, no i oczywiście niewielka moc obliczeniowa małego procesora. Ale jaka jest jej przewaga nad zwykłym komputerem na którym można przecież zrobić to samo? Po pierwsze miniaturowe rozmiary, płytkę można zabudować lub ukryć dosłownie wszędzie. Po drugie, znikomy pobór mocy, u mnie wynosi on 2-3W w porywach do 5W. To naprawdę mało, większość urządzeń w stand-by pobiera większą moc niż taka płytka podczas normalnej pracy.

Jaką platformę i w jakiej wersji wybrać?
orangepi_hw3Jeśli chodzi o platformę, to tutaj po pierwsze ważne są wsparcie i społeczność. Raspberry ma największą społeczność i najlepsze wsparcie, systemy pod nią dostępne są bardzo dobrze rozwinięte i raczej nie napotkamy problemu którego nie będzie się dało rozwiązać. W przypadku Banana i Orange, a w szczególności Orange, to wszystko jest tak naprawdę jeszcze we wczesnej fazie rozwoju i na forach można natknąć się na sporo nierozwiązanych problemów. Po drugie, ważna jest oczywiście cena. Płytki Raspberry są najdroższe, a Orange najtańsze. To tak naprawdę znaczy że dostajemy dużo więcej, za mniej, kosztem słabszego wsparcia. Chyba już znasz moje kryterium wyboru :)

A co z wersją? Na stronie orangepi.pl można znaleźć bardzo ładne zestawienie dostępnych płytek Orange Pi.

Gdzie kupić?
– w sklepie producenta na Aliexpress – Shenzhen Xunlong
– w sklepie Banggood – Orange PI
– na Allegro – Orange PI

Ja zamówiłem płytkę Orange Pi PC+ w zestawie z obudową i przewodem zasilającym, i w sumie zrobiłem to trochę w ciemno, dopiero później czytając którą płytkę warto wybrać a której lepiej unikać – ale okazało się że trafiłem dobrze :) Niestety to proste zestawienie nie mówi nam wszystkiego, i zaraz postaram się napisać o wadach niektórych wersji.

Do płytki potrzebujesz porządnego zasilacza USB 5V 2A, lub najlepiej 3A w przypadku jeśli do płytki chcesz nawtykać różnych akcesoriów na USB. Jeśli na płytce nie będziemy wykonywać jakichś karkołomnych zadań typu kopanie wirtualnych walut, to średni pobór mocy nie powinien być duży. W przypadku serwera WWW pobór mocy to 2-4W, ale ważne jest aby zasilacz też potrafił dostarczyć większy prąd jeśli płytka będzie tego potrzebowała. Stąd też zrezygnowano z zasilania płytki za pomocą gniazda micro-usb (za wyjątkiem wersji zero), więc albo potrzebujesz przewodu usb-dc, albo 5V dostarczysz do pinów I/O (rozpiska będzie niżej). Płytki OPi nie posiadają głównego układu zarządzającego zasilaniem (tak jak modele innych producentów) i nie posiadają filtrów RC do filtrowania zasilania, stąd bardzo ważna jest jakość zasilania. Niedostatecznie wydajne zasilanie lub o niedostatecznej jakości prowadzi do nieprawidłowego działania systemu, pojawiania się błędów zapisu do pamięci, a w ostateczności do uszkodzenia systemu plików co będzie wymagało przywracania systemu z kopii lub stawiania na nowo – zdecydowanie warto zaoszczędzić sobie takich problemów i zaopatrzyć się w porządną ładowarkę USB minimum 2A.

Zdecydowanie nie warto kupować najtańszej wersji płytki, chyba że wiemy co robimy i lepsza nie będzie potrzebna. Procesory H3 obsługują do 2GB pamięci RAM, ale jest to aż za nadto wystarczające dla tego typu procesora i mocy jakiej oferuje. No to po kolei…

CPU – tutaj nie ma co się rozwodzić bo niemal wszystkie płytki mają ten sam procesor. Pomimo oznaczenia 1.6GHz, procesory Allwiner H3 tak naprawdę mogą pracować z taktowaniem 1.3GHz, bo większe powoduje poważne przegrzewanie się procesora i niestabilną pracę. Jeśli chodzi o temperatury, to podobno Orange Pi wypada zdecydowanie lepiej od większości podobnych płytek które mają problemy z przegrzewaniem się.

Pamięć RAM – myślę że minimum wartym uwagi to 512MB, ja wybrałem 1GB, powinno wystarczyć do wszystkich typowych zastosowań. Mój serwer zużywa tylko 250MB z dostępnych 1024MB.

LAN – czyli przepustowość złącza ethernet. W większości płytek to procesor zajmuje się inerfejsem ethernet i oferuje przepustowość do 100Mbit. W teorii to jakieś 12MB/s w obydwie strony, prędkości w mojej sieci lokalnej wahały się pomiędzy 8MB a 9MB/s – ale to całkiem dobry wynik. W zupełności wystarczy do większości zastosowań, w tym na serwer www. Jeśli jednak planujemy wykorzystać naszą płytkę jako serwer NAS do streamowania materiałów wideo na TV, to o ile w rozdzielczości HD taka przepustowość się jeszcze sprawdzi, to przy 4K będzie kiepsko. Potrzebujemy wtedy płytki z dedykowanym układem ethernet i złączem 1Gbit, które wg testów rozpędza się do 600Mbit, i będzie aż nadto wystarczające. Można użyć też dongla usb-ethernet, wtedy prędkość będzie ograniczona do przepustowości USB 2.0, czyli w tym przypadku 35MB/s.

WiFi – do nieczego tego nie potrzebuję, ale sprawdziłem, działa. Prędkość pobierania w sieci lokalnej wifi-router-wifi to 4MB/s, czyli bez rewelacji, raptem 32Mbit. Czytałem jednak że zarówno chipsety stosowane na płytkach jak i sterowniki są mizerne. O ile w trybie klienta działa to w miarę dobrze, to w trybie AP przy kilku klientach (z tego co czytałem, bo trybu AP nie udało mi się uruchomić) całkowicie się zatyka i przestaje działać. Do zabawy, czemu nie. Do poważnych zastosowań lepiej użyć jakiegoś sprawdzonego dongla na USB.

eMMC – jest to wewnętrzna pamięć flash, którą można wykorzystać jako dodatkowy dysk, lub przenieść na nią cały system. Jeśli zależy nam na szybkim dostępie do pamięci, a w szczególności w trybie random i/o, to eMMC jest najlepszym wyborem. U mnie pamięć eMMC może pochwalić się odczytem do 80MB/s i zapisem do 40MB/s, i żadna inna pamięć masowa nie będzie szybsza, a to chociażby z powodu ograniczenia USB do 35MB/s. Jeśli nie zależy nam na szybkości – każda inna pamięć na USB powinna spokojnie wystarczyć.

USB – w zależności od wersji mamy inną ilość złącz USB 2.0, każde o przepustowości do 35MB/s. Każda płytka ma też jedno gniazdo micro-usb OTG, które w zależności od systemu może zostać użyte jako zwykłe USB, więc jest to dodatkowe gniazdo. Uwaga, płytki w wersjach Plus oraz Plus2 posiadają dodatkowo USB HUB który dzieli przepustowość jednego złącza USB na 4. To znaczy 35MB/s do podziału na 4 złącza. Zdecydowano się tutaj na takie rozwiązanie ponieważ płytka nie dość że ma aż 4 (+ 1 OTG) złącza USB, to dodatkowo ma konwerter USB-SATA który też zajmuje jedno z dostępnych w procesorze wyjść USB. Pozostałe płytki nie dzielą przepustowości.

SATA – jedynie w płytkach Plus oraz Plus2. Uwaga, procesor nie obsługuje natywnie SATA, zastosowano tutaj mostek USB-SATA który jest ograniczony do 15MB/s zapisu i 30MB/s odczytu! Możemy tutaj zapomnieć o dysku SSD, jeśli już chcemy dużo miejsca na pliki to zastosujmy zwykły dysk mechaniczny bo prędkości będą ograniczone przez ten konwerter. Reasumując – wersje Plus oraz Plus2 są najdroższe, i absolutnie nie są warte uwagi.

Karta SD – niby do 64GB, ale procesor obsługuje SD, SDHC, oraz SDXC, więc karta większa niż 64GB również powinna być obsługiwana. Przepustowość dla kart SD jest ograniczona do 23MB/s w obydwie strony, więc raczej nie ma sensu dopłacania do karty wyższej klasy. Bardziej ważna od prędkości zapisu/odczytu sekwencyjnego jest prędkość zapisu/odczytu losowego, tutaj przy małej ilości danych karty SD potrafią nieźle zwolnić. Niestety nie wyczytamy takich danych na opakowaniu, ale po więcej informacji odsyłam do wątku na forum armbiana.

Powyższe informacje zostały zaczerpnięte głównie z tematu na forum armbiana, polecam lekturę.

Tak więc jeśli zależy nam na szybkim dostępie do pamięci – najlepsze wyjście to wersja z pamięcią eMMC. To znaczy, nie zawsze, bo jeśli będziemy robili bardzo dużo zapisów do tej pamięci, to… cóż, żadna pamięć nie jest nieskończenie trwała, i lepiej wymienić kartę SD niż przelutowywać pamięć eMMC :) Można też kupić zewnętrzną pamięć eMMC ze specjalną przejściówką SDIO do gniazda kart SD, taka pamięć rozpędza się do ponad 100MB/s, a losowy dostęp do danych jest bardzo szybki – tylko nie wiem do czego aż taka wydajność, zważywszy na to że cena takiego „dongla” sporo przekracza cenę samej płytki Orange Pi.

Temperatury

orangepi_cooling1Fabryczna płytka ma mizerne możliwości chłodzenia. Jedna będzie sobie radziła lepiej, inna gorzej – zależy czy została dobrze zaprojektowana termicznie. Grzeje się głównie procesor, bo to on odwala całą robotę. Jeśli nie będzie miał za dużo pracy, to obniży sobie napięcie zasilania oraz taktowanie, dzięki czemu pozostanie chłodny. U mnie podczas bezczynności jest to 0.98V i 480MHz, temperatura bez chłodzenia waha się w granicach 42 stopni. Gdy damy mu dużo roboty, momentalnie się nagrzeje. U mnie podczas krótkotrwałej i średnio intensywnej pracy potrafi nagrzać się do 65 stopni.

orangepi_cooling2Procesor ma zabezpieczenia termiczne, jeśli nagrzeje się za bardzo to zacznie wyłączać rdzenie. Takie zachowania (wyłączanie rdzeni, regulacja napięcia czy taktowania) zależą od wgranego systemu. Autorzy Armbiana chwalą się, że ich system potrafi przywrócić do pracy wyłączone rdzenie, gdzie inne systemy niekoniecznie to potrafią – i możemy skończyć z tylko jednym działającym rdzeniem aż do restartu urządzenia. Ale kto by chciał bez powodu restartować np. serwer? Przecież liczy się uptime! :)

orangepi_cooling3Dodatkowo procesor można wyposażyć w niewielki radiatorek – zdecydowanie poprawi to chłodzenie. Można zastosować dowolny mały radiator, można przykleić go klejem lub pianką termoprzewodzącą, lub umocować w inny sposób z użyciem pasty termoprzewodzącej. Uważając rzecz jasna aby nic nim nie zewrzeć. Ja użyłem małego radiatora z chipsetu po jakiejś płycie głównej, jego wymiary to niespełna 38mm x 38mm. Pasuje niemal idealnie, swoją powierzchnią pokrywa zarówno procesor, jak i pamięć eMMC z jedną kością pamięci RAM. Musiałem jedynie wypiłować z jednej strony małe wcięcie na jedną z cewek która była wyższa od układów.

orangepi_cooling4Niewielka ilość pasty termoprzewodzącej + jakiś prosty sposób na dociśnięcie radiatora, i chłodzenie gotowe. Ja użyłem niewielkich sprężynek które zapierają się o obudowę – proste, bez trwałej ingerencji w konstrukcję. Niestety – taki radiator zamknięty w obudowie nie będzie w stanie zbyt dobrze spełniać swojej roli. Jeśli płytkę mamy zamiar cały czas obciążać, to trzeba albo zrobić jakiś wymuszony obieg powietrza, albo używać jej całkowicie bez obudowy. Jako że mój układ będzie obciążany tylko częściowo, to nie musiałem się w to bawić, i mogłem zostawić radiator w środku. Tak zamknięty radiator sprawdzi się jako bufor termiczny – odbierze ciepło od układu gdy ten się nagrzeje, a potem spokojnie się wychłodzi, nawet przez obudowę.

orangepi_cooling5Oczywiście wykonałem testy obciążenia. Już po założeniu radiatora, temperatura po uruchomieniu nie przekraczała 35 stopni. 30 minutowy test pod pełnym obciążeniem z otwartym wieczkiem obudowy (plastikowa zasłonka z logiem Orange) nagrzał procesor do 62 stopni. Taki sam test ale z założony wieczkiem, czyli przy całkowicie szczelnej obudowie, nagrzał procesor do 68 stopni, przy których program do testowania zaczął wyduszać z siebie niezrozumiałe dla mnie komunikaty o błędach. Jako że nie będę używał tej płytki do obliczania wielkości wszechświata, to jestem całkowicie zadowolony z rezultatów. Testów obciążenia bez chłodzenia nie robiłem, nawet nie mają one sensu. Jeśli jednak chcesz aby Twoja płytka pracowała w pocie czoła, chłodzenie musisz przemyśleć nieco bardziej.
orangepi_temperature

Zasilanie awaryjne Li-Ion

Jeśli na OPi chcemy postawić serwer z bazą danych, lub inne ważne ustrojstwo, powinniśmy jakoś zabezpieczyć go przed uszkodzeniem lub utratą danych. Nagłe odcięcie zasilania może nawet uszkodzić system plików i całe urządzenie przestanie działać. Stąd też praktycznie każdy serwer jest zasilany przez UPS, czyli zasilacz awaryjny, który wkracza do akcji w chwili zaniknięcia napięcia sieciowego, i jest w stanie podtrzymać pracę maszyny przez określony czas. I tutaj również taki system by się przydał, ale rzecz jasna w mniejszej skali. Najprostszym rozwiązaniem będzie podpięcie OPi do powerbanku, a powerbank do zasilania, tak że zasilanie płynie przez PB. Niestety nie każdy (a nawet mało który) PB potrafi ładować podpięte urządzenie (OPi) i jednocześnie być ładowanym przez zasilacz (ta funkcjonalność nazywa się passtrough). Taki PB powinien także mieć odpowiednią wydajność prądową. Jeśli spełnimy te warunki, to przy braku zasilania sieciowego PB będzie nadal zasilał OPi jak gdyby nigdy nic, a naładuje się on gdy zasilanie powróci. Niestety, żaden z moich PB się nie sprawdził. Xiaomi 10000mAh nie daje 5V na wyjściu gdy jest ładowany, AILI daje 5V ale się wyłącza gdy zostanie odłączony od ładowania, a ładowarko-pb lii-100 w ogóle nie daje 5V podczas ładowania. Niektóre PB również na ułamek sekundy przerwą pracę po odłączeniu zasilania, tak że spowoduje to zresetowanie się naszej płytki.

Innym sposobem jest dodanie zwykłego ogniwa Li-Ion bezpośrednio do płytki… ale nie do każdej. Na płytkach Raspberry oraz Banana można znaleźć dedykowany układ PMU, czyli układ zarządzający zasilaniem, na przykład AXP209. Wtedy taka płytka będzie miała dodatkowe pady do przylutowania gołego ogniwa Li-Ion, a układ sam będzie je ładował i z niego korzystał. Wszystkie płytki OrangePi które posiadają procesor H3 nie muszą mieć dodatkowego układu PMU, bo taki układ jest już wbudowany w procesor (dzięki czemu cena całości jest niższa). No i niestety, nie możemy tutaj w prosty sposób podpiąć ogniwa. Jest to możliwe tylko w przypadku podstawowego OPi oraz OPi Mini, które mają inny procesor i dedykowany układ PMU.

Można też tutaj stworzyć własny układ zasilania awaryjnego, wystarczy ogniwo Li-Ion, przetwornica step-up ustawiona na 5V (minimum 2A), oraz układ ładowania ogniwa, np. TP4056. Oczywiście prąd nie musi płynąć przez cały ten układ bo będzie powodowało to straty, a sam układ TP4056 potrafi ładować maks. prądem 1A więc to za mało. Jeśli nasz zasilacz daje równo 5.0V, to przetwornicę można ustawić na 4.95V, tak że przez układ nie będzie płynął praktycznie żaden prąd. Dopiero gdy napięcie sieciowe zaniknie, układ płynnie przejmie zasilanie z przetwornicy i będzie zasilany z 4.95V. Narysowałem to poniżej:

Pamiętaj też że po pracy na zasilaniu awaryjnym po powrocie zasilania, nasz główny zasilacz będzie musiał jednocześnie zasilać płytkę oraz ładować ogniwo – będzie to wymagało od niego odpowiednio większego prądu, uwzględnij wtedy dodatkowy 1A dla TP4056 i ogniwa. Jeśli zasilanie OPi i ładowanie UPSa ma się odbywać z tego samego zasilacza 5V, to uwzględni też fakt że masy tych układów będą na stałe połączone. Użyty układ ładowania i użyta przetwornica muszą mieć stałą masę, a jakiekolwiek przetwarzanie energii musi się odbywać na linii VCC. Moje układy właśnie tak działają. Moduł ładujący który zastosowałem, oprócz ładowarki TP4056, posiada zabezpieczenie ogniwa które chroni je przed nadmiernym rozładowaniem lub zwarciem. Zabezpieczenie to zwykle odcina przy 2.2V – 2.6V na ogniwie, a przetwornica której użyłem pracuje od 2V – także najpierw zadziała zabezpieczenie które odetnie przetwornicę, i tak właśnie ma się stać – nie chcemy żeby przetwornica zaczęła pracować niepoprawnie z powodu zbyt niskiego napięcia.

Jeśli chodzi o same ogniwa, to możesz użyć dowolnych ogniw li-ion 3.7V (ładowanych do 4.2V). Moja płytka średnio pobiera jakieś 500mA prądu, więc jedno ogniwo NCR18650B o pojemności 3300mAh powinno wystarczyć na 4 godziny i 25 minut pracy na zasilaniu awaryjnym, a to całkiem sporo. Jak to policzyłem? 3.3Ah (pojemność ogniwa) * 3.7V (średnie napięcie robocze ogniwa) = 12.21Wh (watogodzin). 12.21Wh * 0.9 (sprawność przetwornicy 90%) = 10.989Wh. 11Wh (no bez jaj, zaokrąglę to) / 5V (napięcie wyjściowe przetwornicy) = 2.2Ah. 2.2Ah / 0.5A (prąd pobierany przez płytkę) = 4.4 godziny pracy.

Poniżej widzisz rozpiskę wszystkich pinów złącza GPIO zgodną ze wszystkimi płytkami Orange Pi. Uwaga – płytki OPi One oraz OPi Lite mają te złącze odwrócone o 180 stopni. Pin pierwszy złącza jest zawsze oznaczony strzałką na płytce drukowanej


opi_gpio

5.00 avg. rating (99% score) - 13 votes

4 komentarze

  1. Na oko patrząc na ścieżki układu ładowania/zabezpieczenia, plus baterii i wyjście jest połączone, co oznacza, że odcięcie w razie rozładowania jest realizowane przez odcięcie minusa. Mówisz, że masz wszędzie wspólną masę, testowałeś, czy zabezpieczenie prawidłowo odcina zasilanie przy rozładowaniu?

    Brakuje schematu z zaznaczonym zasilaniem.
    Nie gryzie się przetwornica ustawiona na 4.95V zwarta z zasilaczem 5V?

    „Zabezpieczenie to zwykle odcina przy 2.2V – 2.6V na ogniwie” – nie uważasz, że to napięcie jest za niskie i może zniszczyć ogniwo?

    „powinno wystarczyć na 4 godziny i 25 minut pracy na zasilaniu awaryjnym” – ładnie. Ciekawe, czy można by wykrywać brak zasilania i np. ograniczyć taktowanie procesora, żeby zmniejszyć zużycie prądu.

    • Ad.1. miałem na myśli to, że cały obwód zasilania OPi jest na tej samej masie. To znaczy że zasilacz z którego zasilam OPi służy też do zasilania tego układu backupu, i obydwie masy się spotykają na GND OPi. A to że ogniwo jest odcinane na masie to w niczym nie przeszkadza. No faktycznie mogłem narysować całość bo nie bardzo wiadomo o co chodzi, spróbuję to poprawić :)

      Ad.2. Wszystkie zabezpieczenia oparte na układach DW01 i 8205A odcinają przy takim napięciu. Te same zabezpieczenia są też w zabezpieczonych ogniwach i też tak działają. Myślę że jest to dolna granica zadziałania, one bardziej chronią ogniwo przed uszkodzeniem a nie przed rozładowaniem.

      Ad.3. Te obliczenia robiłem dla ogniwa 3300mAh, ale testowałem to na obecnym ogniwie czyli 1300mAh i płytka działała prawie 3 godziny, ale nie przyjmowała jeszcze wtedy ruchu sieciowego. Także pobór prądu jest naprawdę mały :)

      Jak najbardziej można zrobić wykrywanie niskiego napięcia baterii, i napisać skrypt na tę okazję, który by np w ostateczności zamykał bezpiecznie system. Niestety płytka (procesor H3) nie posiada wbudowanego przetwornika ADC i trzeba by użyć jakiegoś dodatkowego układu i go oprogramować. Płytki z układem PMU o których pisałem mają taką funkcjonalność zaimplementowaną i wystarczy tylko to skonfigurować.

  2. taka małą uwaga, ogniwka bardzo nie lubią być podłączone do ładowania cały czas, najlepsze do backapu (nie bez powodu) są stare dobre żelówki, no ale wiadomo, lajonki pod ręką to grzech nie skorzystaćb :)
    tp jest fajnym układzikiem, ale niestety ładuje do oporu i tak trzyma na maksie te ogniwka, a to znaczy szybki zgon, przydał by się jakiś układ odcinajacy tp przy full, aż do spadku do ~75%.

    Przy takim zasilaniu jak teraz, to się może okazać, że dość szybko wywali zabezpieczenie ogniwka i masz mydło zamiast „ups-a”.

    • Tak, ładuje pod korek, ja wiem. Tak samo działają rozwiązania oparte na powerbankach. Wiem że przetrzymywanie ogniwa w pełnym naładowaniu prowadzi do przyśpieszonego starzenia, pisałem już o tym wielokrotnie :)

      Ale kompletnie się tym nie przejmuję, wsadziłem tam jakieś stare ogniwo (bez zapezpieczenia) których w sumie mam bardzo dużo :)

      Żeby to działało poprawnie (jak np, ładowanie baterii w laptopie) to trzeba by użyć jakiegoś mądrzejszego układu.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Proszę pozostawić te dwa pola tak jak są: