Raspberry Pi Zero ภายในจอแสดงผลอักษรเบรลล์ Handy Tech Active Star 40

Raspberry Pi Zero ภายในจอแสดงผลอักษรเบรลล์ Handy Tech Active Star 40

ผู้เขียนวาง Raspberry Pi Zero, นกหวีด Bluetooth และสายเคเบิลไว้ในจอแสดงผลอักษรเบรลล์ Handy Tech Active Star 40 ใหม่ของเขา พอร์ต USB ในตัวจ่ายไฟ ผลลัพธ์ที่ได้คือคอมพิวเตอร์แบบไม่มีจอภาพแบบพอเพียงบน ARM พร้อมระบบปฏิบัติการ Linux ซึ่งมีแป้นพิมพ์และจอแสดงผลอักษรเบรลล์ คุณสามารถชาร์จ/จ่ายไฟผ่าน USB ได้ จากพาวเวอร์แบงค์หรือเครื่องชาร์จพลังงานแสงอาทิตย์ ดังนั้นจึงสามารถทำได้โดยไม่ต้องใช้ไฟฟ้าเป็นเวลาหลายชั่วโมง แต่เป็นเวลาหลายวัน

Raspberry Pi Zero ภายในจอแสดงผลอักษรเบรลล์ Handy Tech Active Star 40

การแยกความแตกต่างมิติของจอแสดงผลอักษรเบรลล์

ประการแรกมีความยาวบรรทัดต่างกัน อุปกรณ์ที่มีความจุ 60 ขึ้นไปนั้นดีสำหรับการทำงานกับคอมพิวเตอร์เดสก์ท็อป ในขณะที่อุปกรณ์ที่มีความจุ 40 ขึ้นไปนั้นสะดวกสำหรับการพกพาพร้อมกับแล็ปท็อป ขณะนี้มีจอแสดงผลอักษรเบรลล์ที่เชื่อมต่อกับสมาร์ทโฟนและแท็บเล็ต โดยมีความยาวบรรทัด 14 หรือ 18 อักขระ

ในอดีตเครื่องแสดงอักษรเบรลล์มีขนาดค่อนข้างใหญ่ ตัวอย่างเช่น แล็ปท็อปขนาด 40 ที่นั่งมีขนาดและน้ำหนักเท่ากับแล็ปท็อปขนาด 13 นิ้ว ขณะนี้ ด้วยจำนวนคนรู้จักที่เท่ากัน พวกเขาจึงมีขนาดเล็กพอที่จะให้คุณวางจอแสดงผลไว้หน้าแล็ปท็อป แทนที่จะวางแล็ปท็อปไว้บนจอแสดงผล

แน่นอนว่าดีกว่า แต่ก็ยังไม่สะดวกที่จะถืออุปกรณ์สองชิ้นไว้บนตักของคุณ เมื่อคุณทำงานที่โต๊ะ ไม่มีการร้องเรียนใด ๆ แต่ควรจำไว้ว่าแล็ปท็อปนั้นถูกเรียกว่าแล็ปท็อปในชื่ออื่นและพยายามพิสูจน์ชื่อของมันให้เหมาะสม เนื่องจากปรากฎว่าจอแสดงผลขนาดเล็ก 40 ตัวอักษรนั้นสะดวกน้อยกว่าด้วยซ้ำ

ผู้เขียนจึงรอให้รุ่นใหม่ในซีรีส์ Handy Tech Star ที่สัญญาไว้ยาวนานออกฉาย ย้อนกลับไปในปี 2002 Handy Tech Braille Star 40 รุ่นก่อนหน้าได้เปิดตัวโดยมีพื้นที่ตัวเครื่องเพียงพอที่จะวางแล็ปท็อปไว้ด้านบน และถ้าไม่พอดีก็มีขาตั้งแบบยืดหดได้ ตอนนี้รุ่นนี้ถูกแทนที่ด้วย Active Star 40 ซึ่งเกือบจะเหมือนกัน แต่มีการอัพเกรดระบบอิเล็กทรอนิกส์

Raspberry Pi Zero ภายในจอแสดงผลอักษรเบรลล์ Handy Tech Active Star 40

และขาตั้งแบบยืดหดได้ยังคงอยู่:

Raspberry Pi Zero ภายในจอแสดงผลอักษรเบรลล์ Handy Tech Active Star 40

แต่สิ่งที่สะดวกที่สุดเกี่ยวกับผลิตภัณฑ์ใหม่นี้คือช่องที่มีขนาดประมาณสมาร์ทโฟน (ดู KDPV) จะเปิดขึ้นเมื่อแพลตฟอร์มถูกย้ายกลับ ไม่สะดวกที่จะถือสมาร์ทโฟนไว้ที่นั่น แต่คุณจำเป็นต้องใช้ช่องว่างซึ่งภายในนั้นมีปลั๊กไฟด้วย

สิ่งแรกที่ผู้เขียนคิดขึ้นคือวาง Raspberry Pi ไว้ที่นั่น แต่เมื่อซื้อจอแสดงผล ปรากฎว่าขาตั้งที่ปิดช่องไม่ได้เลื่อนเข้าไปพร้อมกับ "ราสเบอร์รี่" ทีนี้ ถ้าบอร์ดบางลงเพียง 3 มม....

แต่เพื่อนร่วมงานคนหนึ่งบอกฉันเกี่ยวกับการเปิดตัว Raspberry Pi Zero ซึ่งกลายเป็นว่ามีขนาดเล็กมากจนสองตัวสามารถใส่ลงในช่องได้... หรือบางทีอาจเป็นสามตัวด้วยซ้ำ ได้รับการสั่งซื้อทันทีพร้อมกับการ์ดหน่วยความจำ 64 GB, Bluetooth, “นกหวีด” และสาย Micro USB ไม่กี่วันต่อมา ทั้งหมดนี้ก็มาถึง และเพื่อนๆ ที่มองเห็นได้ช่วยผู้เขียนเตรียมแผนที่ ทุกอย่างทำงานได้ทันทีตามที่ควร

สิ่งที่ทำเพื่อสิ่งนี้

ที่ด้านหลังของ Handy Tech Active Star 40 มีพอร์ต USB สองพอร์ตสำหรับอุปกรณ์เช่นคีย์บอร์ด มีคีย์บอร์ดขนาดเล็กพร้อมที่ยึดแม่เหล็กมาให้ด้วย เมื่อเชื่อมต่อแป้นพิมพ์แล้ว และจอแสดงผลทำงานผ่านบลูทูธ คอมพิวเตอร์จะรับรู้เพิ่มเติมว่าเป็นแป้นพิมพ์บลูทูธ

ดังนั้น หากคุณเชื่อมต่อ "นกหวีด" บลูทูธกับ Raspberry Pi Zero ที่วางอยู่ในช่องใส่สมาร์ทโฟน มันจะสามารถสื่อสารกับจอแสดงผลอักษรเบรลล์ผ่านบลูทูธโดยใช้ BRLTTYและหากคุณเชื่อมต่อคีย์บอร์ดเข้ากับจอแสดงผลด้วย “ราสเบอร์รี่” ก็จะใช้งานได้เช่นกัน

แต่นั่นไม่ใช่ทั้งหมด ในทางกลับกัน "ราสเบอร์รี่" เองก็สามารถเข้าถึงอินเทอร์เน็ตผ่าน Bluetooth PAN จากอุปกรณ์ใด ๆ ที่รองรับ ผู้เขียนได้กำหนดค่าสมาร์ทโฟนและคอมพิวเตอร์ของเขาทั้งที่บ้านและที่ทำงาน แต่ในอนาคตเขาวางแผนที่จะดัดแปลง "ราสเบอร์รี่" อื่นสำหรับสิ่งนี้ - แบบคลาสสิกไม่ใช่ Zero ซึ่งเชื่อมต่อกับอีเธอร์เน็ตและ "นกหวีด" บลูทูธอื่น

BlueZ5 และ PAN

วิธีการกำหนดค่า PAN โดยใช้ Bluez กลับกลายเป็นไม่ชัดเจน ผู้เขียนพบสคริปต์ bt-pan Python (ดูด้านล่าง) ซึ่งช่วยให้คุณกำหนดค่า PAN โดยไม่ต้องใช้ GUI

สามารถใช้เพื่อกำหนดค่าทั้งเซิร์ฟเวอร์และไคลเอนต์ เมื่อได้รับคำสั่งที่เหมาะสมผ่าน D-Bus เมื่อทำงานในโหมดไคลเอนต์ มันจะสร้างอุปกรณ์เครือข่ายใหม่ bnep0 ทันทีหลังจากสร้างการเชื่อมต่อกับเซิร์ฟเวอร์ โดยทั่วไปแล้ว DHCP จะใช้เพื่อกำหนดที่อยู่ IP ให้กับอินเทอร์เฟซนี้ ในโหมดเซิร์ฟเวอร์ BlueZ ต้องใช้ชื่ออุปกรณ์บริดจ์ซึ่งสามารถเพิ่มอุปกรณ์ทาสเพื่อเชื่อมต่อไคลเอนต์แต่ละตัวได้ การกำหนดค่าที่อยู่สำหรับอุปกรณ์บริดจ์และการรันเซิร์ฟเวอร์ DHCP บวกกับการปิดบัง IP บนบริดจ์นั้นเป็นสิ่งที่จำเป็นทั้งหมด

จุดเชื่อมต่อ Bluetooth PAN พร้อม Systemd

ในการกำหนดค่าบริดจ์ ผู้เขียนใช้ systemd-networkd:

ไฟล์ /etc/systemd/network/pan.netdev

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

ไฟล์ /etc/systemd/network/pan.network

[Match]
Name=pan

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

ตอนนี้เราต้องบังคับให้ BlueZ กำหนดค่าโปรไฟล์ NAP ปรากฎว่าไม่สามารถทำได้ด้วยยูทิลิตี้ BlueZ 5.36 มาตรฐาน หากผู้เขียนผิด ให้แก้ไข: mlang (ขยับหูได้) กูรูตาบอด (บางครั้งก็เข้าถึงและควอนตัม)

แต่เขาพบว่า โพสต์บล็อก и สคริปต์หลาม เพื่อโทรที่จำเป็นไปยัง D-Bus

เพื่อความสะดวก ผู้เขียนใช้บริการ Systemd เพื่อเรียกใช้สคริปต์และตรวจสอบว่าการขึ้นต่อกันได้รับการแก้ไขหรือไม่

ไฟล์ /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

ไฟล์ /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

ไฟล์ที่สองไม่จำเป็นหาก Debian รองรับ IPMasquerade= (ดูด้านล่าง) #787480).

หลังจากดำเนินการตามคำสั่งแล้ว systemcat-daemon-reload и systemctl รีสตาร์ท systemd-networkd คุณสามารถเริ่ม Bluetooth PAN ด้วยคำสั่ง systemctl เริ่มแพน

ไคลเอนต์ Bluetooth PAN โดยใช้ Systemd

ฝั่งไคลเอ็นต์ยังกำหนดค่าได้ง่ายโดยใช้ Systemd

ไฟล์ /etc/systemd/network/pan-client.network

[Match]
Name=bnep*

[Network]
DHCP=yes

ไฟล์ /etc/systemd/system/[ป้องกันอีเมล]

[Unit]
Description=Bluetooth Personal Area Network client

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

หลังจากโหลดการกำหนดค่าใหม่แล้ว คุณสามารถเชื่อมต่อกับจุดเชื่อมต่อ Bluetooth ที่ระบุได้ดังนี้:

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

การจับคู่โดยใช้บรรทัดคำสั่ง

แน่นอนว่าจะต้องกำหนดค่าเซิร์ฟเวอร์และไคลเอนต์หลังจากจับคู่ผ่าน Bluetooth แล้ว บนเซิร์ฟเวอร์คุณต้องรัน bluetoothctl และให้คำสั่ง:

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

หลังจากเริ่มการสแกน ให้รอสักครู่จนกว่าอุปกรณ์ที่คุณต้องการจะปรากฏในรายการ จดที่อยู่ของมันและใช้โดยออกคำสั่ง pair และคำสั่ง trust หากจำเป็น

ในฝั่งไคลเอ็นต์ คุณต้องทำสิ่งเดียวกัน แต่ไม่จำเป็นต้องใช้คำสั่ง trust อย่างแน่นอน เซิร์ฟเวอร์จำเป็นต้องยอมรับการเชื่อมต่อโดยใช้โปรไฟล์ NAP โดยไม่ต้องมีการยืนยันด้วยตนเองจากผู้ใช้

ผู้เขียนไม่แน่ใจว่านี่เป็นลำดับคำสั่งที่เหมาะสมที่สุด บางทีสิ่งที่จำเป็นก็คือการจับคู่ไคลเอนต์กับเซิร์ฟเวอร์และรันคำสั่ง trust บนเซิร์ฟเวอร์ แต่เขายังไม่ได้ลองเลย

การเปิดใช้งานโปรไฟล์ Bluetooth HID

Raspberry จำเป็นต้องจดจำคีย์บอร์ดที่เชื่อมต่อกับจอแสดงผลอักษรเบรลล์ด้วยสาย และส่งผ่านจอแสดงผลผ่านบลูทูธ จะทำในลักษณะเดียวกันเท่านั้นแทน ตัวแทนบน จำเป็นต้องออกคำสั่ง ตัวแทน KeyboardOnly และ bluetoothctl จะค้นหาอุปกรณ์ที่มีโปรไฟล์ HID

แต่การตั้งค่า Bluetooth ผ่านบรรทัดคำสั่งนั้นซับซ้อนเล็กน้อย

แม้ว่าผู้เขียนจะจัดการกำหนดค่าทุกอย่างได้ แต่เขาเข้าใจว่าการกำหนดค่า BlueZ ผ่านบรรทัดคำสั่งนั้นไม่สะดวก ในตอนแรกเขาคิดว่าตัวแทนจำเป็นต้องป้อนรหัส PIN เท่านั้น แต่กลับกลายเป็นว่า หากต้องการเปิดใช้งานโปรไฟล์ HID คุณต้องพิมพ์ "agent KeyboardOnly" น่าแปลกใจที่ในการเปิดตัว Bluetooth PAN คุณจะต้องปีนผ่านที่เก็บข้อมูลเพื่อค้นหาสคริปต์ที่ต้องการ เขาจำได้ว่าใน BlueZ เวอร์ชันก่อนหน้ามีเครื่องมือสำเร็จรูปสำหรับสิ่งนี้ แพน - เขาไปอยู่ที่ไหนใน BlueZ 5? ทันใดนั้นวิธีแก้ปัญหาใหม่ก็ปรากฏขึ้นโดยผู้เขียนไม่รู้จัก แต่นอนอยู่บนพื้นผิว?

การปฏิบัติ

ความเร็วในการถ่ายโอนข้อมูลอยู่ที่ประมาณ 120 kbit/s ซึ่งถือว่าเพียงพอแล้ว โปรเซสเซอร์ ARM 1GHz นั้นเร็วมากสำหรับอินเทอร์เฟซบรรทัดคำสั่ง ผู้เขียนยังคงวางแผนที่จะใช้ ssh และ emacs บนอุปกรณ์เป็นหลัก

แบบอักษรคอนโซลและความละเอียดหน้าจอ

ความละเอียดหน้าจอเริ่มต้นที่ใช้โดย framebuffer บน Raspberry Pi Zero นั้นค่อนข้างแปลก: fbset รายงานว่าเป็น 656x416 พิกเซล (แน่นอนว่าไม่ได้เชื่อมต่อจอภาพ) ด้วยฟอนต์คอนโซลขนาด 8×16 มี 82 ตัวอักษรต่อบรรทัด และ 26 บรรทัด

การทำงานกับจอแสดงผลอักษรเบรลล์ 40 ตัวอักษรในโหมดนี้ไม่สะดวก ผู้เขียนอยากเห็นอักขระ Unicode ที่แสดงเป็นอักษรเบรลล์ด้วย โชคดีที่ Linux รองรับ 512 อักขระ และแบบอักษรคอนโซลส่วนใหญ่มี 256 ตัว เมื่อใช้การตั้งค่าคอนโซล คุณจะสามารถใช้แบบอักษร 256 อักขระสองตัวร่วมกันได้ ผู้เขียนเพิ่มบรรทัดต่อไปนี้ในไฟล์ /etc/default/console-setup:

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

หมายเหตุ: หากต้องการให้ฟอนต์ brl-16×8.psf ใช้งานได้ คุณจะต้องติดตั้ง console-braille

ทำอะไรต่อไป

จอแสดงผลอักษรเบรลล์มีแจ็ค 3,5 มม. แต่ผู้เขียนไม่ทราบถึงอะแดปเตอร์สำหรับรับสัญญาณเสียงจาก Mini-HDMI ผู้เขียนไม่สามารถใช้การ์ดเสียงที่มีอยู่ใน Raspberry ได้ (น่าแปลกที่นักแปลแน่ใจว่า Zero ไม่มีการ์ดเสียง แต่มีวิธีส่งสัญญาณเสียงโดยใช้ PWM ไปยัง GPIO) เขาวางแผนที่จะใช้ฮับ USB-OTG และเชื่อมต่อการ์ดภายนอกและเสียงที่ส่งออกไปยังลำโพงที่ติดตั้งในจอแสดงผลอักษรเบรลล์ ด้วยเหตุผลบางอย่าง การ์ดภายนอกสองใบใช้งานไม่ได้ ตอนนี้เขากำลังมองหาอุปกรณ์ที่คล้ายกันบนชิปเซ็ตอื่น

การปิด "ราสเบอร์รี่" ด้วยตนเองไม่สะดวกเช่นกันรอสักครู่แล้วปิดจอแสดงผลอักษรเบรลล์ และทั้งหมดเป็นเพราะเมื่อปิดเครื่อง เครื่องจะดึงกระแสไฟออกจากขั้วต่อในช่อง ผู้เขียนวางแผนที่จะวางแบตเตอรี่บัฟเฟอร์ขนาดเล็กไว้ในช่องและแจ้ง Raspberry เกี่ยวกับการปิดจอแสดงผลผ่าน GPIO เพื่อให้สามารถเริ่มปิดการทำงานได้ นี่คือ UPS ขนาดเล็ก

ภาพระบบ

หากคุณมีเครื่องแสดงผลอักษรเบรลล์แบบเดียวกันและต้องการทำเช่นเดียวกัน ผู้เขียนก็พร้อมที่จะจัดเตรียมภาพระบบสำเร็จรูป (ตาม Raspbian Stretch) เขียนถึงเขาเกี่ยวกับเรื่องนี้ตามที่อยู่ที่ระบุไว้ข้างต้น หากมีคนสนใจมากพอ ก็สามารถปล่อยชุดอุปกรณ์ที่มีทุกสิ่งที่จำเป็นสำหรับการดัดแปลงดังกล่าวได้

บลาโกดาเรนนอสตี

ขอบคุณ Dave Mielke สำหรับการพิสูจน์อักษร

ขอบคุณ Simon Kainz สำหรับภาพประกอบภาพถ่าย

ขอขอบคุณเพื่อนร่วมงานของฉันที่ Graz Technical University ที่แนะนำผู้เขียนให้รู้จักกับโลกของ Raspberry Pi อย่างรวดเร็ว

PS ทวีตแรก ผู้เขียนในหัวข้อนี้ (ไม่เปิด - ผู้แปล) จัดทำขึ้นเพียงห้าวันก่อนการตีพิมพ์ต้นฉบับของบทความนี้และถือได้ว่างานได้รับการแก้ไขในทางปฏิบัติแล้ว ยกเว้นปัญหาเรื่องเสียง อย่างไรก็ตาม ผู้เขียนได้แก้ไขข้อความเวอร์ชันสุดท้ายจาก "จอแสดงผลอักษรเบรลล์แบบพอเพียง" ที่เขาสร้างขึ้น โดยเชื่อมต่อผ่าน SSH เข้ากับคอมพิวเตอร์ที่บ้าน

ที่มา: will.com

เพิ่มความคิดเห็น