後輩たちのためのEV3rt講座⑨(Bluetooth開発環境構築【Windows・Mac】)

お久しぶりです…
2019年初投稿です〜

#はじめに#
今回から2回に渡って、EV3rtのBluetooth事情についてお伝えしていきたいと思います。
まずは環境構築をしなくてはなりません。EV3rtの一番最初の環境構築の時とは異なり、WindowsとMacで全く異なります。それぞれちゃんと書き記しますが、間違えないようにしてください。

#Windowsでの環境構築#

##ペアリング##
まずはEV3との接続ですが、Windowsの「設定」から「Mindstoms EV3」を選んで、ペアリングします。
![スクリーンショット (16).png](https://qiita-image-store.s3.amazonaws.com/0/183170/fd74b02a-27dd-3bea-bb7a-452d3e826c87.png)
この時パスコードを要求されますが、SDカード内のファイルをいじっていない限り、「0000」です。
(`ev3rt/sdcard/ev3rt/etc/rc.conf.ini`のPincodeを編集すると、パスコードが変えれますが、不具合等が起きやすい印象なので、触らないほうが無難でしょう。)
![スクリーンショット (17).png](https://qiita-image-store.s3.amazonaws.com/0/183170/b501ab15-d78f-0f79-9fb3-b2c2b041b594.png)
このように表示されればペアリングは完了です。
![スクリーンショット (18).png](https://qiita-image-store.s3.amazonaws.com/0/183170/7b943e1e-9207-9d71-7523-0612fb2ba4e6.png)

通常の使用方法(コンパイルしたappを転送する)くらいの作業なら、Windowsの設定からのペアリングで問題ないと思います。
しかし、後々紹介するコマンドの通信などをするときは、上手くいかないときがあります。
そんなときは、別にBluetoothスタックというものを用意しましょう。
私のおすすめはTOSHIBA製のスタックです。評判は比較的良いです。
[ダウンロードページ](https://dynabook.com/assistpc/download/modify/soft/btswt/index_j.htm#vcnf)
本来これはDynabookやLet's noteなどに搭載されているものですが、そうでないPCでも使うことが可能です。(一応推奨はされてないので自己責任でお願いします。)
では、このTOSHIBA製スタックを使う場合のペアリング方法も記しておきます。

##ペアリング(TOSHIBA製スタック版)##
![スクリーンショット (24).png](https://qiita-image-store.s3.amazonaws.com/0/183170/c0491093-cc3e-5078-41cd-2f8ffbffeb9d.png)
まずは「新しい接続」をクリック。
(接続先が一台もない場合は自動的にペアリング設定が始まります)

![スクリーンショット (25).png](https://qiita-image-store.s3.amazonaws.com/0/183170/d549d1d7-fb4c-4d26-18d7-1109b1ecd4fa.png)
次に必ず「カスタムモード」を選択してください。設定等を細かくしないといけないので。

![スクリーンショット (26).png](https://qiita-image-store.s3.amazonaws.com/0/183170/3ab5228e-8415-59ff-54b7-047784e1c07c.png)
探してます……
少し待つと発見した接続先が表示されます。

![スクリーンショット (27).png](https://qiita-image-store.s3.amazonaws.com/0/183170/d933b3c2-91dc-1dd1-18e1-301e8b17c635.png)
出ました。ここで「Mindstorms EV3」を選択してください。
出てこなかった場合は「更新」を押して検索をやり直しましょう。

![スクリーンショット (28).png](https://qiita-image-store.s3.amazonaws.com/0/183170/192455d4-ed21-b2ff-8b7d-3baadea45cd4.png)
接続しようとすると、パスコードが聞かれるはずです。
上記の通り`rc.conf.ini`のPincodeを入力します。デフォルトは「0000」です。

![スクリーンショット (29).png](https://qiita-image-store.s3.amazonaws.com/0/183170/b611c0d2-a4cb-7380-847a-f38184b81389.png)
パスコード入力が完了すると、サービスの選択画面になります。ここでシリアルポートを選択しましょう。

![スクリーンショット (38).png](https://qiita-image-store.s3.amazonaws.com/0/183170/244dad56-63b9-2e6e-0a5a-7f7e4c4236be.png)
最後にCOMポートを選択します。が、デフォルトの設定でいい場合はそのままスルーしても構いません。

これが終わればセットアップはほぼ終了です。
このあとほんの少し設定がありますがそのまま画面の指示にしたがって進めば問題ありません。

##Tera Termのインストール##
さて、次はTera Termですね。これはBluetoothシリアル通信(ZMODEM)でコンパイルしたappを送信するために使います。
まずはインストーラーを落としてきましょう。
[Tera Term HP](https://ttssh2.osdn.jp/)

ダウンロードできたらインストーラーを起動してください。

言語設定等をすると下のような画面が出てくると思います。
![スクリーンショット (39).png](https://qiita-image-store.s3.amazonaws.com/0/183170/7cb47fad-991d-ecb3-570b-865f1fae9438.png)

![スクリーンショット (40).png](https://qiita-image-store.s3.amazonaws.com/0/183170/0863a528-365d-29ab-8150-0853b47e4cbb.png)
私は何が必要かよくわからなかったので、フルインストールしました。

![スクリーンショット (41).png](https://qiita-image-store.s3.amazonaws.com/0/183170/39fae5c8-c9d5-e93b-886e-cfc18549438b.png)
言語は「日本語」を選べばいいでしょう。

![スクリーンショット (42).png](https://qiita-image-store.s3.amazonaws.com/0/183170/f9341a53-69a2-4b1e-234c-04a96bceddca.png)
この欄は必要に応じてチェックを入れると良いでしょう。

![スクリーンショット (43).png](https://qiita-image-store.s3.amazonaws.com/0/183170/84e32abb-e63d-245d-fa24-22bf77fafbe5.png)
インストール内容を確認してインストールしてください。

終わったり、セットアップは完了です。

##Windowsでのapp送信##
それでは、インストールしたTera Termでコンパイルしたappを送信したいと思います。

EV3がPCとBluetooth接続していることを確認してください。
Windows標準設定からの場合は「ペアリング済み」と表示されていればOKです。
TOSHIBA製スタックからの場合は以下の画像のような緑と黄色のマークが出ていればOKです。

![スクリーンショット (79).png](https://qiita-image-store.s3.amazonaws.com/0/183170/6eae890c-a6e4-8924-05c3-894daab47ac3.png)

先に、EV3側で「Bluetooth SPP」のモードを選択しておいてください。

ではいよいよTera Termを立ち上げます。
立ち上げると一番最初に以下のような画面が出るはずです。

![シリアルポート.png](https://qiita-image-store.s3.amazonaws.com/0/183170/58cfd27d-5ce6-f70c-9abb-e7c4810cfd1a.png)

ここでは下のCOMポートを選択します。ポート番号はTOSHIBA製スタックを使った人は「COMポートの選択」画面で割り当てたCOMポートを選んでください。Windows標準設定を使った人は以下の要領で調べます。

1.`コントロールパネル`->`ハードウェアとサウンド`->`デバイスとプリンター`にアクセス
2.`Mindstorms EV3`を選択
3.`プロパティ`を開いて`ハードウェア`もしくは`サービス`タブを選択。この欄に書かれているCOMポートが割り当てたものです。

![COMポート.png](https://qiita-image-store.s3.amazonaws.com/0/183170/4d2cad4c-efff-002e-f5ae-64fa39531cab.png)


さて、正しくCOMポートが選択できれば、先ほどのダイアログは消え、黒いウィンドウのみ残るはずです。
一見不気味ですが、これで問題ありません。

続いて、`ファイル`->`転送`->`ZMODEM`->`送信`と選択してください。
すると以下のような画面が出るでしょう。

![送信.png](https://qiita-image-store.s3.amazonaws.com/0/183170/25ab6d99-927e-ff1a-cc8c-599ac27444fb.png)

この画面では送信するコンパイル済みファイルを選択します。(リネームしていなければ「app」という名前のやつ)
デフォルトで表示されるディレクトリはEV3rtのworkspaceとは全く違う場所なので、自力で移動してください。
appが生成される場所は`ev3rt-betaX.X-release/hrp2/sdk/workspace`です。

![選択.png](https://qiita-image-store.s3.amazonaws.com/0/183170/ea39d65d-4140-5c0b-b9c1-840365950e0b.png)

選択できたら「開く」を押しましょう。
ここまでちゃんとできていれば、appが送信されるはずです!!

#Macでの環境構築#
続いてmacでのBluetooth接続です。
まずはシリアル通信をするソフトを入れます。Windows版でいうところのTera Termです。

##minicomのインストール##
macの「ターミナル」で使用するminicomをインストールします。
インストールにはMacPortsかHomebrewを使用します。(どちらもインストールしていない人は、先にどちらかインストールしてください。)

minicomを入れると同時にZMODEM通信に対応させるためにIrzszもインストールします。

###既にminicoがインストールされているか確認###
念のためにMacPorts、Homebrew、minicomが自分のmacの中にインストールされているかを確認する方法を記して置きます。

```terminal
which port
(MacPortsの確認)

which brew
(Homebrewの確認)

which minicom
(minicomの確認)
```

それぞれディレクトリが表示されれば、そこにインストールされていることになります。

ではここからインストールしていきます。

###MacPorts版###
Irzszのインストール

```terminal
sudo port install lrzsz 
```

minicomのインストール

```terminal
sudo port install minicom
```

###Homebrew版###
Irzszのインストール

```terminal
brew install lrzsz
```

minicomのインストール

```terminal
brew install minicom
```
インストールが終わったら上記の方法でインストールされているか確認すると良いでしょう。

##minicomの設定##
ここからEV3用にminicomを設定していきます。
まずは設定画面を開きましょう。

```terminal
minicom -s
```

そうするとこんな画面が表示されるはずです。
![スクリーンショット 2018-10-29 05.35.01.png](https://qiita-image-store.s3.amazonaws.com/0/183170/2ecc0661-d83a-a6c6-5226-24e9154a49c7.png)
ちなみに英語で出てきた場合は上から順に

- Filenames and paths
- File trasfer protocols
- Serial port setup
- Modem and dialing
- Screen and keyboard
- Save setup as dfl
- Save setup as..
- Exit
- Exit from Minicom

と出てきます。転載を避けるため、実際の画像は下記の記事を参照してください。
[Mac OS XでETロボコンに出よう! (Bluetooth編)](https://qiita.com/yamanekko/items/683db7be0a3c93f03fe9#minicomの設定)

###シリアルポート/Serial port setup###
で、ここでは`シリアルポート`を(英語なら`Serial port setup`)を選択して、Enterを押してください。
選択はキーボードの上下ボタンで変更可能です。
そしたら、こんな画面が出てくるでしょう。
![スクリーンショット 2018-10-29 05.47.39.png](https://qiita-image-store.s3.amazonaws.com/0/183170/32edbd26-2bf3-637a-dbc7-0da7506080d7.png)
(私の画面は既に一部設定済みです)
ここでA〜Gのキーボードを押すと、各項目にジャンプします。
では、以下の項目を設定してください。

```terminal
A: /dev/tty.MindstormsEV3-SerialPor
E: 115200 8N1
F: NO
G: NO
```

(FとGはキーを押すとYesとNoが入れ替わります)

さて、終わったらこの画面を抜けてください。

###モデムとダイヤル/Modem and dialing###
次に、`モデムとダイヤル`(英語なら`Modem and dialing`)を選択してください。
![スクリーンショット 2018-10-29 05.59.55.png](https://qiita-image-store.s3.amazonaws.com/0/183170/1a8baf3d-d6a4-3492-03bf-e16d05be791d.png)
(私の画面は既に設定済みです)
では、それぞれ以下のように設定してください。

```terminal
A:
B:
C:ATDT
D:
E:ATDP
F:
G:
H:
I:CONNECT
J:NO CARRIER BUSY NO DIALTONE VOICE
K:~~+++~~ATH^M
L:^M
M:45
N:2
O:10
P:1
Q:NO
R:YES
S:DTE speed(DTE 速度)
T:NO
```

既に設定済みになっているところは触らなくて大丈夫です。
終わったらここから抜けてください。

###設定を保存###
`"dfl" に設定を保存`(英語なら`Save setup as dfl`)を選択して、設定を保存しましょう。

すべて完了したらminicomを一度終了しましょう。(J:`Minicom を終了` E:`Exit from Minicom`)

##EV3をMacに接続##
(この時点で既にBluetooth接続をしているEV3があるならば、設定を消しておいてください。)
まずは、通常通りmacのBluetooth設定を開いてください。
![スクリーンショット 2018-10-30 21.26.40.png](https://qiita-image-store.s3.amazonaws.com/0/183170/d9207cf1-a1c5-64a7-8b19-f182d59b5375.png)
「Mindstorms EV3」が表示されたら、「接続」を押してください。恐らく一度は繋がりはするものの、⚠️マークが出たり、あるいはすぐに接続が切れたりするかもしれません。でもそれで問題ないのでそのままにしておいて次のステップに進んでください。
![スクリーンショット 2018-10-30 21.27.05.png](https://qiita-image-store.s3.amazonaws.com/0/183170/b8882f70-7396-fb28-90af-2d6f2159e0fd.png)

##minicomを起動##
さて、いよいよminicomを起動していきます。
私の環境では管理者権限で起動しないとうまくいきませんでしたので、以下のようなコマンドで実行します。

```terminal
sudo minicom
```

Password:🗝 みたいに出てくるはずなので、ここではmacのログインパスコードを打ってください。
ここで設定がちゃんとできている人は、EV3と接続でき、

```terminal
minicom へようこそ 2.7.1

オプション: I18n
コンパイルされた日時は:  May 17 2017, 04:52:29.
ポート /dev/tty.MindstormsEV3-SerialPor, 21:26:50

Meta-Z を押すと、説明画面になります。

```

と出てくるはずです。これで接続までは完了です！！

##Macでのapp送信##
まずは、EV3側で「Bluetooth SPP」のモードを選択しておいてください。

minicomを起動した状態で、`Meta-Z`に登録されているキー(デフォルトでは`ESC`のはず)と、`Z`を同時に押してください。
そうすると

```
                             +-[アップロード]--+
                             | zmodem    |
                             | ymodem    |
                             | xmodem    |
                             | kermit    |
                             | ascii     |
                             +-----------+
```

こんな感じのやつが出てくると思います。
一番上の`zmodem`を選択した状態で、Enterを押してください。
すると次に現れるのはファイル選択画面です。
初期状態ではMacのドライブの一番上の階層が表示されます。
![スクリーンショット 2018-12-28 05.10.28.png](https://qiita-image-store.s3.amazonaws.com/0/183170/d2cea8aa-ffb2-ad06-92b7-6386f2aac854.png)

さて、このディレクトリ画面の見方ですが、 **`[Desktop]`** のように、`[]`でくくられているのは**フォルダ**です。
そうでないものはファイル単体です。
ファイルは先程までと同じく、Spaceキー1度押しで選択できます。
フォルダを選択した状態でSpaceキーを2回連続で押すと、そのフォルダの中に入ります。
このようにディレクトリを移動して、workspaceにあるappを選択してください。
上級者にもなれば、下部の`[Goto]`に、workspaceのあるパスを打ち込み、ワープするというやり方で済まします。

話を戻しまして、appは選択できましたか？
できたら下部で[Okay]が選択されているのを確認し、Enterを押してください。
正常に接続されていれば、appの送信が始まるはずです。
送信自体は驚くほどの速さで終了しますよ!!

#最後に#
今回はBluetooth通信の環境構築を行いました。
次回はこのBluetooth通信の応用をしていくつもりです。
コマンド送信などができ、ETロボコンでは必須の「リモートスタート」などができちゃいます！！
(まあWROはセンターボタンプッシュでしかスタートできないけども・・・)

次回:[第10回](https://qiita.com/koushiro/items/e985c953116c0399bd47)
前回:[第8回](https://qiita.com/koushiro/items/22a10c7dd451291fd95b)