Raspberry Pi Zero vo vnútri Braillovho displeja Handy Tech Active Star 40

Raspberry Pi Zero vo vnútri Braillovho displeja Handy Tech Active Star 40

Autor umiestnil Raspberry Pi Zero, Bluetooth „dongle“ a kábel dovnútra svojho nového brailovského displeja Handy Tech Active Star 40. Zabudovaný USB port zabezpečuje napájanie. Vznikol tak samostatný bezmonitorový počítač na ARM s operačným systémom Linux, vybavený klávesnicou a brailovským displejom. Môže sa nabíjať/napájať cez USB, vrátane power banku alebo solárneho nabíjača. Preto môže fungovať bez elektrickej siete niekoľko hodín, ale až niekoľko dní.

Raspberry Pi Zero vo vnútri Braillovho displeja Handy Tech Active Star 40

Veľkostná diferenciácia brailovských displejov

Predovšetkým sa líšia dĺžkou riadku. Zariadenia so 60 a viac znakovými miestami sú dobré pri práci s desktopom, a 40 miest je pohodlných na prenášanie spolu s notebookom. Dnes existujú aj brailovské displeje pripojiteľné k smartfónom a tabletom, s dĺžkou riadku 14 alebo 18 znakov.

V minulosti boli brailovské displeje pomerne masívne. 40-znakový displej mal napríklad veľkosť a hmotnosť 13-palcového notebooku. Teraz sú pri rovnakom počte znakov dostatočne miniaturizované, aby sa displej mohol umiestniť pred notebook, nie notebook na displej.

Je to samozrejme lepšie, ale stále nie je veľmi pohodlné mať na kolenách dve oddelené zariadenia. Keď pracujete za stolom, nemáte žiadne výhrady, ale treba si uvedomiť, že notebook sa nazýva aj laptom, a pokúsiť sa ospravedlniť tento názov, ako sa ukazuje, že miniaturizovaný 40-znakový displej je ešte menej pohodlný.

Takže autor čakal na vydanie dlho sľubovanej novej modelovej rady Handy Tech Star. Ešte v roku 2002 bola vydaná predchádzajúca verzia Handy Tech Braille Star 40, ktorej veľkosť tela bola dostatočná na to, aby sa na ňu dalo položiť notebook. A ak sa nezmestil – bola pripravená vyťahovacia podložka. Teraz je tento model nahradený Active Star 40, je to takmer to isté, ale s modernizovanou elektronikou.

Raspberry Pi Zero vo vnútri Braillovho displeja Handy Tech Active Star 40

A vyťahovacia podložka zostala:

Raspberry Pi Zero vo vnútri Braillovho displeja Handy Tech Active Star 40

Ale najpohodlnejšie na novinke je vyhlbovanie približne so smartphone (pozri KDPV). Otvorí sa posunutím dosky dozadu. Držať tam smartphone sa ukázalo ako nepríjemné, ale musí sa nejakým spôsobom využiť prázdny priestor, v ktorom je dokonca predpokladané napájanie.

Prvá myšlienka autora bola umiestniť tam Raspberry Pi, ale keď bol zakúpený displej, ukázalo sa, že s "malinou" sa nepohne podstavec zakrývajúci priestor. Keby bola doska iba o 3 mm tenšia...

Ale kolega hovoril o príchode Raspberry Pi Zero, ktorý bol tak miniatučný, že by sa do priestoru vošli dve… alebo, možno, aj tri. Bola okamžite objednaná spolu so 64 GB pamäťovou kartou, Bluetooth, "dongle" a Micro USB káblom. O pár dní dorazili všetky tieto položky a priatelia s dobrým zrakom pomohli autorovi pripraviť kartu. Všetko okamžite fungovalo, ako malo.

Čo bolo pre to urobené

Na zadnej strane Handy Tech Active Star 40 sú umiestnené dva USB porty pre také zariadenia ako klávesnice. Malá klávesnica s magnetickým uchytením je súčasťou balenia. Keď je klávesnica pripojená a samotný displej funguje cez Bluetooth, počítač ju tiež rozpoznáva ako Bluetooth klávesnicu.

Takže ak k Raspberry Pi Zero, umiestnenému v priestore pre smartphone, pripojíte Bluetooth "dongle", bude schopné výmeny údajov s brailským displejom cez Bluetooth pomocou BRLTTY, a ak ešte pripojíte klávesnicu k displeju, "malinka" bude fungovať aj s ňou.

Ale to nie je všetko. Samotná "malinka" môže získať prístup na internet cez Bluetooth PAN z akéhokoľvek zariadenia, ktoré ho podporuje. Autor nastavil svoj smartfón a počítače doma a v práci, ale plánuje prispôsobiť na to ešte jednu "malinku" – klasickú, nie Zero, pripojenú k Ethernetu a inému Bluetooth "dongle".

BlueZ 5 a PAN

Spôsob konfigurácie PAN pomocou BlueZ sa ukázal ako nie veľmi zrejmý. Autor našiel Python skript bt-pan (pozri nižšie), ktorý umožňuje konfigurovať PAN bez GUI.

S jeho pomocou je možné nastaviť ako server, tak aj klient. Po prijatí príslušného príkazu cez D-Bus pri práci v klientskom režime vytvorí nové sieťové zariadenie bnep0 hneď po nadviazaní spojenia so serverom. Zvyčajne sa na priradenie IP adresy tomuto rozhraniu používa DHCP. V serverovom režime BlueZ vyžaduje zadanie názvu mostového zariadenia, ku ktorému môže pridať podľa známeho zariadenia pre pripojenie každého klienta. Konfigurovať adresu pre mostové zariadenie a spustiť DHCP server plus IP masquerading na moste – zvyčajne je to všetko, čo je potrebné.

Bluetooth PAN prístupový bod so Systemd

Na konfiguráciu mosta autor použil systemd-networkd:

Súbor /etc/systemd/network/pan.netdev

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

Súbor /etc/systemd/network/pan.network

[Match]
Name=pan

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

Teraz je potrebné donútiť BlueZ nakonfigurovať profil NAP. Ukázalo sa, že to nie je možné s predvolenými nástrojmi BlueZ 5.36. Ak sa autor mýli, opravte ho: mlang (vie hýbať ušami) blind (môže mať prístup a kvantový) guru

Ale našiel príspevok na blogu a skript v Pythone na vykonanie potrebných volaní na D-Bus.

Pre pohodlie autor použil službu Systemd na spustenie skriptu a kontrolu oprávnení závislostí.

Súbor /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

Súbor /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

Druhý súbor by nebol potrebný, keby v Debiane bola podpora IPMasquerade= (pozri. #787480).

Po vykonaní príkazov systemctl daemon-reload a systemctl restart systemd-networkd je možné spustiť Bluetooth PAN príkazom systemctl start pan

Bluetooth PAN klient so Systemd

Klientskú časť nie je ťažké nakonfigurovať pomocou Systemd.

Súbor /etc/systemd/network/pan-client.network

[Match]
Name=bnep*

[Network]
DHCP=yes

Súbor /etc/systemd/system/pan@.service

[Unit]
Description=Bluetooth Personal Area Network klient

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

Teraz po reštartovaní konfigurácie je možné pripojiť sa k určenému Bluetooth prístupovému bodu takto:

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

Sparing pomocou príkazového riadku

Samozrejme, konfiguráciu servera a klientov je potrebné vykonávať po spárovaní ich cez Bluetooth. Na serveri je potrebné spustiť bluetoothctl a dať mu príkazy:

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

Spustením skenovania počkajte niekoľko sekúnd, kým sa v zozname neobjaví požadované zariadenie. Zaznamenajte si jeho adresu a použite ju pri zadávaní príkazu pair a v prípade potreby aj príkazu trust.

Na strane klienta treba urobiť to isté, ale príkaz trust nie je presne potrebný. Serveru je potrebný na prijatie pripojenia cez profil NAP bez ručného potvrdenia používateľom.

Autor si nie je istý, či je to optimálna sekvencia príkazov. Možno, že všetko, čo je potrebné, je spárovanie klienta so serverom a vykonanie príkazu trust na serveri, ale takto to ešte neskúsil.

Povolenie používania Bluetooth profilu HID

Je potrebné, aby „malina“ rozpoznala klávesnicu pripojenú k braillovskému displeju káblom a prenášanú samotným displejom cez Bluetooth. Robí sa to rovnako, len miesto agenta na je potrebné zadať príkaz agent KeyboardOnly a bluetoothctl nájde zariadenie s profílom HID.

Ale nastavovať Bluetooth cez príkazový riadok je pomerne zložité

Aj keď autor dokázal všetko nakonfigurovať, chápe, že nastavovať BlueZ cez príkazový riadok je nepraktické. Spočiatku si myslel, že agenti sú potrební iba na zadávanie PIN kódov, ale ukázalo sa napríklad, že na zapnutie profilu HID treba zadať „agent KeyboardOnly“. Je prekvapujúce, že na spustenie Bluetooth PAN je potrebné hľadať potrebný skript v repozitároch. Pamätá si, že v predchádzajúcej verzii BlueZ bol pre to pripravený nástroj pand — kam sa podel v BlueZ 5? Možno sa objavilo nové riešenie, neznáme autorovi, ale ležiace na povrchu?

Výkon

Rýchlosť prenosu dát bola približne 120 kbit/s, čo je celkom dostatočné. 1-gigahertzový ARM procesor je veľmi rýchly pre príkazový riadok. Autor aj tak plánuje na zariadení najmä používať ssh a emacs.

Konzolové písma a rozlíšenie obrazovky

Rozlíšenie obrazovky používané framebufferom na Raspberry Pi Zero predvolene je dosť zvláštne: fbset hlási, že je 656×416 pixelov (monitor, samozrejme, nie je pripojený). Pri konzulovom písmene 8×16 vyšlo 82 znakov v riadku a 26 riadkov.

Pracovať s braillovským displejom na 40 znakom v takom režime je nepraktické. Autor by tiež chcel, aby na displeji boli zobrazované znaky Unicode v braillovskej podobe. Našťastie, Linux podporuje 512 znakov, a v väčšine konzulových píseň to je 256. Pomocou console-setup je možné používať dva 256-znakové písma spolu. Autor pridal do súboru /etc/default/console-setup tieto riadky:

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

Poznámka: Aby bolo dostupné písmo brl-16×8.psf, je potrebné nainštalovať console-braille.

Čo ďalej?

Na brailovskom displeji je 3,5-milimetrový "jack", ale autorovi nie sú známe adaptéry na odber audio signálu z Mini-HDMI. Autorovi sa nepodarilo aktivovať vstavanú zvukovú kartu v "malinke" (je to zvláštne, prekladateľ bol presvedčený, že v Zero taká nie je, ale existujú spôsoby, ako vyviesť zvuk PWM na GPIO). Plánuje použiť USB-OTG hub a pripojiť externú kartu a výstup zvuku na vstavaný reproduktor brailovského displeja. Dve externé karty prekvapivo nefungovali, teraz hľadá podobné zariadenie na inom čipsete.

Ešte je nepríjemné ručne odpojiť "malinku", čakať niekoľko sekúnd a odpojiť brailovský displej. A to preto, že pri odpojení vyberá napájanie z konektora v škatuli. Autor plánuje vložiť do škatule malý batériový buffer a cez GPIO informovať "malinku" o odpojení displeja, aby mohla prejsť na ukončenie činnosti. Takýto UPS v mini verzí.

Obraz systému

Ak máte rovnaký brailovský displej a chcete s ním robiť to isté, autor je ochotný poskytnúť hotový obraz systému (na základe Raspbian Stretch). Napíšte mu o tom na adresu uvedenú vyššie. Ak sa nazbiera dosť veľa záujemcov, môže dokonca vydať sady obsahujúce všetko potrebné na tento prechod.

Poďakovanie

Ďakujem Dave Mielke za korektúru textu.

Ďakujem Simon Kainz za fotografické ilustrácie.

Ďakujem kolegom z Grazu za rýchle zasadenie autora do sveta Raspberry Pi.

P.S. Prvý tweet autora na túto tému (neotvára sa — prekladateľ) bol uverejnený len päť dní pred zverejnením originálu tohto článku a dá sa považovať, že okrem problémov so zvukom bola úloha prakticky splnená. Mimochodom, finálnu verziu textu autor upravil pripojením k svojmu "samo-stačnému brailovskému displeju" cez SSH k domácemu počítaču.

Zdroj: habr.com

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster