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 ويعمل بنظام التشغيل 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 جيجابايت وبلوتوث و"صافرة" وكابل Micro USB. وبعد بضعة أيام وصل كل هذا، وساعد الأصدقاء المبصرون المؤلف في إعداد الخريطة. كل شيء يعمل على الفور كما ينبغي.

ماذا تم من أجل هذا

يوجد في الجزء الخلفي من Handy Tech Active Star 40 منفذي USB لأجهزة مثل لوحات المفاتيح. يتم تضمين لوحة مفاتيح صغيرة الحجم مع حامل مغناطيسي. عندما تكون لوحة المفاتيح متصلة، وتعمل الشاشة نفسها عبر Bluetooth، يتعرف الكمبيوتر عليها أيضًا على أنها لوحة مفاتيح Bluetooth.

وبالتالي، إذا قمت بتوصيل "صافرة" بلوتوث بجهاز Raspberry Pi Zero الموجود في حجرة الهاتف الذكي، فسيكون قادرًا على الاتصال بشاشة برايل عبر البلوتوث باستخدام برلتيوإذا قمت أيضًا بتوصيل لوحة المفاتيح بالشاشة، فستعمل "التوت" معها أيضًا.

ولكن هذا ليس كل شيء. ويمكن لـ "التوت" نفسه بدوره الوصول إلى الإنترنت عبر Bluetooth PAN من أي جهاز يدعمه. قام المؤلف بتكوين هاتفه الذكي وأجهزة الكمبيوتر في المنزل وفي العمل وفقًا لذلك، لكنه يخطط في المستقبل لتكييف "توت العليق" آخر لهذا - جهاز كلاسيكي، وليس صفرًا، متصل بشبكة إيثرنت و"صافرة" بلوتوث أخرى.

بلوز 5 وبان

طريقة تكوين PAN باستخدام BlueZ تبين أنها غير واضحة. عثر المؤلف على نص bt-pan Python (انظر أدناه)، والذي يسمح لك بتكوين 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-loading и systemctl إعادة تشغيل systemd-networkd يمكنك بدء تشغيل Bluetooth PAN باستخدام الأمر عموم بدء systemctl

عميل Bluetooth PAN باستخدام Systemd

من السهل أيضًا تكوين جانب العميل باستخدام Systemd.

الملف /etc/systemd/network/pan-client.network

[Match]
Name=bnep*

[Network]
DHCP=yes

الملف /الخ/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

الاقتران باستخدام سطر الأوامر

بالطبع، يجب أن يتم تكوين الخادم والعملاء بعد إقرانهم عبر البلوتوث. على الخادم تحتاج إلى تشغيل 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

بعد بدء الفحص، انتظر بضع ثوانٍ حتى يظهر الجهاز الذي تحتاجه في القائمة. قم بتدوين عنوانه واستخدمه عن طريق إصدار أمر الزوج وأمر الثقة إذا لزم الأمر.

من ناحية العميل، عليك أن تفعل الشيء نفسه، ولكن أمر الثقة ليس ضروريًا بالتأكيد. يحتاج الخادم إلى قبول الاتصال باستخدام ملف تعريف NAP دون تأكيد يدوي من قبل المستخدم.

المؤلف غير متأكد من أن هذا هو التسلسل الأمثل للأوامر. ربما كل ما هو مطلوب هو إقران العميل بالخادم وتشغيل أمر الثقة على الخادم، لكنه لم يجرب ذلك بعد.

تمكين ملف تعريف بلوتوث HID

من الضروري أن يتعرف Raspberry على لوحة المفاتيح المتصلة بشاشة عرض برايل عن طريق السلك، ويتم إرسالها بواسطة الشاشة نفسها عبر البلوتوث. ويتم ذلك بنفس الطريقة، فقط بدلا من ذلك وكيل على بحاجة إلى إعطاء الأمر وكيل لوحة المفاتيح فقط وسوف يجد bluetoothctl جهازًا به ملف تعريف HID.

لكن إعداد البلوتوث عبر سطر الأوامر أمر معقد بعض الشيء

على الرغم من أن المؤلف تمكن من تكوين كل شيء، إلا أنه يفهم أن تكوين BlueZ من خلال سطر الأوامر غير مريح. في البداية، اعتقد أن الوكلاء يحتاجون فقط إلى إدخال رموز PIN، ولكن اتضح، على سبيل المثال، أنه لتمكين ملف تعريف HID، تحتاج إلى كتابة "agent KeyboardOnly". من المدهش أنه لتشغيل Bluetooth PAN، يتعين عليك التنقل عبر المستودعات بحثًا عن البرنامج النصي المطلوب. يتذكر أنه في الإصدار السابق من BlueZ كانت هناك أداة جاهزة لهذا الغرض PAND - أين يفعل في BlueZ 5؟ وفجأة ظهر حل جديد غير معروف للمؤلف ولكنه ظاهر على السطح؟

أداء

كانت سرعة نقل البيانات حوالي 120 كيلوبت/ثانية، وهو ما يكفي تمامًا. يعد معالج ARM بسرعة 1 جيجا هرتز سريعًا جدًا بالنسبة لواجهة سطر الأوامر. لا يزال المؤلف يخطط لاستخدام ssh وemacs بشكل أساسي على الجهاز.

خطوط وحدة التحكم ودقة الشاشة

دقة الشاشة الافتراضية التي يستخدمها مخزن الإطارات المؤقت في Raspberry Pi Zero غريبة جدًا: يبلغ fbset أنها 656 × 416 بكسل (لا توجد شاشة متصلة بالطبع). مع خط وحدة التحكم 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 وتوصيل بطاقة خارجية وإخراج الصوت إلى مكبر الصوت المدمج في شاشة برايل. لسبب ما، لم تعمل بطاقتان خارجيتان، وهو الآن يبحث عن جهاز مماثل على شرائح مختلفة.

من غير الملائم أيضًا إيقاف تشغيل "التوت" يدويًا والانتظار بضع ثوانٍ وإيقاف تشغيل شاشة برايل. وكل ذلك لأنه عند إيقاف تشغيله، فإنه يزيل الطاقة من الموصل الموجود في الحجرة. يخطط المؤلف لوضع بطارية عازلة صغيرة في الحجرة، ومن خلال GPIO، لإبلاغ Raspberry بإيقاف تشغيل الشاشة، حتى يتمكن من البدء في إيقاف عملها. هذا هو UPS في مصغرة.

صورة النظام

إذا كان لديك نفس شاشة برايل وترغب في فعل الشيء نفسه معها، فإن المؤلف مستعد لتقديم صورة جاهزة للنظام (استنادًا إلى Raspbian Stretch). اكتب له عن هذا على العنوان المذكور أعلاه. إذا كان هناك عدد كاف من الأشخاص المهتمين، فمن الممكن أيضًا إصدار مجموعات تتضمن كل ما هو ضروري لمثل هذا التعديل.

شكر وتقدير

بفضل ديف ميلكي للتدقيق اللغوي.

شكرًا لسيمون كاينز على الرسوم التوضيحية للصور.

شكرًا لزملائي في جامعة غراتس التقنية لتعريف المؤلف بسرعة بعالم Raspberry Pi.

PS أول تغريدة تم عمل المؤلف حول هذا الموضوع (لا يفتح - مترجم) قبل خمسة أيام فقط من نشر النسخة الأصلية من هذه المقالة، ويمكن اعتبار أنه، باستثناء مشاكل الصوت، تم حل المهمة عمليا. بالمناسبة، قام المؤلف بتحرير النسخة النهائية من النص من "شاشة برايل مكتفية ذاتيا" التي صنعها، وربطها عبر SSH بجهاز الكمبيوتر المنزلي الخاص به.

المصدر: www.habr.com

إضافة تعليق