KindleBerry Pi

KindleBerry Pi
Pobierz PDF Download icon
Lubicie czasem posiedzieć z laptopem w parku? Albo popracować zdalnie w barze przy plaży lub latem w kawiarni, w malowniczej miejscowości skąpanej w słońcu? Brzmi fajnie, nie? Niestety, ci co spróbowali, szybko odkryli, że słońce i laptop to nie jest dobre połączenie - klasyczne ekrany LCD nie nadają się do pracy przy dużym nasłonecznieniu. Gdyby tylko mieć laptop z ekranem EPD? W artykule pokazujemy, jak zbudować takie urządzenie w bardzo prosty sposób.

Rysunek 1. Budowa typowego ekranu TFT-LCD

W większości laptopów wbudowany ekran LCD wymaga podświetlenia na tyle jasnego, by barwy prezentowane na ekranie mogły być jaśniejsze niż otoczenie. Wynika to z budowy takiego ekranu, tak jak zostało to pokazane na rysunku 1. Niestety, w miejscach mocno nasłonecznionych jasność otoczenia jest tak duża, że ekran nawet nowoczesnego laptopa przestaje być czytelny.

Zupełnie odwrotne cechy mają wyświetlacze EPD, czyli bazujące na elektronicznym papierze (rysunek 2). W ich przypadku, by prezentowana treść była czytelna, musi być oświetlona z zewnątrz - np. właśnie dzięki światłu słonecznemu. Niestety typowy czytnik taki jak Kindle nie jest komputerem i nie da się na nim normalnie pracować. Można jednak przygotować rozwiązanie łączone, w którym serce komputera stanowi Raspberry PI, a wyświetlacz pochodzi z czytnika takiego jak Kindle.

Rysunek 2. Zasada działania elektronicznego papieru na przykładzie technologii e-ink

KindleBerry Pi - projekt bazowy

W artykule bazujemy na projekcie KindleBerry Pi (fotografia 3), opracowanym przez Studio Ponnuki na bazie czytnika Kindle 3. generacji oraz minikomputera Raspberry Pi generacji pierwszej. Zastosowanie nowszego czytnika nie zrobi większej różnicy, a może podnieść koszt wykonania projektu. Można jednak pokusić się o użycie czytnika z ekranem o większej przekątnej albo z szybszym odświeżaniem, dzięki czemu praca na komputerze będzie wygodniejsza. Natomiast zdecydowanie warto sięgnąć po nowszą wersję Raspberry Pi, która będzie nie tylko silniejsza, ale też będzie zawierała wbudowane więcej interfejsów, które przydadzą się w trakcie użytkowania komputera. Najlepiej wykorzystać model Raspberry Pi 3 B+, w którym od ręki otrzymamy aż 4 porty USB, 1 GB pamięci RAM oraz obsługę Wi-Fi (fotografia 4).

Fotografia 3. Podstawowa wersja KindleBerry

Fotografia 4. Raspberry Pi 3 Model B+

Rysunek 5. Połączenie przewodowe Kindle

Ogólny projekt takiego przenośnego, miniaturowego komputera wygląda następująco (rysunek 5): Kindle pracuje jedynie jako wyświetlacz, podłączony do Raspberry Pi kablem USB. RPI podłączone jest do zasilania - czy to do zwykłego zasilacza 5 V (ładowarki do telefonu), czy do akumulatora. Zamiast ogniw i sterownika zasilania można po prostu użyć powerbanku. Do Raspberry Pi podłączamy także klawiaturę i myszkę, jeśli jest potrzebna. Można je podłączyć przewodami, do złączy USB, bezprzewodowo, poprzez jeden lub dwa odbiorniki radiowe podłączane do USB, albo - w przypadku modelu RPI 3B+ - przez Bluetooth, bez dodatkowych konektorów. Łącznie tymi wszystkimi akcesoriami zajmiemy maksymalnie trzy porty USB typu A, co oznacza, że w modelu Raspberry Pi 3B+ zostanie nam przynajmniej jeden wolny, a w przypadku modelu z dwoma portami możemy być zmuszeni do użycia dodatkowego huba USB.

Czy w ten sposób tworzymy faktycznie przenośny komputer? Pomyślmy o tym w następujący sposób, zakładając, że korzystamy z Raspberry Pi 3 model B+. Wyobraźmy sobie, że jedziemy na dłuższy wyjazd zagraniczny, np. do „ciepłych krajów”, w trakcie którego będziemy musieli co jakiś czas pracować, ale będziemy się starać jak najwięcej czasu spędzić na świeżym powietrzu. Jest to coraz bardziej popularny sposób spędzania zimy przez wielu polskich specjalistów. W taką podróż oczywiście zabieramy smartfon, a do niego mocną ładowarkę i powerbank. Bierzemy też czytnik książek elektronicznych, bo w czasie wolnym chcemy się zrelaksować przy ciekawej lekturze. Do czytnika i do telefonu potrzebne są przewody zasilające, a być może i druga ładowarka na wszelki wypadek. Oznacza to, że większość podzespołów KindleBerry Pi i tak bierzemy ze sobą! Potrzebne jest jeszcze tylko Raspberry Pi i klawiatura oraz ewentualnie myszka. Ta ostatnia może być miniaturowa, a i klawiatura może być niedużych rozmiarów - na pewno zajmie mniej miejsca niż laptop. Ba - komplet ten jest znacznie tańszy niż pełnoprawny, nawet niewielki laptop, więc w razie nieszczęśliwego zdarzenia utrata takiego zestawu będzie nas mniej bolała niż utrata całego notebooka. A przy okazji zyskujemy możliwość pracy w jasnym świetle.

Uwolnienie czytnika

Największym problemem, związanym z całym tym projektem, jest zdjęcie zabezpieczeń z czytnika. Urządzenia takie jak Kindle są zabezpieczone przed różnymi operacjami, by można było z nich korzystać tylko tak, jak producent to przewidział. Operacja usuwania tych zabezpieczeń nazywa się „jailbreaking” i sprawia, że użytkownik ma dostęp do praktycznie całego systemu operacyjnego czytnika, a więc może go przekonfigurować i doinstalować na nim dodatkowe rzeczy. Niestety, w praktyce oznacza to też utratę gwarancji na czytnik, a w przypadku popełnienia błędu po drodze urządzenie może ulec uszkodzeniu. Co więcej, w niektórych krajach taka czynność może być nielegalna. Niemniej, im urządzenie jest bardziej popularne, tym większa szansa, że ktoś przygotował już narzędzia umożliwiające łatwe zdjęcie zabezpieczeń z takiego sprzętu. W przypadku Kindle, a więc najbardziej popularnego elektronicznego czytnika książek na świecie, nowe programy do zdejmowania zabezpieczeń pojawiają się dosyć szybko po premierze nowych generacji urządzeń. I choć sprzęt ten jest droższy niż rozwiązania konkurencyjne, to bardzo łatwo go dostać, nawet przeglądając pierwszy lepszy serwis z ogłoszeniami kupna i sprzedaży przedmiotów przez Internet.

Obecnie, szukając programu do zdjęcia zabezpieczeń, warto sięgnąć po jedno z dwóch narzędzi, zależnie od posiadanej wersji urządzenia i firmware’u. Dla urządzeń z firmwarem w wersji 2.x, 3.x i 4.x, a więc na czytnikach Kindle bez obsługi interfejsu dotykowego, takich jak Kindle 2, DX, DXG, 34, postępujemy zgodnie z zaleceniami podanymi pod adresem: http://bit.ly/2YQy8RV. W przypadku czytników z firmware'em w wersji od 5.0.x do 5.4.4.2, a więc urządzeń takich jak Kindle Touch, PaperWhite, PaperWhite2, Touch 2, Voyage, PaperWhite3, OasisTouch 3, aktualną wersję narzędzi znaleźć można pod adresem: http://bit.ly/2VJvgUZ. Można się spodziewać, że z czasem pod tym drugim adresem będą pojawiały się kolejne narzędzia do łamania zabezpieczeń nowszych generacji czytników Kindle, aż do momentu, gdy firma Amazon wprowadzi w swoich produktach jakieś rewolucyjne zmiany. W niniejszym artykule nie opisujemy kolejnych kroków związanych z samym zdjęciem zabezpieczeń, gdyż będą się one różnić szczegółami w zależności od wersji posiadanego czytnika. Na koniec warto doinstalować narzędzie ułatwiające wgrywanie nowych aplikacji, takie jak LaunchPad.

Instalacja oprogramowania na Kindle

Po „uwolnieniu” czytnika możemy zabrać się do instalowania na nim narzędzi, potrzebnych do realizacji projektu. W pierwszej kolejności będzie to emulator terminalu. Dobrym przykładem będzie myts-6, bazujący na programie kiterm, ale nieco usprawniony pod kątem pracy na Kindle. Jego opis można znaleźć pod adresem: http://bit.ly/2WmvQMM, skompilowany program, zgodny z LaunchPadem, pobrać z adresu: http://bit.ly/2K0hzP7, a kod źródłowy został udostępniony pod adresem: http://bit.ly/2YOwlwn.

Bardzo ważne jest także, by zmodyfikować działanie interfejsu USB czytnika, tak by mógł służyć jako interfejs sieciowy. W tym celu korzystamy z narzędzia USBNetwork. Jest ono dostępne pod adresem: http://bit.ly/2YQy8RV, przy czym konkretna wersja, jaką należy pobrać, będzie zależeć od wersji posiadanego czytnika i jego firmware’u.

Po upewnieniu się, że w czytniku funkcja USBNetwork jest włączona, należy podłączyć czytnik przez USB do Raspberry Pi. W tym momencie czytnik będzie na swoim porcie USB widział sieć ethernetową i miał tam skonfigurowany adres 192.168.2.2. Oznacza to, że na Raspberry Pi należy skonfigurować adres 192.168.2.1 jako automatycznie przypisywany do portu USB. By to zrobić, należy w pliku /eth/network/interfaces wprowadzić ustawienia pokazane na listingu 1.

 

Listing 1. Ustawienia umożliwiające komunikację IP za pomocą interfejsu USB

allow-hotplug usb0
mapping hotplug
script grep
map usb0
iface usb0 inet static
address 192.168.2.1
netmask 255.255.255.0
broadcast 192.168.2.255
up iptables -I INPUT 1 -s 192.168.2.1 -j ACCEPT

Teraz musimy upewnić się, że Raspberry Pi będzie automatycznie uruchamiać się z zalogowanym użytkownikiem. Bez tego nie dojdzie do momentu, w którym czytnik będzie można kontrolować z użyciem Raspberry Pi.

Aby Raspberry Pi miało automatycznie zalogowanego użytkownika, należy edytować plik /etc/inittab i wykomentować linijkę:

Fotografia 7. Klawiatura Apple Wireless Keyboard

Fotografia 8. Miniaturowy modem Bluetooth IOGEAR GBU421 na USB

Fotografia 9. Miniaturowa karta sieciowa Edimax EW-7811Un na USB

Fotografia 10. Przenośny router Wi-Fi TP-Link TL-WR702N

Fotografia 11. Rozstawienie KindleBerry w wersji bezprzewodowej jest szybkie, łatwe i wygodne

Jako klawiaturę, autor wykorzystał model Apple Wireless Keyboard (fotografia 7), a więc przenośną wersję na Bluetooth, o układzie identycznym jak ten, z jakiego korzysta na co dzień na swoim laptopie. Ponieważ autor zapragnął by jak najbardziej wyeliminować kable, w projekcie użył nie tylko modemu Bluetooth na USB (model IOGEAR GBU421, fotografia 8), ale też karty Wi-Fi na USB (Edimax EW-7811Un, fotografia 9). W przypadku użycia nowszej wersji Raspberry Pi, oba te dodatki nie będą potrzebne.

Do zapewnienia komunikacji bezprzewodowej pomiędzy Raspberry Pi i Kindle posłużył przenośny router firmy TP-LINK, model TL-WR702N (fotografia 10). To element, który nie jest konieczny, ale zwiększa wygodę, przy czym dosyć mocno podnosi koszt realizacji całego projektu.

Jako źródło zasilania wykorzystany został powerbank USB, a uzupełnieniem jest 4-portowy hub USB, który ułatwia zarządzanie kablami.

Warto dodatkowo omówić kwestię zasilania. Sam Kindle, dzięki swojemu wyświetlaczowi, może pracować dosyć długo bez ładowania. Fakt, że będzie miał włączone Wi-Fi skróci ten czas. Natomiast z różnych analiz wynika, że Raspberry Pi jest w stanie działać ponad 28 godzin na powerbanku o pojemności 16 Ah, w trakcie strumieniowania wideo wysokiej rozdzielczości, co widać na filmiku pod adresem: http://bit.ly/2M6yZML. W przypadku jeśli praca ma się odbywać jedynie w terminalu, pobór mocy jest znacznie mniejszy i komputer będzie w stanie pracować jeszcze dłużej. Można też sięgnąć po większe powerbanki - z łatwością da się znaleźć modele o pojemności 26 Ah, a największe modele konsumenckie dochodzą do 50 Ah. W tym kontekście ograniczeniem staje się raczej czas pracy routera Wi-Fi, który na szczęście też można zasilać z powerbanku.

Taka konfiguracja sprawia, że komputer jest lekki, łatwy do przenoszenia i nie plącze się - łatwo go rozstawić nawet w miejscu o małej przestrzeni (fotografia 11). Może stanowić dodatkowy komputer, noszony oprócz laptopa. Router Wi-Fi i Raspberry Pi mogą być na stałe podłączone do huba USB. Sam Hub można podłączać do powerbanku jednym kablem, gdy tylko chce się użyć komputera. W efekcie rozstawienie całości wymaga jedynie wyjęcia z torby klawiatury, czytnika, a następnie podłączenia do powerbanku kabla USB prowadzącego do huba USB, a pozostałe komponenty same się włączą. Połączenia zostały zaprezentowane na fotografii 12.

Ten projekt nie jest też trudny od strony programowej. Naturalnie trzeba mieć odblokowanego Kindle i trzeba na nim zainstalować SSH do pracy przez Wi-Fi. Zazwyczaj sprowadza się to do wprowadzenia zmiany w pliku /mnt/us/usbnet/etc/config, w którym opcję USE_FIWI należy ustawić na true. Jeśli nie chcemy korzystać z USB over Ethernet, a w tym przypadku USB nie będzie potrzebne, ustawiamy też opcję USE_Wi-Fi_SSHD_ONLY na true. Aktualny adres IP tak zmodyfikowanego Kindle możemy szybko poznać korzystając ze skrótu „;711”, który można wpisać w pole wyszukiwania w czytniku. Listę skrótów dostępnych na Kindle Paperwhite prezentujemy w listingu 2.

Dodatkowe ustawienia

Fotografia 12. Połączenia pomiędzy elementami KindleBerry w wersji bezprzewodowej

W trakcie pracy z Kindle warto wyłączyć wygaszacz ekranu. Można to zrobić wpisując „~ds” w pasku wyszukiwania. W trakcie uruchamiania terminala można spróbować wymusić ukrycie klawiatury ekranowej (parametr „-k0”), ale nie zawsze działa to poprawnie. Zamiast tego można po prostu - po uruchomieniu Kindle, dotknąć ekranu dwoma palcami i wybrać opcję „ukryj klawiaturę”. Dotknięcie dwoma palcami pozwoli też przełączać inne rzeczy lub wyłączyć sam terminal.

Pewnym ograniczeniem jest możliwość przełączania okien. Użycie skrótu „CTRL+A” spowoduje problem, bo o ile Raspberry Pi przełączy się do innej sesji, terminal Kindle tego nie zrobi i przez to przestanie pokazywać to, co się aktualnie wpisuje. Dlatego ten tryb pracy wymusza stosowanie pojedynczej konsoli, a jeśli zachodzi potrzeba przełączania się pomiędzy programami, warto stosować komendę „CTRL+Z” i komendę „fg %X”.

Problematyczny może być rozmiar terminala, szczególnie jeśli zmieni się rozmiar czcionki. Do dostosowania rozmiaru warto użyć komendy „stty columns xx”, gdzie xx to liczba, która najlepiej odpowiada używanemu ekranowi przy aktualnym rozmiarze czcionki. Liczbę tę należy dobrać metodą prób i błędów.

W końcu można też wyłączyć sprawdzanie połączenia internetowego. W tym celu należy utworzyć pusty plik /mnt/us/Wi-Fi_NO_NET_PROBE i zrestartować usługę Wi-Fid. Można to zrobić za pomocą następujących komend:

Następnie by włączyć serwer można wpisać komendę sudo raspi-config i przejść do opcji Interfacing Options, a wtedy wybrać VNC -> Yes. Alternatywnie można skorzystać ze środowiska graficznego, w którym wchodzimy do Menu -> Preferences -> Raspberry Pi Configuration -> Interfaces i upewniamy się, że VNC jest włączone.

Gdy wszystko jest skonfigurowane, na Kindle należy uruchomić sieć przez USB lub Wi-Fi, w zależności od wybranej metody połączenia. W wersji z USB można skorzystać ze skrótów wpisywanych w oknie wyszukiwania. Wpisujemy kolejno „;debugOn”, „`usbNetwork” (lub „~usbNetwork” - zależnie od wersji czytnika) oraz „;debugOff” (bez cudzysłowów). Następnie przez ssh lub telnet łączymy się z poziomu Raspberry Pi z Kindlem. np. tak:

Killall kindlevncviewer

Można też z powrotem włączyć usługi netwatchd i powerd.

Podsumowanie

Opisany projekt to świetna okazja do wyjęcia starego czytnika z szuflady i przygotowania go pod kątem zbliżającego się lata. Wdrożenie projektu jest szybkie, a największą trudność może stanowić ewentualny problem ze zdjęciem zabezpieczeń z czytnika, szczególnie jeśli ten jest nowym modelem. Projekt ten nie wymaga też znajomości elektroniki - wystarczy podpiąć kilka kabli i dokonać konfiguracji programowej. A ci, którzy niekoniecznie chcą nosić ze sobą kilka oddzielnych elementów i zamiast tego woleliby coś w postaci laptopa, gdzie klawiatura, myszka i źródło zasilania są w jednej obudowie, mogą zamiast Raspberry Pi użyć laptopa (fotografia 13). Opisane w artykule metody konfiguracji podziałają także ze zwykłym komputerem, a nie tylko z Raspberry Pi. Jeśli jednak chcemy w ogóle zminimalizować rozmiary urządzenia, można sięgnąć po Raspberry Pi Zero, czego przykładem jest fotografia otwierająca artykuł.

Marcin Karbowniczek, E

Artykuł ukazał się w
Elektronika Praktyczna
czerwiec 2019
DO POBRANIA
Pobierz PDF Download icon

Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik kwiecień 2024

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Automatyka, Podzespoły, Aplikacje kwiecień 2024

Automatyka, Podzespoły, Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna kwiecień 2024

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich maj 2024

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów