
作者在新的Handy Tech Active Star 40盲文显示器中放置了Raspberry Pi Zero,蓝牙“哨声”和电缆,并通过内置USB端口供电。 结果是在ARM上使用Linux操作系统的独立式非监控计算机,配备了键盘和盲文显示器。 您可以通过USB(包括USB)为其充电/供电。 来自移动电源或太阳能充电器。 因此,它可以省掉数小时而不是数小时的市电。

盲文显示器的尺寸差异
首先,它们的字符串长度不同。 使用台式计算机时,最好使用60或以上的设备,而使用笔记本电脑时,可以方便地使用40台设备。 现在,已将盲文显示器连接到智能手机和平板电脑,字符串长度为14或18。
过去,盲文显示器非常庞大。 例如,熟悉40岁的人拥有一台13英寸笔记本电脑的尺寸和重量。 现在,以同样的熟悉程度,它们足够小,可以在笔记本电脑前放置显示器,而不是在显示器上放置笔记本电脑。
这固然更好,但是将两个单独的设备放在膝盖上仍然不是很方便。 当您在桌旁工作时,不会有任何抱怨,但是值得记住的是,笔记本电脑以不同的方式被称为笔记本电脑,并试图证明其名称合理,因为事实证明,这种微型40座显示器的使用更为不便。
因此,作者等待着Handy Tech Star系列中久负盛名的新型号的发布。 早在2002年,便推出了先前的Handy Tech Braille Star 40型号,其机身区域足以将笔记本电脑放在顶部。 如果不适合,则提供可伸缩的支架。 现在,该型号已由Active Star 40取代,它几乎相同,但具有升级的电子设备。

伸缩式支架仍然保持:

但是,新颖性中最方便的事情是大约与智能手机大小相同的凹槽(请参阅KDPV)。 平台向后移动时它将打开。 事实证明,将智能手机放置在其中很不方便,但是以某种方式您需要使用空的隔间,在该隔间内甚至可以提供电源输出。
作者想出的第一件事是将Raspberry Pi放在那儿,但是当购买显示器时,事实证明,使用“树莓”式封闭隔室的支架不会滑入。 现在,如果电路板仅薄3毫米...
但是一位同事谈论了Raspberry Pi Zero的发布,事实证明它是如此之小,以至于两个可以装进车厢……甚至三个。 立即订购该产品以及64 GB的存储卡,蓝牙,哨子和Micro USB电缆。 几天后,所有这一切都到了,有目共睹的朋友帮助作者准备了一张地图。 一切立即按预期进行。
为此做了什么
Handy Tech Active Star 40的背面是两个USB端口,用于键盘等设备。 包括一个小的磁性键盘。 连接键盘后,显示屏本身可以通过蓝牙工作,则计算机还会将其识别为蓝牙键盘。
因此,如果将蓝牙“哨子”连接到放置在智能手机仓中的Raspberry Pi Zero,则它可以使用
BRLTTY通过蓝牙与盲文显示器交换数据,并且如果您还将键盘连接到显示器,则“ Malinka”将起作用,并且和她在一起。
但这还不是全部。 反过来,Malinka本身也可以从任何支持蓝牙的设备通过Bluetooth PAN访问互联网。 作者在家里和工作场所都相应地设置了智能手机和计算机,但将来他计划为此再改用一个“树莓”-一种经典的(不是零的)连接到以太网和另一个蓝牙的“哨子”。
BlueZ 5和PAN
使用
BlueZ配置PAN的方法并不明显。 作者发现了pyhton脚本bt-pan(请参见下文),该脚本可让您在不使用GUI的情况下配置PAN。
使用它,您可以同时配置服务器和客户端。 在客户端模式下工作时收到适当的D-Bus命令后,他在与服务器建立连接后立即创建了一个新的bnep0网络设备。 通常,DHCP用于为该接口分配IP地址。 在服务器模式下,BlueZ要求从站可以将其添加到的桥接设备的名称来连接每个客户端。 通常只需要配置网桥设备的地址并启动DHCP服务器以及网桥上的IP掩码。
带有Systemd的Bluetooth PAN接入点
为了配置网桥,作者应用了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(懂得如何移动耳朵)瞎子(有时访问和量子)大师
但是他发现
了一个博客文章和
一个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守护程序-reload和
systemctl restart systemd-networkd命令后,可以使用
systemctl start pan命令启动Bluetooth PAN。
使用Systemd的Bluetooth PAN客户端
客户端也很容易使用Systemd进行配置。
文件/etc/systemd/network/pan-client.network
[Match] Name=bnep* [Network] DHCP=yes
文件/etc/systemd/system/pan@.service
[Unit] Description=Bluetooth Personal Area Network client [Service] Type=notify ExecStart=/usr/local/sbin/bt-pan --debug --systemd client %I --wait
现在,重新启动配置后,您可以像这样连接到指定的蓝牙访问点:
systemctl start pan@00:11:22:33:44:55
命令行配对
当然,服务器和客户端必须通过蓝牙配对后进行配置。 在服务器上,您需要运行bluect.ctl并为其提供命令:
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命令,但他尚未尝试过。
启用HID蓝牙配置文件
需要“ Malinka”识别通过电线连接到盲文显示器的键盘,并且显示器本身已经通过蓝牙转发了该键盘。 这是通过相同的方式完成的,只是不需要
代理,您需要给
代理提供KeyboardOnly命令,bluetoothctl会找到具有HID配置文件的设备。
但是通过命令行配置蓝牙有点复杂
尽管作者设法配置了所有内容,但他知道通过命令行配置BlueZ是不方便的。 起初,他认为只需要输入PIN码即可使用代理,但事实证明,例如,要启用HID配置文件,必须键入“ agent KeyboardOnly”。 令人惊讶的是,要启动Bluetooth PAN,您需要攀登存储库以查找所需的脚本。 他记得在以前的BlueZ版本中有一个现成的
填充工具可用于此操作-他在BlueZ 5中是哪里做的? 突然,出现了一个新的解决方案,作者不知道,但还是表面上?
性能表现
数据传输速率约为120 kbps,足够了。 1 GHz ARM处理器对于命令行界面非常快。 作者仍计划主要在设备上使用ssh和emacs。
控制台字体和屏幕分辨率
Raspberry Pi Zero上的帧缓冲区使用的默认屏幕分辨率非常奇怪:fbset报告它为656x416像素(当然,显示器未连接)。 使用8x16的控制台字体,获得了每行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-16x8.psf字体可用,您需要安装console-braille。
接下来是什么?
盲文显示器上有一个3.5毫米插孔,但是作者不知道用于从Mini-HDMI移除音频的适配器。 作者无法使用内置在“树莓”中的声卡(奇怪的是,转换器确定零位中没有声卡,但是有方法可以将PWM声音输出到GPIO)。 他计划使用USB-OTG集线器并连接外部卡,并将声音输出到盲文显示器中内置的扬声器。 由于某种原因,两个外部卡无法正常工作,现在他正在另一芯片组上寻找相似的设备。
手动关闭“树莓”,等待几秒钟并关闭盲文显示器也很不方便。 所有这些都是因为当它断开连接时,它将断开隔室中连接器的电源。 作者计划在隔室中放入一个小的缓冲电池,并通过GPIO通知“树莓”有关关闭显示器的信息,以便它开始完成工作。 这样的微型UPS。
系统映像
如果您具有相同的盲文显示器,并且要使用盲文显示器,则作者可以准备提供系统的现成图像(基于Raspbian Stretch)。 在上面的地址给他写信。 如果有很多人愿意,甚至有可能生产出包括您进行这种更改所需的一切的设备。
致谢
感谢Dave Mielke对文本进行校对。
感谢Simon Kainz的照片插图。
感谢Graz技术大学的同事,迅速将作者介绍到Raspberry Pi的世界。
PS作者在此主题上的
第一条推文 (尚未公开-翻译)是在本文正本发布前五天发布的,我们可以假设,除了声音问题外,这项任务实际上已经解决了。 顺便说一下,作者从他制作的“自给式盲文显示器”中编辑了文本的最终版本,并通过SSH将其连接到家用计算机。