Raspberry Pi Zero ўнутры брайлеўскага дысплея Handy Tech Active Star 40

Raspberry Pi Zero ўнутры брайлеўскага дысплея Handy Tech Active Star 40

Аўтар змясціў Raspberry Pi Zero, Bluetooth-«свісток» і кабель унутр свайго новага брайлеўскага дысплея Handy Tech Active Star 40. Убудаваны USB-порт забяспечвае сілкаванне. Атрымаўся самадастатковы безманіторны кампутар на ARM з аперацыйнай сістэмай Linux, абсталяваны клавіятурай і брайлеўскім дысплеем. Можна зараджаць/сілкаваць яго праз USB, у т.л. ад паўэрбанка або сонечнай зараднай прылады. Таму ён можа абыходзіцца без электрасеткі не некалькі гадзін, а некалькі дзён.

Raspberry Pi Zero ўнутры брайлеўскага дысплея Handy Tech Active Star 40

Габарытная дыферэнцыяцыя брайлеўскіх дысплеяў

Першым чынам, яны адрозніваюцца даўжынёй радкі. Прылады на 60 і больш знаёмыя добрыя пры працы з настольным кампутарам, на 40 – зручныя для пераноскі разам з наўтбукам. Цяпер існуюць і брайлеўскія дысплеі, якія падключаюцца да смартфонаў і планшэтаў, з даўжынёй радка ў 14 або 18 знаёмцаў.

У мінулым брайлеўскія дысплеі былі даволі масіўнымі. 40-знаёмы, напрыклад, меў памеры і вага як у 13-цалевага наўтбука. Цяпер яны пры той жа колькасці знаёмцаў дастаткова мініяцюрныя, каб можна было паставіць дысплей перад ноўтбукам, а не ноўтбук на дысплей.

Гэта, вядома, лепш, але ўсё роўна не вельмі зручна трымаць на каленях дзве асобныя прылады. Калі працуеш за сталом, прэтэнзій няма, але варта ўспомніць, што наўтбук па-іншаму завецца лэптопам, і паспрабаваць апраўдаць гэтую яго назву, як апыняецца, што мініятурны 40-знаёмы дысплей нават меней зручны.

Так што аўтар дачакаўся вынахаду даўно абяцанай новай мадэлі ў серыі Handy Tech Star. Яшчэ ў 2002 годзе была выпушчана папярэдняя мадэль Handy Tech Braille Star 40, дзе плошчы корпуса дастаткова, каб паставіць зверху ноўтбук. А калі ён не змяшчаецца - прадугледжана высоўная падстаўка. Цяпер гэтая мадэль заменена на Active Star 40, гэта практычна тое ж самае, але з мадэрнізаванай электронікай.

Raspberry Pi Zero ўнутры брайлеўскага дысплея Handy Tech Active Star 40

І высоўная падстаўка засталася:

Raspberry Pi Zero ўнутры брайлеўскага дысплея Handy Tech Active Star 40

Але самае зручнае ў навінцы – гэта паглыбленне памерамі прыблізна са смартфонам (гл. КДПВ). Адкрываецца яно пры зруху пляцоўкі назад. Трымаць там смартфон аказалася няёмка, але трэба ж неяк задзейнічаць пусты адсек, унутры якога нават выхад харчавання прадугледжаны.

Першае, што прыдумаў аўтар - змясціць туды Raspberry Pi, але калі дысплей быў набыты, аказалася, што з «малінкай» не заварушыцца падстаўка, якая зачыняе адсек. Вось калі б плата была ўсяго на 3 мм танчэйшая…

Але калега распавёў аб выхадзе Raspberry Pi Zero, які аказаўся настолькі мініятурным, што ў адсек іх змясцілася б два… ці, мабыць, нават тры. Ён быў тут жа заказаны разам з картай памяці на 64 ГБ, Bluetooth, "свістком" і кабелем Micro USB. Праз некалькі дзён усё гэта прыехала, а відушчыя сябры дапамаглі аўтару падрыхтаваць карту. Усё адразу зарабіла як трэба.

Што для гэтага было зроблена

На задняй сценцы Handy Tech Active Star 40 размешчаны два USB-порта для такіх прылад, як клавіятуры. Малагабарытная клавіятура з магнітным мацаваннем прыкладаецца. Калі клавіятура падлучаная, а сам дысплей працуе праз Bluetooth, кампутар дадаткова апазнае яго яшчэ і як Bluetooth-клавіятуру.

Такім чынам, калі да Raspberry Pi Zero, змешчанага ў адсек для смартфона, падлучыць Bluetooth-«свісток», ён зможа абменьвацца дадзенымі з брайлеўскім дысплеем па Bluetooth пры дапамозе BRLTTY, а калі яшчэ і падлучыць да дысплея клавіятуру - «малінка» будзе працаваць і з ёй.

Але і гэта яшчэ не ўсё. Сама "малінка", у сваю чаргу, можа атрымліваць доступ у інтэрнэт па Bluetooth PAN з любога які падтрымлівае яго прылады. Аўтар наладзіў якая адпавядае выявай свой смартфон і кампутары хаты і на працы, але ў далейшым плануе прыстасаваць для гэтага яшчэ адну «малінку» — класічную, не Zero, падлучаную да Ethernet і іншаму Bluetooth-«свістку».

BlueZ 5 і PAN

Спосаб канфігурацыі PAN пры дапамозе блюз аказаўся невідавочным. Аўтар знайшоў Pyhton-скрыпт bt-pan (гл. ніжэй), які дазваляе сканфігураваць PAN без GUI.

З яго дапамогай можна наладзіць як сервер, так і кліент. Атрымаўшы адпаведную каманду па D-Bus пры працы ў кліенцкім рэжыме, ён стварае новую сеткавую прыладу bnep0 адразу пасля ўсталёўкі злучэння з серверам. Звычайна для прызначэння IP-адрасы гэтаму інтэрфейсу выкарыстоўваецца DHCP. У серверным рэжыме BlueZ патрабуе ўказанні назвы прылады-моста, да якога ён можа дадаць па вядзёнай прыладзе для падлучэння кожнага з кліентаў. Сканфігураваць адрас для прылады-моста і запусціць DHCP-сервер плюс IP-маскарадынг на мосце - звычайна ўсё, што патрабуецца.

Кропка доступу Bluetooth PAN з Systemd

Для канфігурацыі маста аўтар ужыў systemd-networkd:

Файл /etc/systemd/network/pan.netdev

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

Файл /etc/systemd/network/pan.network

[Match]
Name=pan

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

Цяпер трэба прымусіць BlueZ сканфігураваць профіль NAP. Аказалася, штатнымі ўтылітамі BlueZ 5.36 гэта зрабіць нельга. Калі аўтар памыляецца, папраўце яго: mlang (умее рухаць вушамі) blind (бывае доступу і квантавай) guru

Але ён знайшоў паведамленне ў блогу и скрыпт на Python для ажыццяўлення неабходных выклікаў на D-Bus.

Для выгоды аўтар ужыў службу Systemd для запуску скрыпту і праверкі дазволенасці залежнасцяў.

Файл /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

Файл /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

Другі файл не спатрэбіўся б, калі б у Debian была падтрымка IPMasquerade= (гл. #787480).

Пасля выканання каманд systemctl дэман-перазарадка и перазапусціць systemctl systemd-networkd можна запусціць Bluetooth PAN камандай systemctl start pan

Кліент Bluetooth PAN з ужываннем Systemd

Кліенцкую частку таксама нескладана сканфігураваць пры дапамозе Systemd.

Файл /etc/systemd/network/pan-client.network

[Match]
Name=bnep*

[Network]
DHCP=yes

Файл /etc/systemd/system/[электронная пошта абаронена]

[Unit]
Description=Bluetooth Personal Area Network client

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

Цяпер пасля перазагрузкі канфігурацыі можна падлучыцца да зададзенай Bluetooth-кропцы доступу так:

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

Спалучэнне пры дапамозе каманднага радка

Зразумела, канфігурацыю сервера і кліентаў неабходна выконваць пасля спалучэння іх па Bluetooth. На серверы трэба запусціць bluetoothctl і даць яму каманды:

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

Запусціўшы сканаванне, пачакайце некалькі секунд, пакуль у спісе не з'явіцца патрэбная вам прылада. Запішыце яго адрас і выкарыстоўвайце яго, падаючы каманду pair, а пры неабходнасці - і каманду trust.

З боку кліента трэба зрабіць тое ж самае, але каманда trust не спатрэбіцца дакладна. Серверу яна патрэбна, каб прыняць злучэнне па профілі NAP без ручнога пацверджання карыстачом.

Аўтар не ўпэўнены, што гэта аптымальная паслядоўнасць каманд. Магчыма, усё, што трэба - гэта спалучэнне кліента з серверам і выкананне каманды trust на серверы, але так ён рабіць яшчэ не спрабаваў.

Дазвол выкарыстання Bluetooth-профіля HID

Патрабуецца, каб "малінка" распазнала клавіятуру, падлучаную да брайлеўскага дысплея провадам, і пракінутую ўжо самім дысплеем па Bluetooth. Робіцца гэтак жа, толькі замест агент на трэба даць каманду agent KeyboardOnly і bluetoothctl знойдзе прыладу з профілем HID.

Але наладжваць Bluetooth праз камандны радок цяжкавата

Хоць аўтару атрымалася ўсё сканфігураваць, ён разумее, што наладжваць BlueZ праз камандны радок няёмка. Спачатку ён думаў, што агенты патрэбныя толькі для ўводу PIN-кодаў, але аказалася, напрыклад, што для ўключэння профілю HID трэба набіраць "agent KeyboardOnly". Дзіўна, што для запуску Bluetooth PAN неабходна лазіць па рэпазітарах у пошуках патрэбнага скрыпту. Ён памятае, што ў папярэдняй версіі BlueZ для гэтага быў гатовы інструмент Панда куды ж ён робячы ў BlueZ 5? Раптам з'явілася новае рашэнне, невядомае аўтару, але якое ляжыць на паверхні?

Proizvoditelnost

Хуткасць перадачы даных склала прыкладна 120 кбіт/с, чаго цалкам дастаткова. 1-гігагерцовы ARM-працэсар вельмі хуткі для інтэрфейсу каманднага радка. Аўтар усё роўна плануе выкарыстоўваць на прыладзе ў асноўным ssh і emacs.

Кансольныя шрыфты і дазвол экрана

Дазвол экрана, выкарыстоўванае фрэймбуферам на Raspberry Pi Zero па змаўчанні, даволі дзіўнае: fbset паведамляе, што яно складае 656×416 пікселяў (манітор, вядома, не падлучаны). Пры кансольным шрыфце 8×16 атрымалася 82 знака ў радку і 26 радкоў.

Працаваць з брайлеўскім дысплеем на 40 знаёмцаў у такім рэжыме няёмка. Таксама аўтару хацелася б, каб на дысплей выводзіліся ў брайлеўскім выглядзе знакі Unicode. На шчасце, Linux падтрымлівае 512 сімвалаў, а ў большасці кансольных шрыфтоў іх 256. З дапамогай console-setup можна выкарыстоўваць два 256-знакавыя шрыфты сумесна. Аўтар дадаў да файла /etc/default/console-setup такія радкі:

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

Нататка: каб стаў даступны шрыфт brl-16×8.psf, трэба ўсталяваць console-braille.

Што далей?

На брайлеўскім дысплеі ёсць 3,5-міліметровы "джэк", але аўтару невядомыя перахаднікі для зняцця аўдыёсігналу з Mini-HDMI. Аўтару не ўдалося задзейнічаць убудаваную ў «малінку» гукавую карту (дзіўна, перакладчык быў упэўнены, што ў Zero такой няма, але ёсць спосабы вываду гуку Шымам на GPIO). Ён плануе прымяніць USB-OTG-хаб і падключыць знешнюю карту і вывесці гук на убудаваную ў брайлеўскі дысплей калонку. Дзве знешнія карты чамусьці не зарабілі, зараз ён шукае аналагічную прыладу на іншым чыпсэце.

Яшчэ няёмка ўручную адключаць "малінку", чакаць некалькі секунд і адключаць брайлеўскі дысплей. А ўсё таму што ён пры адключэнні здымае сілкаванне з раздыма ў адсеку. Аўтар плануе змясціць у адсек невялікі буферны акумулятар і праз GPIO паведамляць "малінцы" аб адключэнні дысплея, каб тая прыступіла да завяршэння працы. Такі вось КБС у мініяцюры.

Выява сістэмы

Калі ў вас ёсць такі ж брайлеўскі дысплей, і вы жадаеце прарабіць з ім тое ж самае, аўтар гатовы прадаставіць гатовую выяву сістэмы (на аснове Raspbian Stretch). Напішыце яму пра гэта па адрасе, пазначаным вышэй. Калі жадаючых набярэцца дастаткова шмат, магчымы нават выпуск набораў, якія ўключаюць у сябе ўсё неабходнае для такой пераробкі.

падзякі

Дзякуй Dave Mielke за вычытку тэксту.

Дзякуй Simon Kainz за фотаілюстрацыі.

Дзякуй калегам па Грацкаму тэхнічнаму ўніверсітэту за хуткае далучэнне аўтара да міру Raspberry Pi.

PS Першы твіт аўтара на дадзеную тэму (не адчыняецца – перакладчык) быў зроблены ўсяго за пяць дзён да публікацыі арыгінала гэтага артыкула, і можна лічыць, што за выключэннем праблем з гукам, пастаўленая задача практычна вырашана. Дарэчы, фінальны варыянт тэксту аўтар адрэдагаваў з вырабленага ім "самадастатковага брайлеўскага дысплея", падлучыўшы яго па SSH да хатняга кампутара.

Крыніца: habr.com

Дадаць каментар