#LEGO EV3 に #ev3dev を導入して #Bluetooth で接続する

[LEGO MINDSTORMS Voice Challenge](https://www.hackster.io/contests/alexa-lego-voice-challenge) に応募するため環境調査して サンプルを動かしてみました。

関連記事
[アマゾン、Alexaで操るロボット開発コンテスト「LEGO MINDSTORMS Voice Challenge」](https://japan.cnet.com/article/35143289/)

# ev3dev 導入
ev3dev を 書き込んだ micro SDカードを作る

## 用意するもの
- [LEGO MINDSTORMS EV3](https://amzn.to/36BMQkm)
- [micro SD](https://amzn.to/2CmuNk1) (8GB推奨)
- SDカードリーダー,ライター
- [ev3dev イメージ](https://www.ev3dev.org/)
- [Etcher](https://www.balena.io/etcher/) SDカード作成ツール

## ev3dev ダウンロード & SDカード作成
[LEGO MINDSTORMS EV3](https://amzn.to/36BMQkm) 標準のOSではなく、SDブートする DebianベースのOSです。
EV3 だけでなく Raspberry Pi や BrickPi でも動作するようです。
1. EV3用を [ダウンロード](https://www.ev3dev.org/downloads/) する。
2. 展開して `ev3dev-stretch-ev3-generic-XXXX-XXX-XX.img` があることを確認する。
3. [Etcher](https://www.balena.io/etcher/) 使って `ev3dev-stretch-ev3-generic-XXXX-XXX-XX.img` を microSDに書き込む
<img width="602" alt="home.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100147/ca1f36ca-febe-7059-c90c-9aaca11503cd.png">

```
microSDに無駄なパーティションがあると次の起動に失敗します。
ディスクユーティリティ等でパーティションを削除してから イメージ書き込みを行うと良さそうです。
```

## ev3dev の起動
[LEGO MINDSTORMS EV3](https://amzn.to/36BMQkm) に 作成した micro SD カードを差し込んで 起動させます。
1. EV3横にある `SD`スロットのに SDカードを差し込む ![IMAG6057.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100147/03924961-a325-94c1-1446-e56d261b6724.jpeg)

2. EV3の中央のボタンを押して電源をいれる ![IMAG6058.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100147/2a42f28b-ee92-7b48-5c70-99e5f28dcf3f.jpeg)

## ev3dev で Bluetooth を有効にする
Bluetooth と PCをつないで ペアリングをする。

1. ev3dev メニューの `Wireless and Networks` を選択する。![IMAG6063.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100147/e24839da-d716-e290-3252-7dd4ad440623.jpeg)

2. `Bluetooth` を選択して `Powered` で 電源をいれる。Bluetoothマークが右上につくことを確認する。![IMAG6062.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100147/243ab413-6f5f-7d12-5d2e-8575b5a11321.jpeg)

3. `Start Scan` で 接続先 PCを見つけ接続して、ペアリングをする。![IMAG6064.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100147/9f97b426-4047-353b-38a9-028f5b4bf4b6.jpeg)

## Bluetooth PAN 設定
ペアリングした macbook 側で `Bluetooth PAN` 設定をすると ev3へファイル転送などができるようになるので設定する。
1. macbook 側 `システム環境設定` → `ネットワーク` を開いて ` Bluetooth PAN` を追加する。<img width="483" alt="スクリーンショット 2019-11-06 9.37.30.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100147/e199c80c-94a0-d236-3555-2230df911b2a.png">
2. ev3 側で `Network Connection` を選択してエラーが出なければ接続成功している

## SSH でログインできるか確認してみる
Bluetooth PAN 設定が済んでいれば ssh で ev3dev に macbook からログインする事ができます。

```
ssh robot@ev3dev.local
Password: maker
```
<img width="630" alt="スクリーンショット 2019-11-06 9.41.14.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100147/35593952-41a7-8e26-58aa-2028f23191d1.png">


ここまでの設定で ev3dev を開発するための環境を作ることが出来ました。
次回は [LEGO MINDSTORMS Voice Challenge](https://www.hackster.io/contests/alexa-lego-voice-challenge) の サンプルを動かして #Alexa Gadgets Toolkit との接続をする記事を書きたいと思います。

## 参考
[ev3dev](https://www.ev3dev.org/)
- DebianベースのOS
- [Bluetooth](https://www.ev3dev.org/docs/tutorials/connecting-to-the-internet-via-bluetooth/) での接続方法
[LEGO Mindstorms EV3 を Python から制御するためのメモ](https://futurismo.biz/archives/6564)