Raspberry Pi Zero i brilleleseren Handy Tech Active Star 40

Raspberry Pi Zero i brilleleseren Handy Tech Active Star 40

Forfatteren har plassert Raspberry Pi Zero, en Bluetooth-dongle og en kabel inne i sin nye brilleleser Handy Tech Active Star 40. Den innebygde USB-porten gir strøm. Det har blitt en selvforsynt datamaskin uten skjerm som kjører på ARM med Linux-operativsystem, utstyrt med tastatur og brilleleser. Den kan lades/forsees via USB, også fra en powerbank eller solcellelader. Derfor kan den klare seg uten strømnett i flere dager, ikke bare timer.

Raspberry Pi Zero i brilleleseren Handy Tech Active Star 40

Størrelsesvariasjon av brillelesere

Først og fremst varierer de i linjelengde. Enheter med 60 eller flere tegn er gode for bruk med stasjonære datamaskiner, mens 40-tegns modeller er praktiske for transport sammen med bærbare datamaskiner. I dag finnes det også brillelesere som kan kobles til smarttelefoner og nettbrett, med linjelengder på 14 eller 18 tegn.

Tidligere var brillelesere ganske store. En 40-tegns modell for eksempel, hadde dimensjoner og vekt lik en 13-tommers bærbar datamaskin. Nå er de, med samme antall tegn, kompakte nok til å kunne plasseres foran en bærbar datamaskin, istedenfor å plassere datamaskinen oppå brilleleseren.

Dette er selvsagt bedre, men det er fremdeles ikke særlig behagelig å ha to separate enheter på fanget. Når man jobber ved et bord er det ingenting å klage på, men man må huske at bærbare datamaskiner også kalles laptoper, og for å prøve å rettferdiggjøre dette navnet viser det seg at den kompakte 40-tegns brilleleseren faktisk er mindre komfortabel.

Så forfatteren ventet på utgivelsen av den lenge lovede nye modellen i Handy Tech Star-serien. Allerede i 2002 ble den forrige modellen, Handy Tech Braille Star 40, utgitt, der det var plass nok til å sette en bærbar datamaskin oppå. Og hvis den ikke passer — er det en utskyvbar støtte tilgjengelig. Nå er denne modellen erstattet med Active Star 40, det er praktisk talt det samme, men med oppgradert elektronikk.

Raspberry Pi Zero i brilleleseren Handy Tech Active Star 40

Og den utskyvbare støtten er bevart:

Raspberry Pi Zero i brilleleseren Handy Tech Active Star 40

Men det mest praktiske med nyheten — er forsinken som er omtrent på størrelse med en smarttelefon (se KDPV). Den åpnes ved å skyve plattformen bakover. Å holde en smarttelefon der er ikke så behagelig, men man må finne en måte å bruke det tomme rommet, hvor det til og med er en strømutgang.

Det første forslaget fra forfatteren var å plassere en Raspberry Pi der, men da skjermen ble kjøpt, viste det seg at basen som dekker rommet ikke passer med «bringebæret». Tenk om kortet bare var 3 mm tynnere...

Men en kollega fortalte om Raspberry Pi Zero, som var så kompakt at det ville være plass til to ... eller kanskje til og med tre i rommet. Den ble straks bestilt sammen med et 64 GB minnekort, Bluetooth, en «dongle» og en Micro USB-kabel. Etter noen dager kom alt, og seende venner hjalp forfatteren med å sette opp kortet. Alt fungerte som det skulle med én gang.

Hva som ble gjort for dette

På baksiden av Handy Tech Active Star 40 er det to USB-porter for enheter som tastaturer. Det følger med et lite tastatur med magnetisk feste. Når tastaturet er koblet til, og skjermen fungerer via Bluetooth, gjenkjenner datamaskinen det også som et Bluetooth-tastatur.

Dermed, hvis Raspberry Pi Zero som er plassert i smartphone-rommet, kobles til en Bluetooth-«dongle», kan den utveksle data med brailledisplayet via Bluetooth ved hjelp av BRLTTY, og dersom et tastatur også tilkobles skjermen, vil «bringebæret» fungere sammen med det.

Men det er ikke alt. Selve «bringebæret» kan dessuten få tilgang til internett via Bluetooth PAN fra en hvilken som helst enhet som støtter det. Forfatteren har konfigurert smarttelefonen og datamaskinene hjemme og på jobb på riktig måte, men har i fremtiden planer om å tilpasse ytterligere en «bringebær» — en klassisk, ikke Zero, koblet til Ethernet og en annen Bluetooth-«dongle».

BlueZ 5 og PAN

Slik konfigurerer man PAN ved hjelp av BlueZ viste seg å være lite intuitivt. Forfatteren fant et Python-skript bt-pan (se nedenfor) som lar deg konfigurere PAN uten GUI.

Med det kan du sette opp både server og klient. Når den mottar riktig kommando via D-Bus i klientmodus, oppretter den en ny nettverksenhet bnep0 umiddelbart etter at den har etablert en forbindelse med serveren. Vanligvis brukes DHCP for å tildele IP-adresse til dette grensesnittet. I servermodus krever BlueZ at navnet til bro-enheten angis, som den kan legge til en kjent enhet for tilkobling av hver av klientene. Å konfigurere adressen for bro-enheten og starte DHCP-server pluss IP-masquerading på broen er vanligvis alt som kreves.

Bluetooth PAN-tilgangspunkt med Systemd

For å konfigurere broen brukte forfatteren systemd-networkd:

Fil /etc/systemd/network/pan.netdev

[NetDev]
Navn=pan
Type=bro
ForwardDelaySec=0

Fil /etc/systemd/network/pan.network

[Match]
Navn=pan

[Nettverk]
Adresse=0.0.0.0/24
DHCPServer=ja
IPMasquerade=ja

Nå må vi få BlueZ til å konfigurere NAP-profilen. Det viste seg at med de standard verktøyene i BlueZ 5.36 er det ikke mulig. Hvis forfatteren tar feil, vennligst korriger ham: mlang (kan bevege ørene) blind (har tilgang og kvantum) guru

Men han fant et innlegg i bloggen og et Python-skript for å utføre de nødvendige anropene til D-Bus.

For enkelhets skyld brukte forfatteren en Systemd-tjeneste for å starte skriptet og sjekke avhengighetstillatelser.

Fil /etc/systemd/system/pan.service

[Unit]
Beskrivelse=Bluetooth Personal Area Network
After=bluetooth.service systemd-networkd.service
Requires=systemd-networkd.service
PartOf=bluetooth.service

[Tjeneste]
Type=notify
ExecStart=/usr/local/sbin/pan

[Installer]
WantedBy=bluetooth.target

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

Den andre filen ville ikke vært nødvendig hvis Debian hadde støtte for IPMasquerade= (se. #787480).

Etter å ha kjørt kommandoene systemctl daemon-reload og systemctl restart systemd-networkd kan du starte Bluetooth PAN med kommandoen systemctl start pan

Bluetooth PAN-klient med Systemd

Den klientsiden er også enkel å konfigurere med Systemd.

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

[Match]
Navn=bnep*

[Nettverk]
DHCP=ja

Fil /etc/systemd/system/pan@.service

[Unit]
Beskrivelse=Bluetooth Personal Area Network-klient

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

Nå, etter å ha lastet inn konfigurasjonen, kan du koble til den spesifiserte Bluetooth-tilgangspunktet med:

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

Paring via kommandolinjen

Selvfølgelig må server- og klientkonfigurasjonen gjøres etter at de er paret over Bluetooth. På serveren må du starte bluetoothctl og gi den kommandoene:

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

Etter å ha startet skanningen, vent et par sekunder til ønsket enhet vises på listen. Noter deg adressen og bruk den ved å gi kommandoen pair, og ved behov også kommandoen trust.

Fra klientens side må du gjøre det samme, men kommandoen trust vil ikke være nødvendig. Serveren trenger den for å akseptere forbindelsen over NAP-profilen uten manuell bekreftelse fra brukeren.

Forfatteren er usikker på om dette er den optimale rekkefølgen av kommandoer. Kanskje alt som trengs er å pare klienten med serveren og utføre trust-kommandoen på serveren, men han har ikke prøvd det på den måten ennå.

Tillatelse til bruk av Bluetooth-profilen HID

Det kreves at «malin» gjenkjenner tastaturet som er koblet til brailledisplayet med kabel, og som allerede er koblet til via Bluetooth. Det gjøres på samme måte, bare i stedet for agent on må man gi kommandoen agent KeyboardOnly og bluetoothctl vil finne enheten med HID-profil.

Men å konfigurere Bluetooth via kommandolinjen er ganske komplisert.

Selv om forfatteren klarte å konfigurere alt, forstår han at det er upraktisk å sette opp BlueZ via kommandolinjen. Først trodde han at agenter bare var nødvendig for å skrive inn PIN-koder, men det viste seg for eksempel at man måtte skrive «agent KeyboardOnly» for å aktivere HID-profilen. Det er merkelig at for å starte Bluetooth PAN må man lete gjennom depotene etter det rette skriptet. Han husker at det i den forrige versjonen av BlueZ var et ferdig verktøy pand — hvor ble det av i BlueZ 5? Kanskje det har dukket opp en ny løsning som forfatteren ikke kjenner til, men som ligger åpenbart foran enhver?

Ytelse

Dataoverføringshastigheten var omtrent 120 kbit/s, noe som er mer enn tilstrekkelig. 1 GHz ARM-prosessoren er veldig rask for kommandolinjegrensesnittet. Forfatteren planlegger fortsatt å bruke enheten hovedsakelig til ssh og emacs.

Konsollfonter og skjermoppløsning

Skjermoppløsningen som brukes av framebufferen på Raspberry Pi Zero som standard er ganske merkelig: fbset rapporterer at den er 656×416 piksler (selvfølgelig er ikke skjermen tilkoblet). Med konsollfonten 8×16 ble det 82 tegn per linje og 26 linjer.

Å jobbe med en brailledisplay med 40 tegn i et slikt modus er upraktisk. Forfatteren ønsker seg også at Unicode-tegn blir vist i braille på displayet. Heldigvis støtter Linux 512 tegn, mens de fleste konsollfontene har 256. Ved hjelp av console-setup kan man bruke to 256-tegns skrifter sammen. Forfatteren la til følgende linjer i filen /etc/default/console-setup:

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

Merk: For at fonten brl-16×8.psf skal være tilgjengelig, må man installere console-braille.

Hva skjer videre?

Braille-skjermen har en 3,5 mm "jack", men forfatteren kjenner ikke til adaptere for å ta ut lydsignalet fra Mini-HDMI. Forfatteren klarte ikke å aktivere den innebygde lydkortet i "raspberry" (merkelig, oversetteren var overbevist om at det ikke finnes i Zero, men det finnes måter å utlede lyd via PWM på GPIO). Han planlegger å bruke en USB-OTG-hub og koble til et eksternt kort for å utlede lyd til den innebygde høyttaleren i braille-skjermen. To eksterne kort fungerte mysterisk nok ikke, nå leter han etter en lignende enhet med et annet brikkesett.

Det er også upraktisk å manuelt slå av "raspberry", vente noen sekunder og deretter slå av braille-skjermen. Alt fordi den ved avstengning kutter strømmen fra kontakten i rommet. Forfatteren planlegger å plassere et lite bufferbatteri i rommet og via GPIO informere "raspberry" om avstengningen av skjermen, slik at den kan begynne å avslutte arbeidet. En slik mini UPS.

Systembilde

Hvis du har en lignende braille-skjerm og ønsker å gjøre det samme, er forfatteren klar til å gi et klart systembilde (basert på Raspbian Stretch). Skriv til ham om dette på adressen ovenfor. Hvis det blir mange interesserte, er det til og med mulig å utgi sett som inkluderer alt som trengs for en slik modifikasjon.

Takk

Takk til Dave Mielke for korrekturlesing av teksten.

Takk til Simon Kainz for fotoillustrasjonene.

Takk til kollegene ved Graz tekniske universitet for raskt å hjelpe forfatteren inn i Raspberry Pi-verdenen.

P.S. Den første tweeten fra forfatteren om dette emnet (den åpnes ikke — oversetteren) ble laget bare fem dager før publiseringen av den originale artikkelen, og man kan si at med unntak av lydproblemene, er oppgaven praktisk talt løst. Forresten, forfatteren redigerte den endelige teksten med den selvlagde "selvforsynte braille-skjermen", etter å ha koblet den til hjemme-PC-en via SSH.

Kilde: habr.com

Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere 🔥 Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere | ProHoster