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, вкл. от power bank или соларно зарядно устройство. Следователно той може да работи без захранване за няколко часа, но за няколко дни.

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

Но най-удобното в новия продукт е вдлъбнатина с размер приблизително колкото смартфон (виж KDPV). Отваря се, когато платформата се премести назад. Оказа се неудобно да държите смартфон там, но трябва по някакъв начин да използвате празното отделение, вътре в което дори има електрически контакт.

Първото нещо, което авторът измисли, беше да постави Raspberry Pi там, но когато дисплеят беше закупен, се оказа, че стойката, покриваща отделението, не се плъзга с „малината“. Сега, ако дъската беше само с 3 мм по-тънка...

Но един колега ми каза за пускането на Raspberry Pi Zero, който се оказа толкова миниатюрен, че два от тях могат да се поберат в отделението... или може би дори три. Веднага беше поръчан заедно с 64 GB карта с памет, Bluetooth, "свирка" и Micro USB кабел. Няколко дни по-късно всичко това пристигна и зрящи приятели помогнаха на автора да подготви карта. Всичко веднага заработи както трябва.

Какво беше направено за това

На гърба на Handy Tech Active Star 40 има два USB порта за устройства като клавиатури. Включена е малка клавиатура с магнитна стойка. Когато клавиатурата е свързана и самият дисплей работи чрез Bluetooth, компютърът допълнително го разпознава като Bluetooth клавиатура.

По този начин, ако свържете Bluetooth „свирка“ към Raspberry Pi Zero, поставен в отделението за смартфон, той ще може да комуникира с брайловия дисплей чрез Bluetooth, използвайки BRLTTY, а ако свържете и клавиатура към дисплея, “малината” ще работи и с нея.

Но това не е всичко. Самата „малина“ от своя страна може да има достъп до интернет чрез Bluetooth PAN от всяко устройство, което го поддържа. Авторът е конфигурирал съответно своя смартфон и компютри у дома и на работа, но в бъдеще планира да адаптира друга „малина“ за това - класическа, а не Zero, свързана с Ethernet и друга Bluetooth „свирка“.

BlueZ 5 и PAN

Използване на метод за конфигуриране на PAN bluez се оказа неочевидно. Авторът намери bt-pan Python скрипта (вижте по-долу), който ви позволява да конфигурирате PAN без GUI.

Може да се използва за конфигуриране както на сървъра, така и на клиента. След като получи съответната команда чрез D-Bus при работа в клиентски режим, той създава ново мрежово устройство bnep0 веднага след установяване на връзка със сървъра. Обикновено DHCP се използва за присвояване на IP адрес на този интерфейс. В сървърен режим 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. Ако авторът греши, поправете го: мланг (може да движи ушите си) сляп (понякога достъп и квант) гуру

Но намери блог пост и 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 начален панел

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 профила без ръчно потвърждение от потребителя.

Авторът не е сигурен, че това е оптималната последователност от команди. Може би всичко, което е необходимо, е да сдвоите клиента със сървъра и да изпълните командата за доверие на сървъра, но той все още не е опитал това.

Активиране на HID Bluetooth профил

Изисква се Raspberry да разпознае клавиатура, свързана към брайловия дисплей чрез кабел и предавана от самия дисплей чрез Bluetooth. Това се прави по същия начин, само вместо агент на трябва да се даде команда агент KeyboardOnly и bluetoothctl ще намери устройство с HID профил.

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

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

продуктивност

Скоростта на трансфер на данни беше приблизително 120 kbit/s, което е напълно достатъчно. 1GHz ARM процесорът е много бърз за интерфейс на командния ред. Авторът все още планира да използва основно ssh и emacs на устройството.

Конзолни шрифтове и резолюция на екрана

Разделителната способност на екрана по подразбиране, използвана от фреймбуфера на Raspberry Pi Zero, е доста странна: fbset я отчита като 656x416 пиксела (няма свързан монитор, разбира се). С конзолен шрифт 8×16 имаше 82 знака на ред и 26 реда.

В този режим е неудобно да се работи с 40-знаков брайлов дисплей. Авторът също така би искал да види Unicode символи, показани на брайл. За щастие Linux поддържа 512 знака, а повечето конзолни шрифтове имат 256. С помощта на настройка на конзолата можете да използвате два шрифта от 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. Авторът не успя да използва звуковата карта, вградена в Raspberry (странно, преводачът беше сигурен, че Zero няма такава, но има начини за извеждане на звук с помощта на PWM към GPIO). Той планира да използва USB-OTG хъб и да свърже външна карта и да изведе звук към високоговорителя, вграден в брайловия дисплей. По някаква причина две външни карти не работеха, сега той търси подобно устройство на различен чипсет.

Също така е неудобно ръчно да изключите „малина“, да изчакате няколко секунди и да изключите брайловия дисплей. И всичко това, защото когато е изключен, той премахва захранването от конектора в отделението. Авторът планира да постави малка буферна батерия в отделението и чрез GPIO да информира Raspberry за изключване на дисплея, за да може да започне да спира работата си. Това е UPS в миниатюра.

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

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

Признания

Благодаря на Дейв Миелке за корекцията.

Благодаря на Саймън Кайнц за фотоилюстрациите.

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

PS Първи туит автор на тази тема (не се отваря - преводач) е направено само пет дни преди публикуването на оригинала на тази статия и може да се счита, че с изключение на проблемите със звука, задачата е практически решена. Между другото, авторът редактира окончателната версия на текста от направен от него „самостоятелен брайлов дисплей“, свързвайки го чрез SSH с домашния си компютър.

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

Добавяне на нов коментар