Raspberry Pi Zero dentro de um display braille Handy Tech Active Star 40

Raspberry Pi Zero dentro de um display braille Handy Tech Active Star 40

O autor colocou um Raspberry Pi Zero, um apito Bluetooth e um cabo dentro de seu novo display braille Handy Tech Active Star 40. Uma porta USB integrada fornece energia. O resultado foi um computador autossuficiente sem monitor em ARM com sistema operacional Linux, equipado com teclado e display Braille. Você pode carregá-lo/alimentá-lo via USB, incl. de um banco de energia ou carregador solar. Portanto, pode ficar sem energia por várias horas, mas por vários dias.

Raspberry Pi Zero dentro de um display braille Handy Tech Active Star 40

Diferenciação dimensional de linhas braille

Em primeiro lugar, eles diferem no comprimento da linha. Dispositivos com capacidade de 60 ou mais são bons para trabalhar com um computador desktop, enquanto dispositivos com capacidade de 40 são convenientes para transportar com um laptop. Agora existem linhas braille conectadas a smartphones e tablets, com comprimento de linha de 14 ou 18 caracteres.

No passado, as telas braille eram bastante massivas. O laptop de 40 lugares, por exemplo, tinha o tamanho e o peso de um laptop de 13 polegadas. Agora, com o mesmo número de conhecidos, eles são miniaturizados o suficiente para que você possa colocar a tela na frente do laptop, em vez de colocar o laptop na tela.

É claro que isso é melhor, mas ainda não é muito conveniente segurar dois dispositivos separados no colo. Quando você trabalha em uma mesa, não há reclamações, mas vale lembrar que um laptop é chamado de laptop por outro nome, e tentar justificar seu nome, pois acontece que a tela em miniatura de 40 caracteres é ainda menos conveniente.

Assim, o autor esperou pelo lançamento do novo modelo há muito prometido da série Handy Tech Star. Em 2002, foi lançado o modelo anterior Handy Tech Braille Star 40, onde a área do corpo é suficiente para colocar um laptop em cima. E se não couber, existe um suporte retrátil. Agora este modelo foi substituído pelo Active Star 40, que é quase o mesmo, mas com eletrônica atualizada.

Raspberry Pi Zero dentro de um display braille Handy Tech Active Star 40

E o suporte retrátil permanece:

Raspberry Pi Zero dentro de um display braille Handy Tech Active Star 40

Mas o mais conveniente da novidade é um recesso aproximadamente do tamanho de um smartphone (ver KDPV). Ele abre quando a plataforma é movida para trás. Acabou sendo inconveniente segurar um smartphone ali, mas é preciso usar de alguma forma o compartimento vazio, dentro do qual há até uma tomada elétrica.

A primeira coisa que o autor pensou foi colocar o Raspberry Pi ali, mas quando o display foi comprado, descobriu-se que o suporte que cobria o compartimento não deslizou com a “framboesa”. Agora, se a placa fosse apenas 3 mm mais fina...

Mas um colega me contou sobre o lançamento do Raspberry Pi Zero, que acabou sendo tão miniatura que cabiam dois deles no compartimento... ou talvez até três. Foi imediatamente encomendado junto com um cartão de memória de 64 GB, Bluetooth, “apito” e um cabo Micro USB. Poucos dias depois, tudo isso chegou e amigos que enxergavam ajudaram o autor a preparar um mapa. Tudo funcionou imediatamente como deveria.

O que foi feito para isso

Na parte traseira do Handy Tech Active Star 40 existem duas portas USB para dispositivos como teclados. Um teclado de tamanho pequeno com montagem magnética está incluído. Quando o teclado está conectado e o próprio display funciona via Bluetooth, o computador também o reconhece como um teclado Bluetooth.

Assim, se você conectar um “apito” Bluetooth a um Raspberry Pi Zero colocado no compartimento do smartphone, ele poderá se comunicar com o display braille via Bluetooth usando BRLTTY, e se você também conectar um teclado ao display, o “framboesa” também funcionará com ele.

Mas isso não é tudo. O próprio “framboesa”, 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 outra “framboesa” para isso - um clássico, não um Zero, conectado à Ethernet e outro “apito” Bluetooth.

BlueZ 5 e PAN

Método de configuração PAN usando BlueZ acabou não sendo óbvio. O autor encontrou o script Python bt-pan (veja abaixo), que permite configurar o PAN sem uma GUI.

Ele pode ser usado para configurar o servidor e o cliente. Tendo recebido o comando apropriado via D-Bus ao trabalhar em modo cliente, ele cria um novo dispositivo de rede bnep0 imediatamente após estabelecer uma conexão com o servidor. Normalmente, o DHCP é usado para atribuir um endereço IP a esta interface. No modo servidor, o BlueZ requer o nome de um dispositivo bridge ao qual pode adicionar um dispositivo escravo para conectar cada cliente. Configurar um endereço para o dispositivo de ponte e executar um servidor DHCP mais mascaramento de IP na ponte geralmente é tudo o que é necessário.

Ponto de acesso Bluetooth PAN com Systemd

Para configurar a ponte, o autor usou systemd-networkd:

Arquivo /etc/systemd/network/pan.netdev

[NetDev]
Name=pan
Kind=bridge
ForwardDelaySec=0

Arquivo /etc/systemd/network/pan.network

[Match]
Name=pan

[Network]
Address=0.0.0.0/24
DHCPServer=yes
IPMasquerade=yes

Agora precisamos forçar o BlueZ a configurar o perfil NAP. Descobriu-se que isso não pode ser feito com os utilitários padrão BlueZ 5.36. Se o autor estiver errado, corrija-o: mlang (pode mover as orelhas) cego (às vezes acesso e quântico) guru

Mas ele encontrou publicação no blog и Script Python para fazer as chamadas necessárias para o D-Bus.

Por conveniência, o autor utilizou o serviço Systemd para executar o script e verificar se as dependências foram resolvidas.

Arquivo /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

Arquivo /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

O segundo arquivo não seria necessário se o Debian tivesse suporte IPMasquerade= (veja abaixo). #787480).

Depois de executar os comandos systemctl daemon-reload и systemctl reinicie o systemd-networkd você pode iniciar o Bluetooth PAN com o comando systemctl iniciar bandeja

Cliente Bluetooth PAN usando Systemd

O lado do cliente também é fácil de configurar usando Systemd.

Arquivo /etc/systemd/network/pan-client.network

[Match]
Name=bnep*

[Network]
DHCP=yes

Arquivo /etc/systemd/system/[email protegido]

[Unit]
Description=Bluetooth Personal Area Network client

[Service]
Type=notify
ExecStart=/usr/local/sbin/bt-pan --debug --systemd client %I --wait

Agora, depois de recarregar a configuração, você pode conectar-se ao ponto de acesso Bluetooth especificado assim:

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

Emparelhamento usando a linha de comando

Claro, a configuração do servidor e dos clientes deve ser feita após emparelhá-los via Bluetooth. No servidor você precisa executar o bluetoothctl e dar os comandos:

power on
agent on
default-agent
scan on
scan off
pair XX:XX:XX:XX:XX:XX
trust XX:XX:XX:XX:XX:XX

Após iniciar a verificação, aguarde alguns segundos até que o dispositivo desejado apareça na lista. Anote seu endereço e use-o emitindo o comando pair e, se necessário, o comando trust.

No lado do cliente, você precisa fazer a mesma coisa, mas o comando trust definitivamente não é necessário. O servidor precisa aceitar uma conexão usando o perfil NAP sem confirmação manual do usuário.

O autor não tem certeza de que esta seja a sequência ideal de comandos. Talvez tudo o que seja necessário seja emparelhar o cliente com o servidor e executar o comando trust no servidor, mas ele ainda não tentou isso.

Habilitando perfil HID Bluetooth

É necessário que o Raspberry reconheça um teclado conectado ao display Braille por fio, e transmitido pelo próprio display via Bluetooth. Isso é feito da mesma maneira, só que em vez disso agente em preciso dar um comando Agente Somente Teclado e bluetoothctl encontrará um dispositivo com perfil HID.

Mas configurar o Bluetooth via linha de comando é um pouco complicado

Embora o autor tenha conseguido configurar tudo, ele entende que configurar o BlueZ pela linha de comando é inconveniente. A princípio ele pensou que os agentes só precisavam inserir códigos PIN, mas descobriu-se, por exemplo, que para habilitar o perfil HID era necessário digitar “agente KeyboardOnly”. É surpreendente que para iniciar o Bluetooth PAN você precise percorrer os repositórios em busca do script necessário. Ele lembra que na versão anterior do BlueZ já existia uma ferramenta pronta para isso panda - onde ele está no BlueZ 5? De repente apareceu uma nova solução, desconhecida do autor, mas que estava na superfície?

Desempenho

A velocidade de transferência de dados foi de aproximadamente 120 kbit/s, o que é suficiente. O processador ARM de 1 GHz é muito rápido para uma interface de linha de comando. O autor ainda planeja usar principalmente ssh e emacs no dispositivo.

Fontes do console e resolução de tela

A resolução de tela padrão usada pelo framebuffer no Raspberry Pi Zero é bastante estranha: o fbset relata como 656x416 pixels (nenhum monitor conectado, é claro). Com uma fonte de console de 8×16, havia 82 caracteres por linha e 26 linhas.

É inconveniente trabalhar com um display Braille de 40 caracteres neste modo. O autor também gostaria de ver os caracteres Unicode exibidos em braille. Felizmente, o Linux suporta 512 caracteres, e a maioria das fontes de console tem 256. Usando a configuração do console, você pode usar duas fontes de 256 caracteres juntas. O autor adicionou as seguintes linhas ao arquivo /etc/default/console-setup:

SCREEN_WIDTH=80
SCREEN_HEIGHT=25
FONT="Lat15-Terminus16.psf.gz brl-16x8.psf"

Obs: para disponibilizar a fonte brl-16×8.psf é necessário instalar o console-braille.

Qual é o próximo?

O display Braille possui um conector de 3,5 mm, mas o autor não conhece adaptadores para receber sinal de áudio do Mini-HDMI. O autor não conseguiu usar a placa de som embutida no Raspberry (estranhamente, o tradutor tinha certeza de que o Zero não tinha, mas existem maneiras de enviar som usando PWM para o GPIO). Ele planeja usar um hub USB-OTG e conectar uma placa externa e emitir som para o alto-falante embutido no display braille. Por algum motivo, duas placas externas não funcionaram; agora ele está procurando um dispositivo semelhante em um chipset diferente.

Também é inconveniente desligar manualmente o “framboesa”, esperar alguns segundos e desligar o display braille. E tudo porque quando desligado, retira a energia do conector do compartimento. O autor planeja colocar uma pequena bateria buffer no compartimento e, via GPIO, informar ao Raspberry sobre o desligamento do display, para que ele comece a desligar seu trabalho. Este é um UPS em miniatura.

Imagem do sistema

Se você possui o mesmo display Braille e gostaria de fazer o mesmo com ele, o autor está pronto para fornecer uma imagem pronta do sistema (baseada no Raspbian Stretch). Escreva para ele sobre isso no endereço indicado acima. Se houver bastante interessado, é possível até lançar kits que incluam tudo o que é necessário para tal modificação.

Agradecimentos

Obrigado a Dave Mielke pela revisão.

Obrigado a Simon Kainz pelas ilustrações fotográficas.

Obrigado aos meus colegas da Universidade Técnica de Graz por apresentarem rapidamente o autor ao mundo do Raspberry Pi.

PS Primeiro tweet 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, com exceção dos problemas de som, a tarefa foi praticamente resolvida. Aliás, o autor editou a versão final do texto a partir de um “display Braille autossuficiente” que ele fez, conectando-o via SSH ao seu computador doméstico.

Fonte: habr.com

Adicionar um comentário