
O autor colocou um Raspberry Pi Zero, um dongle Bluetooth e um cabo dentro do seu novo display Braille Handy Tech Active Star 40. A porta USB embutida fornece energia. Assim, obteve-se um computador autossuficiente sem monitor, operando com um sistema operacional Linux, equipado com teclado e display Braille. Ele pode ser carregado/ alimentado via USB, inclusive por um power bank ou um carregador solar. Portanto, pode funcionar desconectado da rede elétrica por não apenas algumas horas, mas sim por vários dias.

Diferenciação dimensional de displays Braille
Acima de tudo, eles diferem pelo comprimento da linha. Dispositivos com 60 ou mais caracteres são bons para uso com um computador desktop, enquanto os de 40 são convenientes para transporte junto com um laptop. Atualmente, existem também displays Braille que se conectam a smartphones e tablets, com comprimento da linha de 14 ou 18 caracteres.
No passado, os displays Braille eram bastante volumosos. Um modelo de 40 caracteres, por exemplo, tinha tamanhos e peso comparáveis a um laptop de 13 polegadas. Agora, com o mesmo número de caracteres, eles são suficientemente compactos para serem colocados à frente de um laptop, e não o contrário.
Isso é, claro, melhor, mas ainda não é muito conveniente manter dois dispositivos separados no colo. Quando se trabalha em uma mesa, não há reclamações, mas é bom lembrar que laptop é nomeado assim por outra razão, e tentando justificar este nome, percebe-se que um display miniatura de 40 caracteres é até menos conveniente.
Assim, o autor aguardou o lançamento do tão prometido novo modelo da série Handy Tech Star. Em 2002, foi lançada a versão anterior Handy Tech Braille Star 40, cujo espaço do corpo era suficiente para colocar um laptop em cima. E se não coubesse - havia uma base retrátil. Agora, esse modelo foi substituído pelo Active Star 40, que é praticamente o mesmo, mas com eletrônica aprimorada.

E a base retrátil permaneceu:

Mas o mais conveniente na novidade é a cavidade do tamanho de um smartphone (veja KDPV). Ela se abre ao mover a plataforma para trás. Manter um smartphone lá se mostrou inconveniente, mas é preciso aproveitar o espaço vazio, dentro do qual até mesmo uma saída de energia foi prevista.
A primeira ideia do autor foi colocar um Raspberry Pi lá, mas quando o display foi adquirido, percebeu-se que a base que cobre o compartimento não se encaixava com o "frutinha". Se a placa fosse apenas 3 mm mais fina...
Mas um colega falou sobre o lançamento do Raspberry Pi Zero, que era tão miniatura que dois deles caberiam no compartimento... ou, talvez, até três. Ele foi encomendado imediatamente junto com um cartão de memória de 64 GB, Bluetooth, um "dongle" e um cabo Micro USB. Alguns dias depois, tudo isso chegou, e amigos que enxergam ajudaram o autor a preparar o cartão. Tudo funcionou corretamente desde o início.
O que foi feito para isso
Na parte de trás do Handy Tech Active Star 40, há duas portas USB para dispositivos como teclados. Um teclado compacto com fixação magnética é fornecido. Quando o teclado está conectado e o display funciona via Bluetooth, o computador ainda o reconhece como um teclado Bluetooth.
Assim, se conectar um dongle Bluetooth ao Raspberry Pi Zero, que está no compartimento do smartphone, ele pode trocar dados com o display Braille via Bluetooth usando , e se também conectar um teclado ao display, o "frutinha" funcionará com ele.
Mas isso não é tudo. O próprio "frutinha", por sua vez, pode acessar a internet via Bluetooth PAN de qualquer dispositivo que o suporte. O autor configurou seu smartphone e computadores em casa e no trabalho de acordo, mas no futuro planeja adaptar outro "frutinha" — o clássico, não Zero, conectado à Ethernet e a outro dongle Bluetooth.
BlueZ 5 e PAN
A maneira de configurar o PAN usando não era óbvia. O autor encontrou um script Pyhton chamado bt-pan (veja abaixo), que permite configurar o PAN sem GUI.
Com ele, é possível configurar tanto o servidor quanto o cliente. Depois de receber o comando apropriado via D-Bus ao operar em modo cliente, ele cria um novo dispositivo de rede bnep0 logo após estabelecer a conexão com o servidor. Normalmente, o DHCP é utilizado para atribuir um endereço IP a esta interface. No modo servidor, o BlueZ exige a especificação do nome do dispositivo de ponte, ao qual pode adicionar um dispositivo conhecido para conectar cada cliente. Configurar o endereço para o dispositivo de ponte e iniciar o servidor DHCP mais o IP masquerading na ponte — geralmente é tudo que é necessário.
Ponto de acesso Bluetooth PAN com Systemd
Para configurar a ponte, o autor utilizou systemd-networkd:
Arquivo /etc/systemd/network/pan.netdev
[NetDev]
Name=pan
Kind=bridge
ForwardDelaySec=0Arquivo /etc/systemd/network/pan.network
[Match]
Name=pan
[Network]
Address=0.0.0.0/24
DHCPServer=yes
IPMasquerade=yesAgora, é necessário fazer com que o BlueZ configure o perfil NAP. Verificou-se que as utilidades padrão do BlueZ 5.36 não podem fazer isso. Se o autor estiver errado, corrija-o: mlang (consegue mover as orelhas) blind (pode haver acesso quântico) guru
Mas ele encontrou e para realizar as chamadas necessárias no D-Bus.
Para facilitar, o autor usou o serviço Systemd para iniciar o script e verificar a resolução das dependências.
Arquivo /etc/systemd/system/pan.service
[Unit]
Description=Rede Pessoal Bluetooth
After=bluetooth.service systemd-networkd.service
Requires=systemd-networkd.service
PartOf=bluetooth.service
[Service]
Type=notify
ExecStart=/usr/local/sbin/pan
[Install]
WantedBy=bluetooth.targetArquivo /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 panO segundo arquivo não seria necessário se o Debian tivesse suporte para IPMasquerade= (veja. ).
Após a execução dos comandos systemctl daemon-reload e systemctl restart systemd-networkd pode-se iniciar o Bluetooth PAN com o comando systemctl start pan
Cliente Bluetooth PAN utilizando Systemd
A parte cliente também é fácil de configurar com o Systemd.
Arquivo /etc/systemd/network/pan-client.network
[Match]
Name=bnep*
[Network]
DHCP=yesArquivo /etc/systemd/system/pan@.service
[Unit]
Description=Cliente da Rede Pessoal Bluetooth
[Service]
Type=notify
ExecStart=/usr/local/sbin/bt-pan --debug --systemd client %I --waitAgora, após reiniciar a configuração, é possível conectar-se ao ponto de acesso Bluetooth especificado assim:
systemctl start pan@00:11:22:33:44:55Emparelhamento via linha de comando
Naturalmente, a configuração do servidor e dos clientes deve ser feita após o emparelhamento via Bluetooth. No servidor, é necessário iniciar o bluetoothctl e dar os seguintes comandos:
power on
agent on
default-agent
scan on
scan off
pair XX:XX:XX:XX:XX:XX
trust XX:XX:XX:XX:XX:XXApós iniciar a busca, aguarde alguns segundos até que o dispositivo desejado apareça na lista. Anote seu endereço e use-o ao enviar o comando pair, e, se necessário, o comando trust.
Do lado do cliente, você deve fazer o mesmo, mas o comando trust não será necessário, certamente. O servidor precisa dele para aceitar a conexão com o perfil NAP sem confirmação manual do usuário.
O autor não tem certeza se essa é a sequência de comandos ideal. Talvez tudo o que seja necessário seja o emparelhamento do cliente com o servidor e a execução do comando trust no servidor, mas ele ainda não testou dessa forma.
Permissão para usar o perfil Bluetooth HID
É necessário que o "malinka" reconheça o teclado conectado ao display Braille via cabo e que já tenha sido passado pelo próprio display via Bluetooth. Faz-se assim também, apenas que em vez de agent on é preciso dar o comando agent KeyboardOnly e o bluetoothctl encontrará o dispositivo com o perfil HID.
Mas configurar o Bluetooth através da linha de comando é um pouco complicado
Embora o autor tenha conseguido configurar tudo, ele entende que configurar o BlueZ através da linha de comando é inconveniente. Ele pensou inicialmente que os agentes eram necessários apenas para a entrada de códigos PIN, mas descobriu, por exemplo, que para ativar o perfil HID é preciso digitar "agent KeyboardOnly". É surpreendente que para iniciar o Bluetooth PAN é necessário fuçar os repositórios em busca do script correto. Ele se lembra de que na versão anterior do BlueZ havia uma ferramenta pronta para isso pand — onde foi que ela foi parar no BlueZ 5? Será que surgiu uma nova solução, desconhecida para o autor, mas óbvia?
Desempenho
A velocidade de transmissão de dados foi de aproximadamente 120 kbit/s, o que é mais do que suficiente. O processador ARM de 1 gigaherzio é muito rápido para a interface de linha de comando. O autor ainda planeja usar o dispositivo principalmente para ssh e emacs.
Fontes de console e resolução de tela
A resolução de tela utilizada pelo framebuffer no Raspberry Pi Zero por padrão é bastante estranha: o fbset informa que ela é de 656×416 pixels (o monitor, claro, não está conectado). Com a fonte de console de 8×16, obteve-se 82 caracteres por linha e 26 linhas.
Trabalhar com um display Braille de 40 caracteres nesse modo é inconveniente. Além disso, o autor gostaria que os caracteres Unicode fossem exibidos no display em formato Braille. Felizmente, o Linux suporta 512 caracteres, enquanto na maioria das fontes de console são 256. Com o console-setup, é possível usar duas fontes de 256 caracteres juntas. O autor adicionou ao arquivo /etc/default/console-setup as seguintes linhas:
SCREEN_WIDTH=80
SCREEN_HEIGHT=25
FONT="Lat15-Terminus16.psf.gz brl-16x8.psf"Nota: para que a fonte brl-16×8.psf fique disponível, é necessário instalar o console-braille.
E agora?
O display em Braille possui um jack de 3,5 mm, mas o autor não conhece adaptadores para capturar o sinal de áudio do Mini-HDMI. Ele não conseguiu utilizar a placa de som integrada na 'Raspberry Pi' (estranho, o tradutor estava certo de que o Zero não tinha, mas existem maneiras de emitir som via PWM nos pinos GPIO). Ele planeja usar um hub USB-OTG e conectar uma placa externa, direcionando o áudio para o alto-falante integrado do display em Braille. Duas placas externas, por algum motivo, não funcionaram, e ele agora está procurando um dispositivo semelhante com um chipset diferente.
Ainda é inconveniente desligar a 'Raspberry Pi' manualmente, esperar alguns segundos e, em seguida, desligar o display em Braille. Isso acontece porque, ao desligar, ele corta a energia do conector no compartimento. O autor planeja colocar uma pequena bateria reserva no compartimento e informar à 'Raspberry Pi' sobre o desligamento do display através do GPIO, para que ela possa iniciar o processo de desligamento. Um UPS em miniatura.
Imagem do sistema
Se você tiver um display em Braille como este e quiser fazer o mesmo, o autor está disposto a fornecer uma imagem do sistema pronta (baseada no Raspbian Stretch). Entre em contato com ele pelo endereço acima. Se houver interesse suficiente, é possível até lançar kits que incluam tudo o que é necessário para essa modificação.
Agradecimentos
Obrigado, Dave Mielke, pela revisão do texto.
Obrigado, Simon Kainz, pelas ilustrações fotográficas.
Obrigado aos colegas da Universidade Técnica de Graz pela rápida introdução do autor ao mundo da Raspberry Pi.
P.S. do autor sobre este tema (não abre - tradutor) foi feito apenas cinco dias antes da publicação do original deste artigo, e pode-se considerar que, exceto pelos problemas de áudio, a tarefa proposta está praticamente resolvida. A propósito, a versão final do texto foi editada pelo autor usando o 'display em Braille autossuficiente' que ele fabricou, conectando-o via SSH ao computador doméstico.
Fonte: habr.com
