Handy Tech Active Star 40 盲文顯示器內的 Raspberry Pi Zero

Handy Tech Active Star 40 盲文顯示器內的 Raspberry Pi Zero

作者在他的新 Handy Tech Active Star 40 點字顯示器中放置了 Raspberry Pi Zero、藍牙口哨和電纜,內建 USB 連接埠提供電源。 結果是一台採用 ARM、Linux 作業系統、配備鍵盤和點字顯示器的自給自足的無顯示器電腦。 您可以透過 USB 為其充電/供電,包括。 來自行動電源或太陽能充電器。 因此,他可以在沒有電源的情況下堅持幾個小時,但也可以堅持幾天。

Handy Tech Active Star 40 盲文顯示器內的 Raspberry Pi Zero

點字顯示器的尺寸差異

首先,它們的行長不同。 60或更多容量的設備適合與桌上型電腦一起使用,而40容量的設備則方便與筆記型電腦一起攜帶。 現在有連接到智慧型手機和平板電腦的點字顯示器,行長為 14 或 18 個字元。

過去,點字顯示器非常龐大。 例如,40 座筆記型電腦的尺寸和重量與 13 吋筆記型電腦相當。 現在,在熟人數量相同的情況下,它們足夠微型,因此您可以將顯示器放在筆記型電腦前面,而不是將筆記型電腦放在顯示器上。

當然,這樣更好,但是將兩個單獨的設備放在腿上仍然不太方便。 當您在辦公桌前工作時,沒有任何抱怨,但值得記住的是,筆記型電腦被稱為筆記型電腦的另一個名稱,並試圖證明其名稱的合理性,因為事實證明,微型40 字元顯示屏更不方便。

於是筆者等待了期待已久的Handy Tech Star系列新機型的發表。 早在2002年,上一代Handy Tech Braille Star 40就發布了,機身面積足以放置一台筆記型電腦。 如果不合適,還有一個可伸縮支架。 現在,該型號已被 Active Star 40 取代,它實際上是相同的,但電子設備已升級。

Handy Tech Active Star 40 盲文顯示器內的 Raspberry Pi Zero

伸縮支架仍然存在:

Handy Tech Active Star 40 盲文顯示器內的 Raspberry Pi Zero

但新產品最方便的地方是一個大約智慧型手機大小的凹槽(請參閱 KDPV)。 當平台移回時它會打開。 事實證明,在那裡放置智慧型手機並不方便,但你需要以某種方式使用空的隔間,裡面甚至還有一個電源插座。

作者首先想到的就是將樹莓派放在那裡,但當購買顯示器時,發現覆蓋隔間的支架並沒有與「樹莓派」一起滑入。 現在,如果電路板只薄 3 毫米…

但一位同事告訴我有關 Raspberry Pi Zero 的發布,結果證明它非常微型,以至於可以在隔間中容納兩個……甚至三個。 人們立即訂購了它以及 64 GB 記憶卡、藍牙、「口哨」和 Micro USB 線。 幾天後,這一切都到了,視力正常的朋友幫作者準備了一張地圖。 一切立即如預期進行。

為此做了什麼

Handy Tech Active Star 40 的背面有兩個 USB 端口,用於連接鍵盤等裝置。 隨附磁性安裝座的小型鍵盤。 連接鍵盤且顯示器本身透過藍牙工作時,電腦也會將其識別為藍牙鍵盤。

因此,如果您將藍牙「口哨」連接到放置在智慧型手機隔間中的 Raspberry Pi Zero,它將能夠透過藍牙與點字顯示器進行通信 BRLTTY,如果您還將鍵盤連接到顯示器,“樹莓派”也可以使用它。

但這還不是全部。 反過來,「樹莓派」本身可以從任何支援它的裝置透過藍牙 PAN 存取網路。 作者已經在家裡和工作中相應地配置了他的智慧型手機和計算機,但將來他計劃為此調整另一個“樹莓派” - 一個經典的,而不是零,連接到以太網和另一個藍牙“口哨」。

BlueZ 5 和 PAN

使用 PAN 設定方法 藍色Z 事實證明並不明顯。 作者找到了 bt-pan Python 腳本(見下文),它允許您在沒有 GUI 的情況下配置 PAN。

它可用於配置伺服器和客戶端。 在客戶端模式下工作時,透過 D-Bus 接收到適當的命令後,它在與伺服器建立連接後立即創建一個新的網路設備 bnep0。 通常,DHCP 用於為該介面指派 IP 位址。 在伺服器模式下,BlueZ 需要橋接設備的名稱,它可以向該橋接設備添加從屬設備以連接每個客戶端。 通常只需要為橋接設備配置位址並在橋接器上運行 DHCP 伺服器和 IP 偽裝即可。

帶有 Systemd 的藍牙 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(可以移動他的耳朵)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 restart systemd-networkd 您可以使用以下命令啟動藍牙 PAN systemctl 啟動盤

使用 Systemd 的藍牙 PAN 用戶端

使用 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

現在,重新載入設定後,您可以像這樣連接到指定的藍牙存取點:

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

使用命令列配對

當然,伺服器和客戶端的配置必須在透過藍牙配對後進行。 在伺服器上,您需要執行 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 藍牙設定文件

要求Raspberry能夠辨識以有線方式連接到點字顯示器的鍵盤,並由顯示器本身透過藍牙傳輸。 這是以同樣的方式完成的,只是相反 代理人 需要下達命令 代理僅鍵盤 bluetoothctl 將找到具有 HID 設定檔的裝置。

但透過命令列設定藍牙有點複雜

儘管作者設法配置了所有內容,但他明白透過命令列設定 BlueZ 很不方便。 起初,他認為代理只需要輸入 PIN 碼,但事實證明,例如,要啟用 HID 配置文件,您需要鍵入“agent KeyboardOnly”。 令人驚訝的是,要啟動藍牙 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 個。使用 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 音訊訊號的轉接器。 作者無法使用Raspberry內建的音效卡(奇怪的是,譯者確定Zero沒有音效卡,但有辦法使用PWM到GPIO輸出聲音)。 他計劃使用 USB-OTG 集線器並連接外部卡並將聲音輸出到點字顯示器內建的揚聲器。 由於某種原因,兩個外部卡無法工作;現在他正在尋找不同晶片組上的類似設備。

手動關閉「樹莓派」也很不方便,等幾秒鐘再關閉點字顯示器。 這一切都是因為當它關閉時,它會切斷隔間中連接器的電源。 作者計劃在隔間中放置一個小型緩衝電池,並透過 GPIO 通知 Raspberry 顯示器關閉,以便它可以開始關閉其工作。 這是一個微型 UPS。

系統鏡像

如果您有相同的點字顯示器並且想用它做同樣的事情,作者準備提供系統的現成圖像(基於 Raspbian Stretch)。 請依上述地址寫信告知他此事。 如果有足夠多的人感興趣,甚至可以發布包含此類修改所需的一切的套件。

致謝

感謝 Dave Mielke 的校對。

感謝 Simon Kainz 提供的照片插圖。

感謝格拉茨技術大學的同事們快速地向作者介紹了 Raspberry Pi 的世界。

聚苯乙烯 第一則推文 關於這個主題的作者(不公開 - 譯者)是在本文原文發表前五天提出的,我們可以認為,除了聲音問題之外,任務實際上已經解決了。 順便說一句,作者從他製作的「自給自足的點字顯示器」中編輯了文本的最終版本,並透過 SSH 將其連接到他的家用電腦。

來源: www.habr.com

添加評論