Banana Pi — prototypowanie bez cyny
W sieci istnieje cała masa najróżniejszych projektów zarówno programowych jak i sprzętowych z udziałem przeróżnych płytek deweloperskich. Niemal każdy jest w stanie sobie wymyślić bądź wyszukać zastosowania, które z udziałem takiej płytki będą wręcz nieodzowne. Jeśli ktoś przegląda zasoby sieci na bieżąco w tej tematyce, to tylko kwestią czasu jest skończenie z wszelkimi wymówkami celem podwinięcia rękawów do roboty...
Nie inaczej stało się w moim wypadku. Natknąłem się na projekt ze strony SpritesMods.com, konkretnie jest to Micro Arcade Cabinet na bazie Raspberry Pi. W pierwszym momencie, gdy zobaczyłem to maleństwo w akcji oniemiałem i błyskawicznie przekonałem się do jego odtworzenia. Niemniej po chwili namysłu stwierdziłem, że zadanie jest czasochłonne zarówno od strony programowej jak i sprzętowej. Szczęśliwie okazało się, że Sprite_tm udostępnia znaczną część zasobów na licencji GNU GPL, jednak mimo wszystko część nieudokumentowanych zagadnień w tymże projekcie stanowi zagadkę do rozwikłania we własnym zakresie.
W kolejnym etapie moich przemyśleń doszedłem do wniosku, że projekt, choć jest wizualnie szałowy, na dłuższą metę akurat w takiej formie nie jest do końca dla mnie praktyczny, a akurat ja nie należę do grupy osób, którym wystarcza wizualne piękno ponad praktycznymi zastosowaniami. Spoglądanie w mikry ekran oraz sterowanie zminiaturyzowanym manipulatorem na dłuższą metę dla mnie na pewno nie byłoby przyjemne. Na bazie moich doświadczeń z Handheldami mogę śmiało stwierdzić, że średnio po 15 minutach grania mam już dość. Postawiłem więc na upgrade w postaci obsługi bezprzewodowego pada i możliwość podłączenia konstrukcji do pełnowymiarowego odbiornika audio-wizyjnego.
Stwierdziłem także, że próba sprowadzenia poziomu skomplikowania projektu do wspólnego mianownika umiejętności przeciętnego użytkownika niekoniecznie byłaby najgorszym pomysłem. Nieodzownym zatem stało się uproszczenie projektu. Postanowiłem więc złożyć swoją aplikację o przyznanie płytki deweloperskiej Banana Pi, gdyż tenże kawałek sprzętu jest niewiele droższy od Maliny, a jest w stanie emulować szerszą bazę tytułów z lepszym skutkiem.
Kolejnym wyzwaniem, które sobie zarzuciłem jest ograniczenie stosowania cyny w możliwe maksymalnym stopniu, nie ukrywam że dążę do tego aby było 100% bez lutowania. Jako, że moja aplikacja została rozpatrzona pozytywnie bodajże jako jedna z pierwszych, nie ma szans na to aby mój projekt (tak jak sterta innych) wleciał do szuflady na później ;)
Komponenty
Pomimo, że swojego egzemplarza Banana Pi w ciągu dalszym oczekuję, zdążyłem już przeszukać dziesiątki zakątków sieci i podjąć decyzje co do zastosowania konkretnych komponentów. Absolutnie nie twierdzę, że lista jest ostateczna i zamknięta. Na chwilę obecną układam wszystko w myślach, niemniej praktyka wszystko zweryfikuje po tym, jak Banana Pi fizycznie do mnie dotrze. Poniżej postaram się opisać krótko zastosowanie komponentów, których oczekuję.
Banana Pi
Jakby nie patrzeć jest sercem projektu, bez którego reszta wymienionych komponentów zatraca sens. Zawiera mocniejsze CPU jak i GPU w stosunku do Raspberry Pi. W odróżnieniu od Maliny jest w stanie uruchomić zarówno systemy GNU/Linuksowe jak i Androida.
TFT LCD
Nie jest tajemnicą, że najlepszą jakość wyświetlanego obrazu można osiągnąć stosując cyfrowe rozwiązania. Niestety, nie są one najtańsze ani najprostsze w zastosowaniu z płytkami deweloperskimi, a już w szczególności gdy chcemy zdecydować się na monitor z przedziału trzy do pięciu cali. Oczywiście wszystko zależy od wykorzystywanego interfejsu, Banana Pi jest wyposażone w złącze LVDS - tak, tak dokładnie to samo LVDS, które wykorzystuje również Apple. Można zatem spodziewać się ciekawych i dobrze wykonanych rozwiązań na potrzeby tego interfejsu niemniej na chwilę obecną uruchomienie takiego wyświetlacza nie należy do rzeczy najprostszych.
Zdecydowałem zatem, że przy zastosowaniu niewielkiego wyświetlacza nie ma potrzeby narażać się na wysokie koszta i w tym wypadku rozwiązaniem będzie wyświetlanie wizji drogą analogową. Plus jest taki, że tego typu monitorków jest zatrzęsienie, z tymże mają jedną wadę - domyślnie zasilanie opiewa na 12V... Wadę w każdym razie udało mi się przynajmniej teoretycznie zniwelować (o tym poniżej), a wybór padł na dość popularny panel LCD LQ035NC111 oczywiście włącznie z płytą sterującą.
Uprzedzając komentarze odnośnie takiego, a nie innego wyboru - wiem, że można zakupić taniej takie monitorki obudowane już nawet za 16 USD, niemniej zrezygnowałem z zakupu kota w worku ze względu na założenia tego projektu. Kłopot w tym, że kupując LCD w zabudowie nie widzimy jak wyposażona jest w środku płyta sterująca i także nieznane są nam gabaryty tejże płyty. Problem niewłaściwego wyboru najczęściej ujawnia się przy montażu. Zdarza się, że owa płytka bywa szersza od panelu TFT LCD, a zabawy w ucinanie i piłowanie PCB nie zawsze są złotym środkiem na bolączki tej natury problemów.
IOIO-OTG
Jest to kolejny, dość kosztowny kawałek elektroniki wart swojej ceny. IOIO OTG kosztuje około 35 USD - czyli dokładnie tyle ile Raspberry Pi. Zdarza się kupić i taniej, np. za 25 USD + prowizja za przewalutowanie. IOIO jest typem urządzenia, które obnaża plastikowość wp czy innego smartfonowego badziewia bez dostępu do terminalu czy jakichkolwiek interfejsów w ogóle. Generalnie IOIO pozwala na wyprowadzenie różnej maści interfejsów w postaci złącz na płytce. Wprost rzecz ujmując pozwala na zamontowanie GPIO do tabletu tudzież smartfonu opieranego na Androidzie.
Najważniejszy w takim przypadku jest support i możliwości, a tych IOIO nie brakuje. Dostajemy wsparcie programistyczne w postaci gotowych bibliotek jak i urządzenia działającego w dwóch trybach. IOIO niekoniecznie musi być spięte kablem ze smartfonem czy tabletem - możliwa jest także komunikacja przez Bluetooth. IOIO kupiłem bardziej do zastosowania z tabletem, niemniej wybrałem je także jako rozwiązanie tymczasowe, gdyż społeczność Banana Pi w chwili obecnej ciężko pracuje nad obsługą GPIO w Androidzie. IOIO napewno należy się oddzielny wpis, największą zaletą jest fakt, że stosując to akcesorium nie tracimy gwarancji tabletu/smartfonu. Nie mniej ważną kwestią jest fakt, że IOIO-OTG jest sygnowane ikonką Open Hardware.
OLED LCD
Był to jeden z pierwszych komponentów będących obiektem moich długich poszukiwań. W zasadzie mamy do czynienia z zalewem wszelkiej maści tego rodzaju wyświetlaczy na aukcjach, który zatem warto wybrać? Niezależnie od tego co wybierzemy, najważniejszy jest chip sterujący. Wybrałem SSD1306 ze wzgląd na to, że Adafruit dostarcza właśnie takie wyświetlacze oczywiście z niezbędnym oprogramowaniem. Naturalnym utrudnieniem moich poszukiwań był także fakt, że miał to być gotowy, polutowany element z wyprowadzonymi pinami.
Najprostszą drogą było zakupienie takiego wyświetlacza z Adafruit, niemniej cena za wysyłkę z pewnością była skutecznym hamulcowym pomimo znośnej ceny wyświetlacza. W każdym, razie udało mi się zakupić całkiem podobny wyświetlacz z pinami montowanymi na tył, a nie do góry. Dostawca tegoż wyświetlacza zarzeka się, że produkt jest kompatybilny z kodem udostępnianym przez Adafruit.
Szczerze powiedziawszy nie miałem dużego wyboru - ustalając takie, a nie inne kryteria udało mi się znaleźć tylko jedną ofertę. Jak będzie w praktyce? Zobaczymy. Chciałem dobrać coś większego, z większym zagęszczeniem pikseli, ale niestety, jeśli chodzi o wyświetlacze w takich, a nie innych proporcjach ogólnie jest bieda.
Regulator napięcia
Jak wiadomo wraz z wyborem taniego wyświetlacza TFT LCD zrodził się problem zasilania naszej konstrukcji. Banana Pi - tak samo jak zupełna większość deweloperskich płytek - jest przystosowana do zasilania pięcioma Voltami. Bezpośrednie zasilenie dwunastoma Voltami przy dwóch Amperach z pewnością mogłoby posłać tę płytkę na tamten świat. Regulatorów napięcia mamy w opór. Dlaczego wybrałem taki, a nie inny?
Po pierwsze, widziałem te układy w praktycznym zastosowaniu z Maliną w innych projektach i ich autorzy jakoś się specjalnie na nie nie żalili. Sprzedawcy poza tym, że wychwalają się ich efektywnością czasem potrafią dać praktyczny przepis na np. ładowarkę akumulatorową. Osobiście wybrałem model z ekranikiem LCD, który jest w stanie wskazywać napięcie wejściowe jak i wyjściowe, poza tym układ jest wyposażony w zabezpieczającą diodę. Wbrew pozorom model bez wyświetlacza nie był o wiele tańszy, zdecydowałem zetem, że warto dodać taki bajer do tej konstrukcji, tym bardziej, że można go w dowolnej chwili wyłączyć.
Joystick Shield
Długo się zastanawiałem nad zastosowaniem tego komponentu. Można zakupić bowiem samą gałkę analogową przylutowaną do miniaturowej płytki i takie rozwiązanie kosztuje grosze. Mimo wszystko zdecydowałem się na kolon jednego z takich modułów pierwotnie przeznaczonych do Arduino. Powodem był m.in. brak samej płytki z przylutowanymi buttonami. Nie jest to oryginał ani też chamski klon - konstrukcja różni się rozstawem elementów na PCB. Zrezygnowałem z zabaw w samodzielne montowanie gałki i przycisków, gdyż wolałem zakupić coś, co można będzie wykorzystać oddzielnie w innym projekcie.
Płytka ta poza oczywistą funkcją, jaką jest wyprowadzenie przycisków i gałki na piny oferuje możliwość podłączenia taniutkiego wyświetlacza monochromatycznego ze starszej Nokii, jak i możliwość podłączenia interfejsu Bluetooth. Poza tym dostajemy możliwości w postaci wyprowadzenia na interfejs I2C czy też RF. Na płytce również znajduje się przełącznik na 3.3V i 5V.
Dlaczego wybrałem klon? Powód jest całkiem błahy - ze względu na kolor. Większość komponentów udało mi się odnaleźć w kolorze charakterystycznym dla Banana Pi - znaczy atramentowym, a za tym shieldem dodatkowo przemawia fakt, że reszta elementów jest w kolorze żółtym, a nie jak to było w przypadku innych shieldów - niepasującym do reszty, losowym i pstrokatym. W tej chwili najbardziej obawiam się o rozmiar - mam nadzieję, że na potrzeby projektu ten komponent nie będzie zbyt duży.
Głośniki
Niezbyt długo zastanawiałem się nad nimi - wybrałem takie z przenośnej konsolki, których nie będzie trzeba degradować na potrzeby projektu ażeby móc je oczywiście wykorzystać także w przyszłości. Wybór zatem padł na głośniki z Sony PSP. Wiem, nie są one najwyższych lotów, ale nie chciałem przesadzić z upychaniem elementów w i tak wąskiej części konstrukcji. Większość oldschoolowych szpili jakością dźwięku również nie grzeszy. Oczywiście spodziewam się, że do ich działania potrzebny będzie poniższy element.
Wzmacniacz
Na potrzeby projektu wybrałem oczywiście dwukanałową konstrukcję z potencjometrem. Podstawą tej decyzji jest prostota tego rozwiązania. Na wypadek, gdy coś będzie ewentualnie trzeszczeć w głośniku, łatwiej nam będzie zdiagnozować ten stan pokrętłem aniżeli dogrzebując się ustawień a to systemu operacyjnego, a to emulatora, a to wewnętrznych ustawień danej gry. Poza tym kolorystycznie ten element do projektu się wpasował ;P
Posłowie
Na zakończenie chcę przytoczyć kilka kwestii - w większości wypadków nie podaję konkretnych modeli komponentów gdyż po pierwsze nikomu nie chcę robić reklamy, tym bardziej w obliczu faktu, że wszystko co tu opisałem ma podłoże wyłącznie teoretyczne. Po drugie - lista komponentów może się zmienić ze względu na różne czynniki projektowe. Nie opisałem też wszystkiego, przede mną dobór pozostałych komponentów, przewodów i złączek.