Raspberry Pi Zero inne i en Handy Tech Active Star 40 leselist

Raspberry Pi Zero inne i en Handy Tech Active Star 40 leselist

Forfatteren plasserte en Raspberry Pi Zero, en Bluetooth-fløyte og en kabel inne i sin nye Handy Tech Active Star 40 leselistdisplay. En innebygd USB-port gir strøm. Resultatet ble en selvforsynt skjermløs datamaskin på ARM med Linux-operativsystemet, utstyrt med et tastatur og en leselist. Du kan lade/strømforsyning via USB, inkl. fra en strømbank eller solcellelader. Derfor kan han klare seg uten strøm i flere timer, men i flere dager.

Raspberry Pi Zero inne i en Handy Tech Active Star 40 leselist

Dimensjonsdifferensiering av leselist

Først av alt er de forskjellige i linjelengde. Enheter med kapasitet på 60 eller mer er gode for å jobbe med en stasjonær datamaskin, mens enheter med kapasitet på 40 er praktiske å bære med en bærbar datamaskin. Nå er det blindeskriftsskjermer koblet til smarttelefoner og nettbrett, med en linjelengde på 14 eller 18 tegn.

Tidligere var blindeskriftskjermer ganske massive. Den 40-seters bærbare datamaskinen, for eksempel, hadde størrelsen og vekten til en 13-tommers bærbar datamaskin. Nå, med samme antall bekjente, er de miniatyr nok til at du kan sette skjermen foran den bærbare datamaskinen, i stedet for den bærbare datamaskinen på skjermen.

Dette er selvfølgelig bedre, men det er likevel ikke særlig praktisk å holde to separate enheter på fanget. Når du jobber ved et skrivebord, er det ingen klager, men det er verdt å huske at en bærbar datamaskin kalles en bærbar datamaskin med et annet navn, og prøver å rettferdiggjøre navnet, da det viser seg at miniatyrskjermen på 40 tegn er enda mindre praktisk.

Så forfatteren ventet på at den lenge lovede nye modellen i Handy Tech Star-serien skulle slippes. Tilbake i 2002 ble den forrige modellen Handy Tech Braille Star 40 utgitt, hvor kroppsarealet er nok til å sette en bærbar PC på toppen. Og hvis det ikke passer, er det et uttrekkbart stativ. Nå er denne modellen erstattet av Active Star 40, som er nesten den samme, men med oppgradert elektronikk.

Raspberry Pi Zero inne i en Handy Tech Active Star 40 leselist

Og det uttrekkbare stativet gjenstår:

Raspberry Pi Zero inne i en Handy Tech Active Star 40 leselist

Men det mest praktiske med det nye produktet er en fordypning omtrent på størrelse med en smarttelefon (se KDPV). Den åpnes når plattformen flyttes tilbake. Det viste seg å være upraktisk å holde en smarttelefon der, men du må på en eller annen måte bruke det tomme rommet, hvor det til og med er et strømuttak.

Det første forfatteren kom på var å plassere Raspberry Pi der, men da skjermen ble kjøpt, viste det seg at stativet som dekket rommet ikke gled inn med "bringebæret". Nå, hvis brettet bare var 3 mm tynnere...

Men en kollega fortalte meg om utgivelsen av Raspberry Pi Zero, som viste seg å være så miniatyr at to av dem fikk plass i kupeen ... eller kanskje tre. Den ble umiddelbart bestilt sammen med et 64 GB minnekort, Bluetooth, "fløyte" og en Micro USB-kabel. Noen dager senere kom alt dette, og seende venner hjalp forfatteren med å utarbeide et kart. Alt fungerte umiddelbart som det skulle.

Hva ble gjort for dette

På baksiden av Handy Tech Active Star 40 er det to USB-porter for enheter som tastaturer. Et lite tastatur med magnetisk feste er inkludert. Når tastaturet er tilkoblet, og selve skjermen fungerer via Bluetooth, gjenkjenner datamaskinen det i tillegg som et Bluetooth-tastatur.

Dermed, hvis du kobler en Bluetooth-"fløyte" til en Raspberry Pi Zero plassert i smarttelefonrommet, vil den kunne kommunisere med leselisten via Bluetooth ved å bruke BRLTTY, og hvis du også kobler et tastatur til skjermen, vil "bringebær" også fungere med det.

Men det er ikke alt. Selve "bringebæret" kan på sin side få tilgang til Internett via Bluetooth PAN fra alle enheter som støtter det. Forfatteren har konfigurert smarttelefonen og datamaskinene sine hjemme og på jobb deretter, men i fremtiden planlegger han å tilpasse en annen "bringebær" for dette - en klassisk, ikke en Zero, koblet til Ethernet og en annen Bluetooth-"fløyte".

BlueZ 5 og PAN

PAN-konfigurasjonsmetode ved hjelp av Bluez viste seg å være uklart. Forfatteren fant bt-pan Python-skriptet (se nedenfor), som lar deg konfigurere PAN uten en GUI.

Den kan brukes til å konfigurere både serveren og klienten. Etter å ha mottatt den riktige kommandoen via D-Bus når den arbeider i klientmodus, oppretter den en ny nettverksenhet bnep0 umiddelbart etter å ha opprettet en forbindelse med serveren. Vanligvis brukes DHCP til å tildele en IP-adresse til dette grensesnittet. I servermodus krever BlueZ navnet på en broenhet som den kan legge til en slaveenhet til for å koble til hver klient. Å konfigurere en adresse for broenheten og kjøre en DHCP-server pluss IP-maskering 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]
Name=pan
Kind=bridge
ForwardDelaySec=0

Fil /etc/systemd/network/pan.network

[Match]
Name=pan

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

Nå må vi tvinge BlueZ til å konfigurere NAP-profilen. Det viste seg at dette ikke kan gjøres med standard BlueZ 5.36-verktøy. Hvis forfatteren tar feil, korriger ham: mlang (kan bevege ørene) blind (noen ganger tilgang og kvante) guru

Men han fant blogg innlegg и Python-skript for å foreta de nødvendige samtalene til D-Bus.

For enkelhets skyld brukte forfatteren Systemd-tjenesten til å kjøre skriptet og sjekke om avhengigheter er løst.

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

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ære nødvendig hvis Debian hadde IPMasquerade=-støtte (se nedenfor). #787480).

Etter å ha utført kommandoene systemtatt daemon-reload и systemctl restart systemd-networkd du kan starte Bluetooth PAN med kommandoen systemctl start panorering

Bluetooth PAN-klient som bruker Systemd

Klientsiden er også enkel å konfigurere ved hjelp av Systemd.

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

[Match]
Name=bnep*

[Network]
DHCP=yes

Fil /etc/systemd/system/[e-postbeskyttet]

[Unit]
Description=Bluetooth Personal Area Network client

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

Nå, etter å ha lastet inn konfigurasjonen på nytt, kan du koble til det angitte Bluetooth-tilgangspunktet slik:

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

Paring ved hjelp av kommandolinjen

Selvfølgelig må konfigurasjonen av serveren og klientene gjøres etter å ha paret dem via Bluetooth. På serveren må du kjøre 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 noen sekunder til enheten du trenger vises i listen. Skriv ned adressen og bruk den ved å gi parkommandoen og, om nødvendig, tillitskommandoen.

På klientsiden må du gjøre det samme, men tillitskommandoen er definitivt ikke nødvendig. Serveren trenger den for å godta en tilkobling ved hjelp av NAP-profilen uten manuell bekreftelse fra brukeren.

Forfatteren er ikke sikker på at dette er den optimale rekkefølgen av kommandoer. Kanskje alt som trengs er å pare klienten med serveren og kjøre trust-kommandoen på serveren, men han har ikke prøvd dette ennå.

Aktiverer HID Bluetooth-profil

Det kreves at Raspberry gjenkjenner et tastatur som er koblet til leselisten via ledning, og overføres av selve skjermen via Bluetooth. Dette gjøres på samme måte, bare i stedet agent på trenger å gi en kommando agent KeyboardOnly og bluetoothctl vil finne en enhet med en HID-profil.

Men å sette opp Bluetooth via kommandolinjen er litt komplisert

Selv om forfatteren klarte å konfigurere alt, forstår han at det er upraktisk å konfigurere BlueZ via kommandolinjen. Først trodde han at agenter bare var nødvendig for å taste inn PIN-koder, men det viste seg for eksempel at for å aktivere HID-profilen må du skrive "agent KeyboardOnly". Det er overraskende at for å starte Bluetooth PAN må du klatre gjennom repositories på jakt etter det nødvendige skriptet. Han husker at det i forrige versjon av BlueZ var et ferdig verktøy for dette panda - hvor gjør han i BlueZ 5? Plutselig dukket det opp en ny løsning, ukjent for forfatteren, men liggende på overflaten?

Производительность

Dataoverføringshastigheten var omtrent 120 kbit/s, som er ganske nok. 1GHz ARM-prosessoren er veldig rask for et kommandolinjegrensesnitt. Forfatteren planlegger fortsatt å bruke hovedsakelig ssh og emacs på enheten.

Konsollfonter og skjermoppløsning

Standard skjermoppløsning som brukes av framebufferen på Raspberry Pi Zero er ganske merkelig: fbset rapporterer den som 656x416 piksler (ingen skjerm tilkoblet, selvfølgelig). Med en konsollfont på 8×16 var det 82 tegn per linje og 26 linjer.

Det er upraktisk å jobbe med en 40-tegns leselist i denne modusen. Forfatteren ønsker også å se Unicode-tegn vist i blindeskrift. Heldigvis støtter Linux 512 tegn, og de fleste konsollfonter har 256. Ved å bruke konsolloppsett kan du bruke to 256-tegnsfonter 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 å gjøre brl-16×8.psf-fonten tilgjengelig, må du installere konsoll-punktskrift.

Hva blir det neste?

Punktdisplayet har en 3,5 mm-kontakt, men forfatteren kjenner ikke til adaptere for å motta et lydsignal fra Mini-HDMI. Forfatteren var ikke i stand til å bruke lydkortet innebygd i Raspberry (merkelig nok var oversetteren sikker på at Zero ikke hadde en, men det er måter å sende ut lyd ved å bruke PWM til GPIO). Han planlegger å bruke en USB-OTG-hub og koble til et eksternt kort og sende ut lyd til høyttaleren som er innebygd i leselisten. Av en eller annen grunn fungerte ikke to eksterne kort; nå leter han etter en lignende enhet på et annet brikkesett.

Det er også upraktisk å manuelt slå av "bringebæret", vente noen sekunder og slå av leselisten. Og alt fordi når den er slått av, fjerner den strømmen fra kontakten i rommet. Forfatteren planlegger å plassere et lite bufferbatteri i rommet og, via GPIO, informere Raspberry om at skjermen slår seg av, slik at den kan begynne å slå av arbeidet. Dette er en UPS i miniatyr.

Systembilde

Hvis du har samme leselist og ønsker å gjøre det samme med den, er forfatteren klar til å gi et ferdig bilde av systemet (basert på Raspbian Stretch). Skriv til ham om dette på adressen angitt ovenfor. Hvis det er nok interesserte, er det til og med mulig å gi ut sett som inkluderer alt som er nødvendig for en slik modifikasjon.

Anerkjennelser

Takk til Dave Mielke for korrekturlesing.

Takk til Simon Kainz for fotoillustrasjonene.

Takk til kollegene mine ved Graz tekniske universitet for raskt å introduserte forfatteren til Raspberry Pi-verdenen.

PS Første tweet forfatter om dette emnet (åpnes ikke - oversetter) ble laget bare fem dager før publiseringen av originalen til denne artikkelen, og det kan anses at, med unntak av problemer med lyd, var oppgaven praktisk talt løst. Forresten, forfatteren redigerte den endelige versjonen av teksten fra en "selvforsynt leselist" han laget, og koblet den via SSH til hjemmedatamaskinen.

Kilde: www.habr.com

Legg til en kommentar