Raspberry Pi Zero wewnątrz monitora brajlowskiego Handy Tech Active Star 40

Raspberry Pi Zero wewnątrz monitora brajlowskiego Handy Tech Active Star 40

Autor umieścił Raspberry Pi Zero, gwizdek Bluetooth i kabel w swoim nowym monitorze brajlowskim Handy Tech Active Star 40. Zasilanie zapewnia wbudowany port USB. W rezultacie powstał samowystarczalny komputer bez monitora na architekturze ARM z systemem operacyjnym Linux, wyposażony w klawiaturę i monitor brajlowski. Można go ładować/zasilać przez USB, w tym. z powerbanku lub ładowarki słonecznej. Dlatego może obejść się bez prądu przez kilka godzin, ale przez kilka dni.

Raspberry Pi Zero wewnątrz monitora brajlowskiego Handy Tech Active Star 40

Zróżnicowanie wymiarowe wyświetlaczy brajlowskich

Przede wszystkim różnią się długością żyłki. Urządzenia o pojemności 60 i więcej nadają się do pracy z komputerem stacjonarnym, natomiast urządzenia o pojemności 40 wygodnie można nosić z laptopem. Obecnie do smartfonów i tabletów można podłączyć monitory brajlowskie, wyświetlające linię o długości 14 lub 18 znaków.

W przeszłości wyświetlacze brajlowskie były dość masywne. Na przykład laptop mieszczący 40 miejsc miał rozmiar i wagę laptopa 13-calowego. Teraz, przy tej samej liczbie znajomych, są one na tyle miniaturowe, że można postawić wyświetlacz przed laptopem, a nie laptop na wyświetlaczu.

Jest to oczywiście lepsze, ale nadal trzymanie na kolanach dwóch oddzielnych urządzeń nie jest zbyt wygodne. Pracując przy biurku nie ma żadnych skarg, warto jednak pamiętać, że laptop nazywany jest laptopem pod inną nazwą i spróbować uzasadnić jego nazwę, bo okazuje się, że miniaturowy 40-znakowy wyświetlacz jest jeszcze mniej wygodny.

Autor czekał więc na premierę długo obiecywanego nowego modelu z serii Handy Tech Star. Już w 2002 roku wypuszczono na rynek poprzedni model Handy Tech Braille Star 40, w którym powierzchnia korpusu jest wystarczająca, aby umieścić na nim laptopa. A jeśli nie pasuje, jest wysuwany stojak. Teraz model ten został zastąpiony przez Active Star 40, który jest prawie taki sam, ale z ulepszoną elektroniką.

Raspberry Pi Zero wewnątrz monitora brajlowskiego Handy Tech Active Star 40

A wysuwany stojak pozostaje:

Raspberry Pi Zero wewnątrz monitora brajlowskiego Handy Tech Active Star 40

Ale najwygodniejszą rzeczą w nowym produkcie jest wgłębienie wielkości mniej więcej smartfona (patrz KDPV). Otwiera się po przesunięciu platformy do tyłu. Trzymanie tam smartfona okazało się niewygodne, ale trzeba jakoś wykorzystać pustą komorę, w której znajduje się nawet gniazdko elektryczne.

Pierwszą rzeczą, na którą wpadł autor, było umieszczenie tam Raspberry Pi, jednak po zakupie wyświetlacza okazało się, że podstawka zakrywająca przegródkę nie wsunęła się z „malinką”. Gdyby płyta była tylko 3 mm cieńsza...

Kolega opowiedział mi jednak o wydaniu Raspberry Pi Zero, które okazało się tak miniaturowe, że w przegródce zmieściły się dwie... a może nawet trzy. Od razu zamówiono go wraz z kartą pamięci 64 GB, Bluetoothem, „gwizdkiem” i kablem Micro USB. Wszystko to dotarło kilka dni później, a widzący przyjaciele pomogli autorowi przygotować mapę. Wszystko od razu zadziałało tak jak powinno.

Co w tym celu zrobiono

Z tyłu Handy Tech Active Star 40 znajdują się dwa porty USB dla urządzeń takich jak klawiatury. W zestawie znajduje się niewielka klawiatura z mocowaniem magnetycznym. Gdy klawiatura jest podłączona, a sam wyświetlacz działa poprzez Bluetooth, komputer dodatkowo rozpoznaje go jako klawiaturę Bluetooth.

Tym samym, jeśli podłączymy „gwizdek” Bluetooth do umieszczonego w kieszeni smartfona Raspberry Pi Zero, będzie on mógł komunikować się z monitorem brajlowskim poprzez Bluetooth za pomocą BRLTTY, a jeśli podłączysz także klawiaturę do wyświetlacza, „malinka” też z nią będzie współpracować.

Ale to nie wszystko. Z kolei sama „Malina” może uzyskać dostęp do Internetu poprzez Bluetooth PAN z dowolnego urządzenia, które je obsługuje. Autor odpowiednio skonfigurował swój smartfon i komputery w domu i w pracy, ale w przyszłości planuje przystosować do tego inną „malinę” - klasyczną, a nie Zero, podłączoną do Ethernetu i kolejny „gwizdek Bluetooth”.

BlueZ 5 i PAN

Metoda konfiguracji PAN przy użyciu BlueZ okazało się nieoczywiste. Autor znalazł skrypt Pythona bt-pan (patrz poniżej), który pozwala skonfigurować PAN bez GUI.

Można go używać do konfiguracji zarówno serwera, jak i klienta. Po otrzymaniu odpowiedniego polecenia poprzez D-Bus podczas pracy w trybie klienta tworzy nowe urządzenie sieciowe bnep0 natychmiast po nawiązaniu połączenia z serwerem. Zwykle do przypisywania adresu IP do tego interfejsu używany jest protokół DHCP. W trybie serwera BlueZ wymaga nazwy urządzenia mostkowego, do którego może dodać urządzenie podrzędne w celu połączenia każdego klienta. Zwykle wystarczy skonfigurowanie adresu urządzenia mostkowego i uruchomienie serwera DHCP oraz maskarady IP na moście.

Punkt dostępowy Bluetooth PAN z Systemd

Aby skonfigurować most, autor użył systemd-networkd:

Plik /etc/systemd/network/pan.netdev

[NetDev]
Name=pan
Kind=bridge
ForwardDelaySec=0

Plik /etc/systemd/network/pan.network

[Match]
Name=pan

[Network]
Address=0.0.0.0/24
DHCPServer=yes
IPMasquerade=yes

Teraz musimy zmusić BlueZ do skonfigurowania profilu NAP. Okazało się, że nie można tego zrobić za pomocą standardowych narzędzi BlueZ 5.36. Jeśli autor się myli, popraw go: mlang (potrafi poruszać uszami) ślepy (czasami dostępowy i kwantowy) guru

Ale znalazł post na blogu и Skrypt Pythona aby wykonać niezbędne połączenia do D-Bus.

Dla wygody autor wykorzystał usługę Systemd do uruchomienia skryptu i sprawdzenia, czy zależności zostały rozwiązane.

Plik /etc/systemd/system/pan.service

[Unit]
Description=Bluetooth Personal Area Network
After=bluetooth.service systemd-networkd.service
Requires=systemd-networkd.service
PartOf=bluetooth.service

[Service]
Type=notify
ExecStart=/usr/local/sbin/pan

[Install]
WantedBy=bluetooth.target

Plik /usr/local/sbin/pan

#!/bin/sh
# Ugly hack to work around #787480
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

exec /usr/local/sbin/bt-pan --systemd --debug server pan

Drugi plik nie byłby potrzebny, gdyby Debian posiadał obsługę IPMasquerade= (patrz poniżej). #787480).

Po wykonaniu poleceń systemctl daemon-reload и systemctl uruchom ponownie systemd-networkd możesz uruchomić Bluetooth PAN za pomocą polecenia systemctl start pan

Klient Bluetooth PAN korzystający z Systemd

Stronę klienta można również łatwo skonfigurować za pomocą Systemd.

Plik /etc/systemd/network/pan-client.network

[Match]
Name=bnep*

[Network]
DHCP=yes

Plik /etc/systemd/system/[email chroniony]

[Unit]
Description=Bluetooth Personal Area Network client

[Service]
Type=notify
ExecStart=/usr/local/sbin/bt-pan --debug --systemd client %I --wait

Teraz, po ponownym załadowaniu konfiguracji, możesz połączyć się z określonym punktem dostępu Bluetooth w następujący sposób:

systemctl start pan@00:11:22:33:44:55

Parowanie za pomocą wiersza poleceń

Oczywiście konfiguracji serwera i klientów należy dokonać po ich sparowaniu poprzez Bluetooth. Na serwerze musisz uruchomić bluetoothctl i wydać mu polecenia:

power on
agent on
default-agent
scan on
scan off
pair XX:XX:XX:XX:XX:XX
trust XX:XX:XX:XX:XX:XX

Po rozpoczęciu skanowania odczekaj kilka sekund, aż na liście pojawi się potrzebne urządzenie. Zapisz jego adres i użyj go, wydając polecenie pair i, jeśli to konieczne, polecenie trust.

Po stronie klienta musisz zrobić to samo, ale polecenie zaufania zdecydowanie nie jest potrzebne. Serwer potrzebuje go, aby zaakceptować połączenie przy użyciu profilu NAP bez ręcznego potwierdzania przez użytkownika.

Autor nie jest pewien, czy jest to optymalna kolejność poleceń. Być może wystarczy sparować klienta z serwerem i uruchomić na serwerze polecenie trust, ale jeszcze tego nie próbował.

Włączanie profilu Bluetooth HID

Wymagane jest, aby Raspberry rozpoznał klawiaturę podłączoną przewodowo do monitora brajlowskiego i transmitowaną przez sam wyświetlacz poprzez Bluetooth. Odbywa się to w ten sam sposób, tylko zamiast tego agent na trzeba wydać polecenie Tylko klawiatura agenta a bluetoothctl znajdzie urządzenie z profilem HID.

Jednak konfiguracja Bluetooth za pomocą wiersza poleceń jest nieco skomplikowana

Chociaż autorowi udało się wszystko skonfigurować, rozumie, że konfigurowanie BlueZ za pomocą wiersza poleceń jest niewygodne. Początkowo myślał, że agenci potrzebują tylko wprowadzania kodów PIN, ale okazało się, że np. aby włączyć profil HID, należy wpisać „agent KeyboardOnly”. Zaskakujące jest to, że aby uruchomić Bluetooth PAN, trzeba wspinać się po repozytoriach w poszukiwaniu wymaganego skryptu. Pamięta, że ​​w poprzedniej wersji BlueZ było do tego gotowe narzędzie panda - gdzie on robi w BlueZ 5? Nagle pojawiło się nowe rozwiązanie, nieznane autorowi, ale leżące na powierzchni?

produktywność

Szybkość przesyłania danych wynosiła około 120 kbit/s, co jest w zupełności wystarczające. Procesor ARM 1 GHz jest bardzo szybki jak na interfejs wiersza poleceń. Autor nadal planuje używać na urządzeniu głównie ssh i emacs.

Czcionki konsoli i rozdzielczość ekranu

Domyślna rozdzielczość ekranu używana przez bufor ramki w Raspberry Pi Zero jest dość dziwna: fbset zgłasza ją jako 656x416 pikseli (oczywiście bez podłączonego monitora). Przy czcionce konsolowej 8 × 16 w linii znajdowało się 82 znaki i 26 linii.

W tym trybie praca z 40-znakowym monitorem brajlowskim jest niewygodna. Autor chciałby także, aby znaki Unicode były wyświetlane w alfabecie Braille’a. Na szczęście Linux obsługuje 512 znaków, a większość czcionek konsolowych ma ich 256. Korzystając z konfiguracji konsoli, możesz używać razem dwóch czcionek o długości 256 znaków. Autor dodał następujące linie do pliku /etc/default/console-setup:

SCREEN_WIDTH=80
SCREEN_HEIGHT=25
FONT="Lat15-Terminus16.psf.gz brl-16x8.psf"

Uwaga: aby udostępnić czcionkę brl-16×8.psf, należy zainstalować konsolę-braille.

Co dalej?

Monitor brajlowski ma gniazdo jack 3,5 mm, ale autorowi nie są znane adaptery do odbioru sygnału audio z Mini-HDMI. Autorowi nie udało się wykorzystać karty dźwiękowej wbudowanej w Raspberry (co dziwne, tłumacz był pewien, że Zero jej nie posiada, ale są sposoby na wyprowadzenie dźwięku za pomocą PWM do GPIO). Planuje wykorzystać koncentrator USB-OTG i podłączyć zewnętrzną kartę oraz wyprowadzić dźwięk do głośnika wbudowanego w monitor brajlowski. Z jakiegoś powodu dwie karty zewnętrzne nie działały, teraz szuka podobnego urządzenia na innym chipsecie.

Niewygodne jest także ręczne wyłączenie „malinki”, odczekanie kilku sekund i wyłączenie monitora brajlowskiego. A wszystko dlatego, że gdy jest wyłączony, odłącza zasilanie od złącza w komorze. Autor planuje umieścić w przegródce małą baterię buforową i za pośrednictwem GPIO poinformować Raspberry o wyłączeniu wyświetlacza, aby mogła rozpocząć swoją pracę. To jest UPS w miniaturze.

Obraz systemu

Jeżeli posiadasz taki sam monitor brajlowski i chciałbyś zrobić z nim to samo, autor jest gotowy udostępnić gotowy obraz systemu (oparty na Raspbian Stretch). Napisz do niego w tej sprawie na adres wskazany powyżej. Jeśli zgłosi się wystarczająca liczba zainteresowanych, możliwe jest nawet wypuszczenie zestawów zawierających wszystko, co niezbędne do takiej modyfikacji.

Podziękowanie

Dziękuję Dave’owi Mielke za korektę.

Dziękujemy Simonowi Kainzowi za ilustracje do zdjęć.

Dziękuję moim kolegom z Politechniki w Grazu za szybkie wprowadzenie autora w świat Raspberry Pi.

PS Pierwszy tweet autora na ten temat (nie otwiera się – tłumacz) powstał zaledwie pięć dni przed publikacją oryginału tego artykułu i można uznać, że poza problemami z dźwiękiem zadanie zostało praktycznie rozwiązane. Nawiasem mówiąc, autor zredagował ostateczną wersję tekstu na wykonanym przez siebie „samodzielnym monitorze brajlowskim”, podłączając go przez SSH do swojego domowego komputera.

Źródło: www.habr.com

Dodaj komentarz