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 с помощта на BlueZ се оказа неочевиден. Авторът намери Python скрипт 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 daemon-reload и systemctl restart 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/pan@.service

[Unit]
Description=Bluetooth Personal Area Network клиент

[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. Прави се по същия начин, само вместо агент на трябва да се даде команда агент KeyboardOnly и bluetoothctl ще открие устройството с профил HID.

Но настройването на Bluetooth чрез командния ред е малко сложно

Въпреки че на автора му е успяло всичко да конфигурира, той разбира, че настройването на BlueZ чрез командния ред е неудобно. Първоначално е мислел, че агентите са нужни само за въвеждане на PIN кодове, но се оказа, например, че за активиране на профила HID трябва да напише „agent KeyboardOnly“. Учудващо е, че за стартиране на Bluetooth PAN е необходимо да се рови в хранилищата за нужния скрипт. Помни, че в предишната версия на BlueZ имаше готов инструмент pand — къде ли отиде в BlueZ 5? Неочаквано може да се е появило ново решение, неизвестно на автора, но лежащо на повърхността?

Производителност

Скоростта на предаване на данни беше около 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,5mm "джек", но авторът не знае за адаптери за извеждане на аудиосигнала от Mini-HDMI. Авторът не успя да активира вградения звукозапис на "малинката" (странно, преводачът беше сигурен, че Zero няма такъв, но има начини за извеждане на звук чрез PWM на GPIO). Той планира да приложи USB-OTG концентратор и да свърже външна звукова карта, за да извежда звука на вградената колона на Брайлевия дисплей. Две външни карти по някаква причина не заработиха, в момента той търси подобно устройство с друг чипсет.

Все още е неудобно ръчно да се изключи "малинката", да се изчака няколко секунди и след това да се изключи Брайлевия дисплей. Всичко е така, защото при изключване, той спира захранването на порта в отделението. Авторът планира да постави в отделението малка буферна батерия и да съобщава на "малинката" за изключването на дисплея чрез GPIO, за да може тя да започне да завършва работата си. Такъв малък ИБП.

Образ на системата

Ако имате такъв Брайлев дисплей и искате да направите същото, авторът е готов да предостави готовия образ на системата (на базата на Raspbian Stretch). Напишете му по адреса, посочен по-горе. Ако има достатъчно желаещи, е възможно дори издаването на комплекти, включващи всичко необходимо за такова преработване.

Благодарности

Благодаря на Dave Mielke за прегледа на текста.

Благодаря на Simon Kainz за фотоилюстрациите.

Благодаря на колегите от Техническия университет в Грац за бързото въвеждане на автора в света на Raspberry Pi.

P.S. Първият туит на автора по тази тема (не се отваря — преводачът) беше направен само пет дни преди публикуването на оригинала на тази статия и можем да считаме, че с изключение на проблемите със звука, поставената задача почти е решена. Между другото, финалната версия на текста авторът е редактирал, свързвайки изработения от него "самодостатъчен Брайлев дисплей" по SSH с домашния компютър.

Източник: habr.com

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster