Raspberry Pi Zero در صفحه نمایش بریل Handy Tech Active Star 40

Raspberry Pi Zero در صفحه نمایش بریل Handy Tech Active Star 40

نویسنده یک Raspberry Pi Zero، یک سوت بلوتوث و یک کابل را درون صفحه نمایش بریل جدید Handy Tech Active Star 40 خود قرار داده است. یک پورت USB داخلی انرژی را تامین می کند. نتیجه یک کامپیوتر بدون مانیتور خودکفا در ARM با سیستم عامل لینوکس، مجهز به صفحه کلید و نمایشگر خط بریل بود. شما می توانید آن را از طریق USB شارژ یا تغذیه کنید. از پاوربانک یا شارژر خورشیدی. بنابراین، می تواند چندین ساعت، اما برای چند روز بدون برق کار کند.

Raspberry Pi Zero در صفحه نمایش بریل Handy Tech Active Star 40

تمایز ابعادی نمایشگرهای بریل

اول از همه، آنها در طول خط متفاوت هستند. دستگاه هایی با ظرفیت 60 یا بیشتر برای کار با رایانه رومیزی مناسب هستند، در حالی که دستگاه هایی با ظرفیت 40 برای حمل با لپ تاپ مناسب هستند. اکنون نمایشگرهای بریل به تلفن‌های هوشمند و تبلت‌ها با طول خط ۱۴ یا ۱۸ کاراکتر متصل هستند.

در گذشته، نمایشگرهای بریل بسیار عظیم بودند. به عنوان مثال، لپ تاپ 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 گیگابایتی، بلوتوث، "سوت" و یک کابل Micro USB سفارش داده شد. چند روز بعد همه اینها رسید و دوستان بینا در تهیه نقشه به نویسنده کمک کردند. همه چیز بلافاصله همانطور که باید کار کرد.

برای این کار چه شد

در پشت Handy Tech Active Star 40 دو درگاه USB برای دستگاه هایی مانند صفحه کلید وجود دارد. یک صفحه کلید با اندازه کوچک با پایه مغناطیسی همراه است. هنگامی که صفحه کلید متصل است، و نمایشگر خود از طریق بلوتوث کار می کند، رایانه علاوه بر این، آن را به عنوان یک صفحه کلید بلوتوث تشخیص می دهد.

بنابراین، اگر یک "سوت" بلوتوث را به Raspberry Pi Zero که در محفظه گوشی هوشمند قرار داده شده است وصل کنید، می تواند با استفاده از بلوتوث با نمایشگر بریل ارتباط برقرار کند. BRLTTYو اگر یک صفحه کلید را نیز به نمایشگر وصل کنید، "رزبری" نیز با آن کار خواهد کرد.

اما این همه ماجرا نیست. خود "رزبری" نیز به نوبه خود می تواند از طریق بلوتوث PAN از هر دستگاهی که از آن پشتیبانی می کند به اینترنت دسترسی داشته باشد. نویسنده بر این اساس گوشی هوشمند و رایانه های خود را در خانه و محل کار پیکربندی کرده است، اما در آینده قصد دارد "تمشک" دیگری را برای این کار تطبیق دهد - یک کلاسیک، نه صفر، متصل به اترنت و یک "سوت" بلوتوث دیگر.

BlueZ 5 و PAN

روش پیکربندی PAN با استفاده از بلوز معلوم شد نامشخص است نویسنده اسکریپت bt-pan پایتون را پیدا کرده است (به زیر مراجعه کنید)، که به شما امکان می دهد PAN را بدون رابط کاربری گرافیکی پیکربندی کنید.

می توان از آن برای پیکربندی سرور و کلاینت استفاده کرد. با دریافت فرمان مناسب از طریق D-Bus هنگام کار در حالت مشتری، بلافاصله پس از برقراری ارتباط با سرور، یک دستگاه شبکه جدید bnep0 ایجاد می کند. به طور معمول، DHCP برای اختصاص یک آدرس IP به این رابط استفاده می شود. در حالت سرور، BlueZ به نام یک دستگاه پل نیاز دارد که می تواند یک دستگاه برده برای اتصال هر مشتری به آن اضافه کند. پیکربندی یک آدرس برای دستگاه بریج و اجرای یک سرور DHCP به اضافه IP مخفی شده روی پل معمولاً تمام چیزی است که مورد نیاز است.

نقطه دسترسی بلوتوث 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 انجام داد. اگر نویسنده اشتباه می کند، او را تصحیح کنید: ملانگ (می تواند گوش هایش را حرکت دهد) گورو کور (گاهی اوقات دسترسی و کوانتومی)

اما او پیدا کرد پست وبلاگ и اسکریپت پایتون برای برقراری تماس های لازم با 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

اگر دبیان پشتیبانی IPMasquerade= را داشته باشد، به فایل دوم نیازی نخواهد بود (به زیر مراجعه کنید). #787480).

پس از اجرای دستورات systemctl daemon-reload и راه اندازی مجدد systemctl systemd-networkd می توانید بلوتوث PAN را با دستور راه اندازی کنید systemctl start pan

کلاینت بلوتوث 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

اکنون، پس از بارگیری مجدد پیکربندی، می توانید به صورت زیر به نقطه دسترسی بلوتوث مشخص شده متصل شوید:

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

جفت شدن با استفاده از خط فرمان

البته پیکربندی سرور و کلاینت ها باید پس از جفت شدن از طریق بلوتوث انجام شود. در سرور باید 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

پس از شروع اسکن، چند ثانیه صبر کنید تا دستگاه مورد نیاز شما در لیست ظاهر شود. آدرس آن را یادداشت کرده و با صدور دستور جفت و در صورت لزوم فرمان اعتماد از آن استفاده کنید.

در سمت کلاینت، شما باید همین کار را انجام دهید، اما قطعاً به دستور trust نیازی نیست. سرور برای پذیرش اتصال با استفاده از نمایه NAP بدون تأیید دستی توسط کاربر به آن نیاز دارد.

نویسنده مطمئن نیست که این توالی بهینه دستورات است. شاید تنها چیزی که نیاز باشد جفت کردن مشتری با سرور و اجرای دستور اعتماد بر روی سرور باشد، اما او هنوز این کار را امتحان نکرده است.

فعال کردن نمایه بلوتوث HID

لازم است که Raspberry صفحه کلیدی را که با سیم به صفحه نمایش بریل متصل است و توسط خود نمایشگر از طریق بلوتوث منتقل می شود، تشخیص دهد. این کار به همان روش انجام می شود، فقط در عوض عامل در نیاز به دستور دادن نماینده فقط صفحه کلید و bluetoothctl دستگاهی با نمایه HID پیدا می کند.

اما تنظیم بلوتوث از طریق خط فرمان کمی پیچیده است

اگرچه نویسنده موفق شد همه چیز را پیکربندی کند، اما می‌داند که پیکربندی BlueZ از طریق خط فرمان ناخوشایند است. در ابتدا او فکر کرد که نمایندگان فقط برای وارد کردن کدهای پین مورد نیاز هستند، اما به عنوان مثال مشخص شد که برای فعال کردن نمایه HID باید "agent KeyboardOnly" را تایپ کنید. تعجب آور است که برای راه اندازی بلوتوث PAN باید از مخازن عبور کنید و اسکریپت مورد نیاز را جستجو کنید. او به یاد می آورد که در نسخه قبلی BlueZ یک ابزار آماده برای این کار وجود داشت پاند کردن - او در BlueZ 5 کجا کار می کند؟ ناگهان راه حل جدیدی ظاهر شد که برای نویسنده ناشناخته بود، اما روی سطح قرار داشت؟

کارایی

سرعت انتقال اطلاعات تقریباً 120 کیلوبیت بر ثانیه بود که کاملاً کافی است. پردازنده ARM 1 گیگاهرتزی برای رابط خط فرمان بسیار سریع است. نویسنده همچنان قصد دارد عمدتاً از ssh و emacs در دستگاه استفاده کند.

فونت های کنسول و وضوح صفحه نمایش

وضوح صفحه نمایش پیش فرض استفاده شده توسط فریم بافر در Raspberry Pi Zero بسیار عجیب است: fbset آن را به عنوان 656x416 پیکسل گزارش می کند (البته هیچ مانیتور متصل نیست). با فونت کنسول 8×16، 82 کاراکتر در هر خط و 26 خط وجود داشت.

کار با نمایشگر 40 کاراکتری بریل در این حالت ناخوشایند است. نویسنده همچنین مایل است کاراکترهای یونیکد را به خط بریل نمایش دهد. خوشبختانه لینوکس از 512 کاراکتر پشتیبانی می کند و اکثر فونت های کنسول دارای 256 کاراکتر هستند. نویسنده خطوط زیر را به فایل /etc/default/console-setup اضافه کرده است:

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

توجه: برای در دسترس قرار دادن فونت brl-16×8.psf، باید کنسول بریل را نصب کنید.

گام بعدی چیست؟

صفحه نمایش خط بریل دارای جک 3,5 میلی متری است، اما نویسنده از آداپتورهایی برای دریافت سیگنال صوتی از Mini-HDMI اطلاعی ندارد. نویسنده نتوانست از کارت صدای تعبیه شده در Raspberry استفاده کند (به طور عجیبی، مترجم مطمئن بود که Zero یکی ندارد، اما راه هایی برای خروج صدا با استفاده از PWM به GPIO وجود دارد). او قصد دارد از یک هاب USB-OTG استفاده کند و یک کارت خارجی و صدای خروجی را به بلندگوی تعبیه شده در صفحه نمایش بریل متصل کند. به دلایلی، دو کارت خارجی کار نکردند؛ اکنون او به دنبال یک دستگاه مشابه در یک چیپست متفاوت است.

همچنین خاموش کردن دستی "رزبری"، چند ثانیه صبر کردن و خاموش کردن نمایشگر بریل ناخوشایند است. و همه به این دلیل است که وقتی خاموش می شود، برق را از کانکتور موجود در محفظه خارج می کند. نویسنده قصد دارد یک باتری بافر کوچک در محفظه قرار دهد و از طریق GPIO، Raspberry را در مورد خاموش شدن نمایشگر مطلع کند تا بتواند کار خود را خاموش کند. این یک یو پی اس مینیاتوری است.

تصویر سیستم

اگر همان نمایشگر خط بریل را دارید و مایلید همین کار را با آن انجام دهید، نویسنده آماده است تصویری آماده از سیستم (بر اساس Raspbian Stretch) ارائه دهد. در این مورد به آدرس ذکر شده در بالا برای او بنویسید. اگر افراد علاقه مند به اندازه کافی وجود داشته باشد، حتی می توان کیت هایی را منتشر کرد که شامل همه چیزهایی است که برای چنین اصلاحی لازم است.

تقدیر و تشکر

با تشکر از Dave Mielke برای تصحیح.

با تشکر از Simon Kainz برای تصاویر عکس.

از همکارانم در دانشگاه فنی گراتس برای معرفی سریع نویسنده با دنیای Raspberry Pi تشکر می کنم.

PS اولین توییت نویسنده در این موضوع (باز نمی شود - مترجم) درست پنج روز قبل از انتشار اصل این مقاله ساخته شده است و می توان در نظر گرفت که به استثنای مشکلات صدا، کار عملاً حل شده است. به هر حال، نویسنده نسخه نهایی متن را از یک "نمایشگر بریل خودکفا" که ساخته بود ویرایش کرد و آن را از طریق SSH به رایانه خانگی خود متصل کرد.

منبع: www.habr.com

اضافه کردن نظر