LoginSignup
3
2

More than 3 years have passed since last update.

BluetoothモジュールRN-42とiPhoneをつなぐ。~自動化への夢~

Last updated at Posted at 2020-05-22

やったこと

iOSにBluetoothキーボードのショートカットキーがあり、スクリーンショットなど色々制御できそうだと思い、
RN-42使用 Bluetooth無線モジュール評価キットを使って、WindowsマシンからBluetoothでキーボード操作を自動化
fast_typing.gif

構成
Windows8 → (USB) → RN-42 → (Bluetooth) → iPhone 6s(iOS13)

手順

RN-42をPCに接続する

今回、Windows8マシンがあったので、TeraTermを使ってRN-42に接続しました。

RN-42とターミナルソフトと接続

参考サイト:RN-42 Bluetoothモジュールの使い方1
上のサイトに詳しいことが載っていますが、

  1. FTDI社のUSBデバイスドライバをインストール
  2. COMポートの設定
  3. TeraTermとの接続

でTeraTermと接続できます。

RN-42の設定

参考サイト:iPhoneとRN42でBluetooth
ここからは上のサイトになぞり、TeraTerm上でRN-42をスレーブのHIDキーボードとして設定します。

設定が終わるとiPhoneとの接続が可能になり、TeraTerm上でキー入力を行うとiPhone側にも反映されます。
Bluetoothキーボード上ではwin+Hでホームボタンを押すショートカットなのですが、Windows側のショートカットとかぶっているので、うまく動作しません。
また、今回はキー操作を自動化したいので、

  • キー入力のバイナリ(HID keyboard report format)を送信して操作する
  • TeraTermのマクロによる自動化

の2点を使ってアプローチします。

キー入力のバイナリ(HID keyboard report format)を送信して操作する

Bluetoothキーボードはキー入力時に11バイトのバイナリデータを送信するプロトコルとなっています。
Bluetooth HID Profile User Manual
バイナリの中身として
| 0xfd | 0x09 | 0x01 | modifier | 0x00 | code1 | code2 | code3 | code4 | code5 | code6 |
となっており、実際のキー入力は4バイト目のmodifierと6バイト目以降のscan codeに入ります。
ここで、modifierはCtrlやAltなどのビットごとにフラグをたてたものであり、

bit7 : RightGUI (Meta)
bit6 : RightAlt
bit5 : RightShift
bit4 : RightCtrl
bit3 : LeftGUI (Meta)
bit2 : LeftAlt
bit1 : LeftShift
bit0 : LeftCtrl

また、各codeにはその他のキーのscan codeが1つずつの6個までが入ります。
scan codeの早見表

具体例としてCmd+Shift+3(iOSのスクリーンショットのショートカットキー)は
FD 09 01 82 00 20 00 00 00 00 00

なにも押してない状態
FD 09 01 00 00 00 00 00 00 00 00
となります。

TeraTermのマクロによる自動化

キー入力のバイナリをマクロを使って自動化します。
[コントロール]→[マクロ]より.ttlファイルが選択・実行ができます。

i = 0
while < 100
    ;スクリーンショット
    send $FD $09 $01 $82 $00 $20 $00 $00 $00 $00 $00
    ;キーを何も押してない状態に戻す
    send $FD $09 $01 $00 $00 $00 $00 $00 $00 $00 $00

    ;5秒待機
    pause 5
    i = i + 1
loop

上のマクロは見ての通り、実行すると5秒おきのスクリーンショットを500回行うものです。

注意
TeraTermの[設定]→[全般]→[言語(L)]はEnglishにしてください。
また、[コントロール]→[マクロウィンドウの表示]は実行後に中止するときに使ってください。自動では止まりません。

あとがき

iPhoneなどスマートフォンの自動操作は難しいものではありますが、今回のBluetoothを用いたアプローチは少し希望が見えるのではないでしょうか。
マクロを巨大に組まないといけないけれども。

おまけ

一番上のタイピングgifのマクロ

;t
send $FD $09 $01 $00 $00 $17 $00 $00 $00 $00 $00
send $FD $09 $01 $00 $00 $00 $00 $00 $00 $00 $00

;y
send $FD $09 $01 $00 $00 $1C $00 $00 $00 $00 $00
send $FD $09 $01 $00 $00 $00 $00 $00 $00 $00 $00

;o
send $FD $09 $01 $00 $00 $12 $00 $00 $00 $00 $00
send $FD $09 $01 $00 $00 $00 $00 $00 $00 $00 $00

;u
send $FD $09 $01 $00 $00 $18 $00 $00 $00 $00 $00
send $FD $09 $01 $00 $00 $00 $00 $00 $00 $00 $00

;z
send $FD $09 $01 $00 $00 $1D $00 $00 $00 $00 $00
send $FD $09 $01 $00 $00 $00 $00 $00 $00 $00 $00

;e
send $FD $09 $01 $00 $00 $08 $00 $00 $00 $00 $00
send $FD $09 $01 $00 $00 $00 $00 $00 $00 $00 $00

;t
send $FD $09 $01 $00 $00 $17 $00 $00 $00 $00 $00
send $FD $09 $01 $00 $00 $00 $00 $00 $00 $00 $00

;u
send $FD $09 $01 $00 $00 $18 $00 $00 $00 $00 $00
send $FD $09 $01 $00 $00 $00 $00 $00 $00 $00 $00

;r
send $FD $09 $01 $00 $00 $15 $00 $00 $00 $00 $00
send $FD $09 $01 $00 $00 $00 $00 $00 $00 $00 $00

;i
send $FD $09 $01 $00 $00 $0C $00 $00 $00 $00 $00
send $FD $09 $01 $00 $00 $00 $00 $00 $00 $00 $00

;g
send $FD $09 $01 $00 $00 $0A $00 $00 $00 $00 $00
send $FD $09 $01 $00 $00 $00 $00 $00 $00 $00 $00

;a
send $FD $09 $01 $00 $00 $04 $00 $00 $00 $00 $00
send $FD $09 $01 $00 $00 $00 $00 $00 $00 $00 $00

;i
send $FD $09 $01 $00 $00 $0C $00 $00 $00 $00 $00
send $FD $09 $01 $00 $00 $00 $00 $00 $00 $00 $00

;n
send $FD $09 $01 $00 $00 $11 $00 $00 $00 $00 $00
send $FD $09 $01 $00 $00 $00 $00 $00 $00 $00 $00

;o
send $FD $09 $01 $00 $00 $12 $00 $00 $00 $00 $00
send $FD $09 $01 $00 $00 $00 $00 $00 $00 $00 $00

;t
send $FD $09 $01 $00 $00 $17 $00 $00 $00 $00 $00
send $FD $09 $01 $00 $00 $00 $00 $00 $00 $00 $00

;a
send $FD $09 $01 $00 $00 $04 $00 $00 $00 $00 $00
send $FD $09 $01 $00 $00 $00 $00 $00 $00 $00 $00

;i
send $FD $09 $01 $00 $00 $0C $00 $00 $00 $00 $00
send $FD $09 $01 $00 $00 $00 $00 $00 $00 $00 $00

;p
send $FD $09 $01 $00 $00 $13 $00 $00 $00 $00 $00
send $FD $09 $01 $00 $00 $00 $00 $00 $00 $00 $00

;i
send $FD $09 $01 $00 $00 $0C $00 $00 $00 $00 $00
send $FD $09 $01 $00 $00 $00 $00 $00 $00 $00 $00

;n
send $FD $09 $01 $00 $00 $11 $00 $00 $00 $00 $00
send $FD $09 $01 $00 $00 $00 $00 $00 $00 $00 $00

;n
send $FD $09 $01 $00 $00 $11 $00 $00 $00 $00 $00
send $FD $09 $01 $00 $00 $00 $00 $00 $00 $00 $00

;g
send $FD $09 $01 $00 $00 $0A $00 $00 $00 $00 $00
send $FD $09 $01 $00 $00 $00 $00 $00 $00 $00 $00

;u
send $FD $09 $01 $00 $00 $18 $00 $00 $00 $00 $00
send $FD $09 $01 $00 $00 $00 $00 $00 $00 $00 $00

;.
send $FD $09 $01 $00 $00 $37 $00 $00 $00 $00 $00
send $FD $09 $01 $00 $00 $00 $00 $00 $00 $00 $00
3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2