èè
ã¯ãRaspberry Pi ZeroãBluetooth ãã€ãã¹ã«ãããã³ã±ãŒãã«ãæ°ãã Handy Tech Active Star 40 ç¹åãã£ã¹ãã¬ã€å
ã«é
眮ããå
èµ USB ããŒãããé»åãäŸçµŠããŸããã ãã®çµæãARM äžã« Linux ãªãã¬ãŒãã£ã³ã° ã·ã¹ãã ãæèŒããããŒããŒããšç¹åãã£ã¹ãã¬ã€ãåããèªç«åã®ã¢ãã¿ãŒã¬ã¹ ã³ã³ãã¥ãŒã¿ãŒãå®æããŸããã USBçµç±ã§å
é»/絊é»ã§ããŸãã ãã¯ãŒãã³ã¯ãŸãã¯ãœãŒã©ãŒå
é»åšããã ãããã£ãŠã圌ã¯æ°æéããããæ°æ¥éã¯é»åãªãã§éããããšãã§ããŸãã
ç¹åãã£ã¹ãã¬ã€ã®å¯žæ³å·®å¥å
ãŸãç·ã®é·ããéããŸãã 60 以äžã®å®¹éã®ããã€ã¹ã¯ãã¹ã¯ããã ã³ã³ãã¥ãŒã¿ã§ã®äœæ¥ã«é©ããŠããã40 容éã®ããã€ã¹ã¯ã©ããããããšäžç·ã«æã¡éã¶ã®ã«äŸ¿å©ã§ãã çŸåšãã¹ããŒããã©ã³ãã¿ãã¬ããã«æ¥ç¶ãããç¹åãã£ã¹ãã¬ã€ãããã14 è¡ã®é·ã㯠18 æåãŸã㯠XNUMX æåã§ãã
以åã¯ãç¹åãã£ã¹ãã¬ã€ã¯éåžžã«å€§èŠæš¡ãªãã®ã§ããã ããšãã°ã40 åžã®ã©ãããããã¯ã13 ã€ã³ãã®ã©ããããããšåããµã€ãºãšééã§ããã ããŠãåãæ°ã®ç¥ãåããããŠãããã£ã¹ãã¬ã€ã¯ã©ãããããã§ã¯ãªããã©ãããããã®åã«ãã£ã¹ãã¬ã€ã眮ãããšãã§ããã»ã©å°åã§ãã
ãã¡ãããããã¯åªããŠããŸããã40 ã€ã®å¥ã ã®ããã€ã¹ãèã®äžã«çœ®ãã®ã¯ãŸã ããŸã䟿å©ã§ã¯ãããŸããã ãã¹ã¯ã§äœæ¥ããå Žåã«ã¯äœã®äžæºããããŸããããã©ãããããã¯å¥ã®ååã§åŒã°ããããšãèŠããŠãã䟡å€ãããããã®ååãæ£åœåããããšãããšãå°åã® XNUMX æåãã£ã¹ãã¬ã€ã¯ããã«äžäŸ¿ã«ãªãããšãããããŸãã
ããã§çè ã¯ãããŠããæåŸ ãããŠãããã³ãã£ããã¯ã¹ã¿ãŒã·ãªãŒãºã®æ°ã¢ãã«ã®çºå£²ãåŸ ã£ãŠããã 2002幎ã«ããŒãããœã³ã³ãèŒããããã»ã©ã®æ¬äœé¢ç©ãåããåã¢ãã«ããã³ãã£ããã¯ç¹åã¹ã¿ãŒ40ããçºå£²ãããŸããã ãµã€ãºãåããªãå Žåã¯ã䌞瞮åŒã¹ã¿ã³ãããå©çšãã ããã çŸåšããã®ã¢ãã«ã¯ Active Star 40 ã«çœ®ãæããããŠããŸããActive Star XNUMX ã¯ã»ãŒåãã§ãããé»åæ©åšãã¢ããã°ã¬ãŒããããŠããŸãã
æ ŒçŽåŒã¹ã¿ã³ãããã®ãŸãŸã§ãã
ããããæ°è£œåã§æã䟿å©ãªã®ã¯ãã¹ããŒããã©ã³ãšã»ãŒåããµã€ãºã®ããŒã¿ã§ãïŒKDPVãåç
§ïŒã ãã©ãããã©ãŒã ãåŸæ¹ã«ç§»åãããšéããŸãã ããã«ã¹ããŒããã©ã³ãä¿æããã®ã¯äžäŸ¿ã§ããããšãå€æããŸããããäœããã®æ¹æ³ã§ç©ºã®ã³ã³ããŒãã¡ã³ãã䜿çšããå¿
èŠãããããã®äžã«ã¯é»æºã³ã³ã»ã³ãããããŸãã
èè ãæåã«æãã€ããã®ã¯ãRaspberry Piãããã«çœ®ãããšã§ãããããã£ã¹ãã¬ã€ãè³Œå ¥ãããšãã«ãã³ã³ããŒãã¡ã³ããèŠãã¹ã¿ã³ãããã©ãºããªãŒããšäžç·ã«æ»ã蟌ãŸãªãããšãå€æããŸããã åºæ¿ãããš 3 mm èãã£ããâŠ
ããããååã Raspberry Pi Zero ã®ãªãªãŒã¹ã«ã€ããŠæããŠãããŸãããRaspberry Pi Zero ã¯éåžžã«å°åã§ãã³ã³ããŒãã¡ã³ãã« 64 å°ããããã¯ãããã XNUMX å°ãåãŸãã»ã©ã ã£ãããã§ãã XNUMX GBã®ã¡ã¢ãªã«ãŒããBluetoothãããã€ãã¹ã«ããMicro USBã±ãŒãã«ãšäžç·ã«ããã«æ³šæããŸããã æ°æ¥åŸãããããã¹ãŠãå°çããç®ã®èŠããå人ãã¡ãèè ã®å°å³äœæãæäŒã£ãŠãããŸããã ãã¹ãŠãããã«æ£åžžã«æ©èœããŸããã
ãã®ããã«äœãè¡ãããã®ã
Handy Tech Active Star 40 ã®èé¢ã«ã¯ãããŒããŒããªã©ã®ããã€ã¹çšã® USB ããŒãã XNUMX ã€ãããŸãã ãã°ãããããŠã³ãä»ãã®å°åããŒããŒããä»å±ããŸãã ããŒããŒããæ¥ç¶ããããã£ã¹ãã¬ã€èªäœã Bluetooth çµç±ã§åäœãããšãã³ã³ãã¥ãŒã¿ãŒã¯ããã«ããã Bluetooth ããŒããŒããšããŠèªèããŸãã
ãããã£ãŠãBluetoothããã€ãã¹ã«ããã¹ããŒããã©ã³ã³ã³ããŒãã¡ã³ãã«é
眮ãããRaspberry Pi Zeroã«æ¥ç¶ãããšãBluetoothçµç±ã§ç¹åãã£ã¹ãã¬ã€ãšéä¿¡ã§ããããã«ãªããŸãã
ããããããã ãã§ã¯ãããŸããã ãã©ãºããªãŒãèªäœã¯ãBluetooth PAN ããµããŒãããä»»æã®ããã€ã¹ãã Bluetooth PAN çµç±ã§ã€ã³ã¿ãŒãããã«ã¢ã¯ã»ã¹ã§ããŸãã èè ã¯èªå® ãšè·å Žã®ã¹ããŒããã©ã³ãšã³ã³ãã¥ãŒã¿ãããã«å¿ããŠèšå®ããŸããããå°æ¥çã«ã¯å¥ã®ãã©ãºããªãŒããããã«é©å¿ãããäºå®ã§ãããŒãã§ã¯ãªããã€ãŒãµããããšå¥ã® Bluetooth ããã€ãã¹ã«ãã«æ¥ç¶ãããå€å žçãªãã®ã§ãã
BlueZ 5 ãš PAN
ã䜿çšãã PAN èšå®æ¹æ³
ããã¯ããµãŒããŒãšã¯ã©ã€ã¢ã³ãã®äž¡æ¹ã®æ§æã«äœ¿çšã§ããŸãã ã¯ã©ã€ã¢ã³ã ã¢ãŒãã§åäœããŠãããšãã« D-Bus çµç±ã§é©åãªã³ãã³ããåä¿¡ãããšããµãŒããŒãšã®æ¥ç¶ã確ç«ããçŽåŸã«æ°ãããããã¯ãŒã¯ ããã€ã¹ bnep0 ãäœæãããŸãã éåžžãDHCP ã¯ããã®ã€ã³ã¿ãŒãã§ã€ã¹ã« IP ã¢ãã¬ã¹ãå²ãåœãŠãããã«äœ¿çšãããŸãã ãµãŒã㌠ã¢ãŒãã§ã¯ãBlueZ ã¯åã¯ã©ã€ã¢ã³ããæ¥ç¶ããããã«ã¹ã¬ãŒã ããã€ã¹ãè¿œå ã§ããããªããž ããã€ã¹ã®ååãå¿ èŠãšããŸãã éåžžãå¿ èŠãªã®ã¯ãããªããž ããã€ã¹ã®ã¢ãã¬ã¹ãèšå®ããããªããžäžã§ DHCP ãµãŒããŒãš IP ãã¹ã«ã¬ãŒããå®è¡ããããšã ãã§ãã
Systemd ã䜿çšãã Bluetooth PAN ã¢ã¯ã»ã¹ ãã€ã³ã
ããªããžãæ§æããããã«ãäœæè 㯠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 (è³ãåããããšãã§ãã) ç²ç® (å Žåã«ãã£ãŠã¯ã¢ã¯ã»ã¹ãšéå) ã®ç¬¬äžäººè
ãããã圌ã¯èŠã€ããŸãã
䟿å®äžãäœæè 㯠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= ããµããŒãããŠããå ŽåãXNUMX çªç®ã®ãã¡ã€ã«ã¯å¿
èŠãããŸãã (以äžãåç
§)ã
ã³ãã³ãã®å®è¡åŸ systemctlããŒã¢ã³ãªããŒã О systemctl restart systemd-networkd 次ã®ã³ãã³ã㧠Bluetooth PAN ãéå§ã§ããŸã systemctl ã¹ã¿ãŒããã³
Systemd ã䜿çšãã Bluetooth PAN ã¯ã©ã€ã¢ã³ã
ã¯ã©ã€ã¢ã³ãåŽã 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 ã³ãã³ããå®è¡ããããšã ãã§ããã圌ã¯ãŸã ãããè©ŠããŠããŸããã
HID Bluetooth ãããã¡ã€ã«ãæå¹ã«ãã
Raspberry ã¯ãç¹åãã£ã¹ãã¬ã€ã«æç·ã§æ¥ç¶ããããã£ã¹ãã¬ã€èªäœãã Bluetooth çµç±ã§éä¿¡ãããããŒããŒããèªèããå¿ èŠããããŸãã ããã¯åãæ¹æ³ã§è¡ãããŸããã代ããã« äžã®ãšãŒãžã§ã³ã ã³ãã³ããäžããå¿ èŠããã ãšãŒãžã§ã³ãããŒããŒãã®ã¿ ãããŠãbluetoothctl 㯠HID ãããã¡ã€ã«ãæã€ããã€ã¹ãèŠã€ããŸãã
ãã ããã³ãã³ãã©ã€ã³çµç±ã§ Bluetooth ãèšå®ããã®ã¯å°ãè€éã§ã
èè ã¯ãã¹ãŠãèšå®ããããšãã§ããŸããããã³ãã³ã ã©ã€ã³ãã BlueZ ãèšå®ããã®ã¯äžäŸ¿ã§ããããšãç解ããŠããŸãã åœåã圌ã¯ãšãŒãžã§ã³ãã PIN ã³ãŒããå ¥åããããšã ããå¿ èŠã ãšèããŠããŸããããããšãã°ãHID ãããã¡ã€ã«ãæå¹ã«ããã«ã¯ãagent KeyboardOnlyããšå ¥åããå¿ èŠãããããšãå€æããŸããã Bluetooth PAN ãèµ·åããã«ã¯ãå¿ èŠãªã¹ã¯ãªãããæ¢ããŠãªããžããªããã©ãå¿ èŠãããããšã¯é©ãã¹ãããšã§ãã 圌ã¯ãBlueZ ã®ä»¥åã®ããŒãžã§ã³ã«ã¯ããã®ããã®æ¢è£œã®ããŒã«ããã£ãããšãèŠããŠããŸãã ãã³ã - 圌㯠BlueZ 5 ã§ã©ãã§äœãããŠããã®ã§ãã? çªç¶ãèè ã«ã¯ç¥ãããŠããªãæ°ãã解決çãçŸããŸããããè¡šé¢äžã«æšªããã£ãŠããã®ã§ããããïŒ
ÐÑПОзвПЎОÑелÑМПÑÑÑ
ããŒã¿è»¢éé床ã¯çŽ120kbit/sãšååãªé床ã§ããã 1GHz ARM ããã»ããµã¯ãã³ãã³ã ã©ã€ã³ ã€ã³ã¿ãŒãã§ã€ã¹ãšããŠã¯éåžžã«é«éã§ãã èè ã¯åŒãç¶ããããã€ã¹äžã§äž»ã« ssh ãš emacs ã䜿çšããäºå®ã§ãã
ã³ã³ãœãŒã«ã®ãã©ã³ããšç»é¢è§£å床
Raspberry Pi Zero ã®ãã¬ãŒã ãããã¡ã§äœ¿çšãããããã©ã«ãã®ç»é¢è§£å床ã¯éåžžã«å¥åŠã§ããfbset ã¯ããã 656x416 ãã¯ã»ã«ãšããŠå ±åããŸã (ãã¡ããã¢ãã¿ãŒã¯æ¥ç¶ãããŠããŸãã)ã 8Ã16 ã®ã³ã³ãœãŒã« ãã©ã³ãã§ã¯ã82 è¡ããã 26 æåãXNUMX è¡ããããŸããã
ãã®ã¢ãŒãã§ã¯ 40 æåã®ç¹åãã£ã¹ãã¬ã€ãæäœããã®ã¯äžäŸ¿ã§ãã èè ã¯ãUnicode æåãç¹åã§è¡šç€ºãããããšãæãã§ããŸãã 幞ããªããšã«ãLinux 㯠512 æåããµããŒãããŠãããã»ãšãã©ã®ã³ã³ãœãŒã« ãã©ã³ã㯠256 æåããµããŒãããŠããŸããconsole-setup ã䜿çšãããšã256 ã€ã® XNUMX æåãã©ã³ããäžç·ã«äœ¿çšã§ããŸãã äœæè ã¯ã/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 mm ãžã£ãã¯ããããŸãããèè 㯠Mini-HDMI ããé³å£°ä¿¡å·ãåä¿¡ããããã®ã¢ããã¿ãŒãç¥ããŸããã èè 㯠Raspberry ã«å èµãããŠãããµãŠã³ã ã«ãŒãã䜿çšã§ããŸããã§ãã (å¥åŠãªããšã«ã翻蚳è 㯠Zero ã«ã¯ãµãŠã³ã ã«ãŒããæèŒãããŠããªããšç¢ºä¿¡ããŠããŸããããGPIO ã« PWM ã䜿çšããŠãµãŠã³ããåºåããæ¹æ³ã¯ãããŸã)ã USB-OTGãããå©çšããŠå€éšã«ãŒããæ¥ç¶ããç¹åãã£ã¹ãã¬ã€ã«å èµãããã¹ããŒã«ãŒã«é³å£°ãåºåããäºå®ã ãšããã äœããã®çç±ã§ XNUMX ã€ã®å€éšã«ãŒããæ©èœããªãã£ããããçŸåšãå¥ã®ãããã»ããã§åæ§ã®ããã€ã¹ãæ¢ããŠããŸãã
ãŸãããã©ãºããªãŒããæåã§ãªãã«ããæ°ç§åŸ ã£ãŠããç¹åãã£ã¹ãã¬ã€ããªãã«ããã®ãäžäŸ¿ã§ãã ããã¯ãã¹ãŠãé»æºããªãã«ãªããšãã³ã³ããŒãã¡ã³ãå ã®ã³ãã¯ã¿ããé»åãé®æãããããã§ãã èè ã¯ãã³ã³ããŒãã¡ã³ãã«å°ããªãããã¡ ããããªãé 眮ããGPIO çµç±ã§ãã£ã¹ãã¬ã€ããªãã«ãªã£ãããšã Raspberry ã«éç¥ããRaspberry ãåäœãã·ã£ããããŠã³ã§ããããã«ããäºå®ã§ãã ããã¯å°åã® UPS ã§ãã
ã·ã¹ãã ã€ã¡ãŒãž
åãç¹åãã£ã¹ãã¬ã€ããæã¡ã§ãããã䜿ã£ãŠåãããšããããå Žåã¯ãäœæè ãã·ã¹ãã ã®æ¢è£œã®ã€ã¡ãŒãž (Raspbian Stretch ã«åºã¥ã) ãæäŸããæºåãã§ããŠããŸãã ãã®ä»¶ã«ã€ããŠãäžã«ç€ºããäœæã«æçŽãæžããŠãã ããã èå³ãæã€äººãååã§ããã°ããã®ãããªæ¹é ã«å¿ èŠãªãã®ããã¹ãŠå«ãŸãããããããªãªãŒã¹ããããšãå¯èœã§ãã
æè¬
æ ¡æ£ããŠããã Dave Mielke ã«æè¬ããŸãã
åçã€ã©ã¹ãæäŸã® Simon Kainz ã«æè¬ããŸãã
èè ã Raspberry Pi ã®äžçã«ããã«çŽ¹ä»ããŠãããã°ã©ãŒãå·¥ç§å€§åŠã®ååã«æè¬ããŸãã
PS
åºæïŒ habr.com