Raspberry Pi Zero în interiorul unui display braille Handy Tech Active Star 40

Raspberry Pi Zero în interiorul unui display braille Handy Tech Active Star 40

Autorul a plasat un Raspberry Pi Zero, un fluier Bluetooth și un cablu în noul său afișaj braille Handy Tech Active Star 40 Un port USB încorporat oferă energie. Rezultatul a fost un computer auto-suficient fără monitor pe ARM cu sistemul de operare Linux, echipat cu o tastatură și un afișaj Braille. Îl puteți încărca/alimenta prin USB, inclusiv. de la un power bank sau un încărcător solar. Prin urmare, se poate descurca fără energie timp de câteva ore, dar pentru câteva zile.

Raspberry Pi Zero în interiorul unui display braille Handy Tech Active Star 40

Diferențierea dimensională a afișajelor braille

În primul rând, ele diferă în lungimea liniei. Dispozitivele cu o capacitate de 60 sau mai mult sunt bune pentru a lucra cu un computer desktop, în timp ce dispozitivele cu o capacitate de 40 sunt convenabile pentru a fi transportate cu un laptop. Acum există afișaje braille conectate la smartphone-uri și tablete, cu o lungime de rând de 14 sau 18 caractere.

În trecut, afișajele braille erau destul de masive. Laptopul cu 40 de locuri, de exemplu, avea dimensiunea și greutatea unui laptop de 13 inchi. Acum, cu același număr de cunoștințe, sunt suficient de miniatură încât să poți pune afișajul în fața laptopului, mai degrabă decât laptopul pe afișaj.

Acest lucru este, desigur, mai bun, dar încă nu este foarte convenabil să ții două dispozitive separate în poală. Când lucrați la un birou, nu există plângeri, dar merită să ne amintim că un laptop este numit laptop cu un alt nume și să încerci să-i justifice numele, deoarece se dovedește că afișajul în miniatură de 40 de caractere este și mai puțin convenabil.

Așa că autorul a așteptat lansarea noului model mult promis din seria Handy Tech Star. În 2002, a fost lansat modelul anterior Handy Tech Braille Star 40, unde zona corpului este suficientă pentru a pune un laptop deasupra. Și dacă nu se potrivește, există un suport retractabil. Acum acest model a fost înlocuit cu Active Star 40, care este aproape același, dar cu electronică îmbunătățită.

Raspberry Pi Zero în interiorul unui display braille Handy Tech Active Star 40

Și suportul retractabil rămâne:

Raspberry Pi Zero în interiorul unui display braille Handy Tech Active Star 40

Dar cel mai convenabil lucru la noul produs este o nișă de aproximativ dimensiunea unui smartphone (vezi KDPV). Se deschide când platforma este mutată înapoi. S-a dovedit a fi incomod să ții un smartphone acolo, dar trebuie să folosești cumva compartimentul gol, în interiorul căruia există chiar și o priză.

Primul lucru cu care a venit autorul a fost să plaseze Raspberry Pi acolo, dar când afișajul a fost achiziționat, s-a dovedit că suportul care acoperă compartimentul nu a alunecat cu „zmeura”. Acum, dacă placa ar fi cu doar 3 mm mai subțire...

Dar un coleg mi-a spus despre lansarea lui Raspberry Pi Zero, care s-a dovedit a fi atât de miniatură încât două dintre ele ar putea încăpea în compartiment... sau poate chiar trei. A fost comandat imediat împreună cu un card de memorie de 64 GB, Bluetooth, „fluier” și un cablu Micro USB. Câteva zile mai târziu au sosit toate acestea, iar prietenii văzători l-au ajutat pe autor să pregătească o hartă. Totul a funcționat imediat cum trebuia.

Ce s-a făcut pentru asta

Pe spatele Handy Tech Active Star 40 există două porturi USB pentru dispozitive precum tastaturi. Este inclusă o tastatură de dimensiuni mici cu suport magnetic. Când tastatura este conectată, iar afișajul în sine funcționează prin Bluetooth, computerul o recunoaște în plus ca o tastatură Bluetooth.

Astfel, dacă conectați un „fluier” Bluetooth la un Raspberry Pi Zero plasat în compartimentul smartphone-ului, acesta va putea comunica cu afișajul braille prin Bluetooth folosind BRLTTY, iar dacă conectați și o tastatură la afișaj, „zmeura” va funcționa și cu ea.

Dar asta nu este tot. „Zmeura” în sine, la rândul său, poate accesa Internetul prin Bluetooth PAN de pe orice dispozitiv care îl acceptă. Autorul și-a configurat smartphone-ul și computerele acasă și la locul de muncă în consecință, dar în viitor intenționează să adapteze un alt „zmeură” pentru aceasta - unul clasic, nu un Zero, conectat la Ethernet și un alt „fluier” Bluetooth.

BlueZ 5 și PAN

Metoda de configurare PAN folosind Bluez s-a dovedit a fi neevident. Autorul a găsit script-ul bt-pan Python (vezi mai jos), care vă permite să configurați PAN fără GUI.

Poate fi folosit pentru a configura atât serverul, cât și clientul. După ce a primit comanda corespunzătoare prin D-Bus când lucrează în modul client, acesta creează un nou dispozitiv de rețea bnep0 imediat după stabilirea unei conexiuni cu serverul. De obicei, DHCP este utilizat pentru a atribui o adresă IP acestei interfețe. În modul server, BlueZ necesită numele unui dispozitiv bridge la care poate adăuga un dispozitiv slave pentru a conecta fiecare client. Configurarea unei adrese pentru dispozitivul bridge și rularea unui server DHCP plus mascarea IP pe bridge este de obicei tot ceea ce este necesar.

Punct de acces Bluetooth PAN cu Systemd

Pentru a configura puntea, autorul a folosit systemd-networkd:

Fișierul /etc/systemd/network/pan.netdev

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

Fișierul /etc/systemd/network/pan.network

[Match]
Name=pan

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

Acum trebuie să forțăm BlueZ să configureze profilul NAP. S-a dovedit că acest lucru nu se poate face cu utilitățile standard BlueZ 5.36. Dacă autorul greșește, corectează-l: mlang (își poate mișca urechile) orb (uneori acces și cuantic) guru

Dar a găsit postare pe blog и Script Python pentru a efectua apelurile necesare către D-Bus.

Pentru comoditate, autorul a folosit serviciul Systemd pentru a rula scriptul și a verifica dacă dependențele sunt rezolvate.

Fișierul /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

Fișierul /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

Al doilea fișier nu ar fi necesar dacă Debian ar avea suport IPMasquerade= (vezi mai jos). #787480).

După executarea comenzilor systemctl daemon-reload и systemctl repornește systemd-networkd puteți porni Bluetooth PAN cu comanda systemctl start pan

Client Bluetooth PAN folosind Systemd

Partea client este, de asemenea, ușor de configurat folosind Systemd.

Fișierul /etc/systemd/network/pan-client.network

[Match]
Name=bnep*

[Network]
DHCP=yes

Fișier /etc/systemd/system/[e-mail protejat]

[Unit]
Description=Bluetooth Personal Area Network client

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

Acum, după reîncărcarea configurației, vă puteți conecta la punctul de acces Bluetooth specificat astfel:

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

Împerecherea folosind linia de comandă

Desigur, configurarea serverului și a clienților trebuie făcută după împerecherea lor prin Bluetooth. Pe server trebuie să rulați bluetoothctl și să îi dați comenzile:

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

După începerea scanării, așteptați câteva secunde până când dispozitivul de care aveți nevoie apare în listă. Notează-i adresa și folosește-o lansând comanda pair și, dacă este necesar, comanda trust.

Din partea clientului, trebuie să faceți același lucru, dar comanda de încredere nu este cu siguranță necesară. Serverul trebuie să accepte o conexiune folosind profilul NAP fără confirmare manuală de către utilizator.

Autorul nu este sigur că aceasta este secvența optimă de comenzi. Poate că tot ceea ce este necesar este să asociați clientul cu serverul și să rulați comanda trust pe server, dar el nu a încercat încă acest lucru.

Activarea profilului HID Bluetooth

Este necesar ca Raspberry să recunoască o tastatură conectată la afișajul Braille prin fir și transmisă de afișaj în sine prin Bluetooth. Acest lucru se face în același mod, doar în schimb agent activ trebuie să dai o comandă agent KeyboardOnly iar bluetoothctl va găsi un dispozitiv cu profil HID.

Dar configurarea Bluetooth prin linia de comandă este puțin complicată

Deși autorul a reușit să configureze totul, înțelege că configurarea BlueZ prin linia de comandă este incomod. La început a crezut că agenții sunt necesari doar pentru a introduce coduri PIN, dar s-a dovedit, de exemplu, că pentru a activa profilul HID trebuie să tastați „agent KeyboardOnly”. Este surprinzător că pentru a lansa Bluetooth PAN trebuie să treci prin depozite în căutarea scriptului necesar. Își amintește că în versiunea anterioară a BlueZ exista un instrument gata făcut pentru asta urs panda - unde caută în BlueZ 5? Dintr-o dată a apărut o nouă soluție, necunoscută autorului, dar zăcând la suprafață?

productivitate

Viteza de transfer de date a fost de aproximativ 120 kbit/s, ceea ce este suficient. Procesorul ARM de 1 GHz este foarte rapid pentru o interfață de linie de comandă. Autorul încă plănuiește să folosească în principal ssh și emacs pe dispozitiv.

Fonturile consolei și rezoluția ecranului

Rezoluția implicită a ecranului folosită de framebuffer-ul de pe Raspberry Pi Zero este destul de ciudată: fbset o raportează ca 656x416 pixeli (nici un monitor conectat, desigur). Cu un font de consolă de 8×16, existau 82 de caractere pe rând și 26 de linii.

Este incomod să lucrați cu un afișaj Braille de 40 de caractere în acest mod. De asemenea, autorul ar dori să vadă caracterele Unicode afișate în braille. Din fericire, Linux acceptă 512 caractere, iar majoritatea fonturilor din consolă au 256. Folosind console-setup, puteți folosi împreună două fonturi de 256 de caractere. Autorul a adăugat următoarele rânduri în fișierul /etc/default/console-setup:

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

Notă: pentru a face disponibil fontul brl-16×8.psf, trebuie să instalați console-braille.

Ce urmeaza?

Afișajul Braille are o mufă de 3,5 mm, dar autorul nu cunoaște adaptoare pentru recepția unui semnal audio de la Mini-HDMI. Autorul nu a putut folosi placa de sunet încorporată în Raspberry (în mod ciudat, traducătorul era sigur că Zero nu avea una, dar există modalități de a scoate sunet folosind PWM către GPIO). El plănuiește să folosească un hub USB-OTG și să conecteze un card extern și să scoată sunet la difuzorul încorporat în afișajul braille. Din anumite motive, două carduri externe nu au funcționat acum el caută un dispozitiv similar pe un chipset diferit.

De asemenea, este incomod să opriți manual „zmeura”, să așteptați câteva secunde și să opriți afișajul braille. Și totul pentru că atunci când este oprit, elimină alimentarea de la conectorul din compartiment. Autorul plănuiește să plaseze o baterie tampon mică în compartiment și, prin GPIO, să informeze Raspberry despre oprirea afișajului, astfel încât să poată începe să-și oprească funcționarea. Acesta este un UPS în miniatură.

Imaginea sistemului

Dacă aveți același afișaj Braille și doriți să faceți același lucru cu acesta, autorul este gata să furnizeze o imagine gata făcută a sistemului (bazată pe Raspbian Stretch). Scrie-i despre asta la adresa indicată mai sus. Dacă sunt destui oameni interesați, este chiar posibil să lansați kituri care includ tot ceea ce este necesar pentru o astfel de modificare.

Mulțumiri

Mulțumim lui Dave Mielke pentru corecturi.

Mulțumim lui Simon Kainz pentru ilustrațiile foto.

Mulțumesc colegilor mei de la Universitatea Tehnică din Graz pentru că l-au introdus rapid pe autor în lumea Raspberry Pi.

PS Primul tweet autorul pe această temă (nu deschide - traducător) a fost făcut cu doar cinci zile înainte de publicarea originalului acestui articol și se poate considera că, cu excepția problemelor cu sunetul, sarcina a fost practic rezolvată. Apropo, autorul a editat versiunea finală a textului dintr-un „afișaj Braille autosuficient” pe care l-a realizat, conectându-l prin SSH la computerul său de acasă.

Sursa: www.habr.com

Adauga un comentariu