LINE Developer Community GWアドベントカレンダーの3日目です。 -> https://linedevelopercommunity.connpass.com/
4月上旬にmicro:bit x LINE Thingsのハンズオンをやったんですけど、そのとき発生したトラブルの解決方法などを追記できたので記事を公開したいと思います。
この資料について
この資料はLINE Things触ってみようハンズオンのハンズオン内容になります。
connpassに書いてますが、PCにArduino IDEのインストールしてありますよね?してない人は前で話してる裏でコソッと入れてください!割と時間かかる場合があります。
あと、僕が試すことができなかったので、Windowsの人は今日は苦しい戦いになるかも...
自己紹介
- のびすけ
- LINE API Expert
- IoT縛りの勉強会 IoTLTの主催
- 日本初のプロトタイピング専門スクール「ProtoOut Studio」
今日やる内容
- LINE Thingsの概要紹介
- ハンズオン: LINE Things Starterのmicro:bit動作をみんなで試してみよう
- 時間が余ったら各自もくもく会
LINE Thingsの概要
簡単にいうと、 LINEから外部のBluetoothデバイスにアクセス出来るようになるAPIです。
[ここ1週間 LINE Thingsで5つのデバイス 触ってみたのでまとめてみる ](https://speakerdeck.com/n0bisuke/koko1zhou-jian-line-thingsde5tufalsedebaisu-hong-tutemitafalsedematometemiru-number-iotlt-number-linethings)
今日のハンズオンのゴール
LINE Things Starter for BBC micro:bitを試してみます。
- 本来はLINE BOT側も作成してアプリケーションを作成しますが、LINE Things Starterを使うことでLINE BOT側の実装を省略できます。
- ESP32系やnRF52で試したりもしましたが、感覚的にmicro:bitが一番難しかったです。
- Arduino IDEへのプラグイン追加的な手順が結構わかりにくいです。
- 僕は一回やって挫折しました。
- こういうのこそハンズオンでやるのがいいと思う笑
準備物の確認
- micro:bit
- micro:bitって何? -> 子供も大人もmicro:bit!基本の操作と初めてのプログラミング
- micro:bitをPCをつなぐUSBケーブル
- スマーフォン
- LINEアプリが入ってることを確認
- Bluetoothがオンになっていることを確認
- PC
- Arduino IDEがインストール済み
ハンズオンスタート
まずはLINE Things Starterと友達になりましょう
この記事のSTEP3あたりをみます。
Arduino IDEのセットアップをしていく(今回のメイン)
基本は公式の手順ですが、ハンズオン都合的に少し順番を変えます。
* Arduino IDE を開きます
* arduino-nRF5 を README の手順に従ってインストールします
* BLEPeripheral ライブラリをインストールします
* Adafruit GFX ライブラリをインストールします
* Adafruit_Microbit ライブラリをインストールします
Arduino IDEに各種ライブラリ(3種類)をインストール
-
スケッチ -> ライブラリをインクルード -> ライブラリマネージャを開く
-
検索フォームに
arduino-BLEPeripheral
と入力して検索し、ライブラリをインストールします。バージョンは最新のものを指定しましょう。表示されているスクショは既にインストール済みの画面なので若干表示違うと思います。
- 同様に
Adafruit-GFX-Library
をインストール
- 同様に
Adafruit_Microbit
をインストール
- これでBLEPeripheral、Adafruit GFX、Adafruit_Microbitの3種類のライブラリがインストール出来ました。
ここで一息いれてもいいかもしれません。
arduino-nRF5 を README の手順に従ってインストール
ここが一番難しいかも。 (※macでしか試せてません。)
arduino-nRF5を開きます。
- Arduino IDEの環境設定(preference)から
追加のボードマネージャーのURL
を追加します。-
https://sandeepmistry.github.io/arduino-nRF5/package_nRF5_boards_index.json
を追加してOK。
-
- ツール -> ボード -> ボードマネージャ から
Nordic Semiconductor nRF5 Boards
を追加します。
- ツール -> ボード から
BBC micro:bit
を選択
(まだケーブルは繋がず)
ここでWindowsの人だけ特殊手順が......
Windowsの人はmbedデバイスのドライバインストール作業が発生します。
講師側で試せてません。すみません!
micro:bitのセットアップ
- micro:bitとPCをUSBケーブルで繋げてください
- ツール -> シリアルポート -> /dev/cu.usb~ (BBC micro:bit)などが出てくることを確認して選択
- Windowsの場合はCOM3などが表示されます。
- ここで表示されない人は、↑のドライバーインストールがうまくいってない可能性が高いです。それ以外だとUSBケーブルが電源オンリーでデータ通信できないタイプになっているなどがありえます。ケーブルを他の人と交換してチェックしてみたりしましょう。
- ツール -> SoftDevice のリストから S130 を選択してください
- ツール -> 書込装置 のリストから CMSIS-DAP を選択してください
-
arduino-nRF5 READMEの手順に従って、SoftDevice S130 をデバイスへ書き込みます。
- ちょっと複雑なので↓へ。
SoftDeviceの書き込み
-
Arudinoのスケッチのフォルダに移動します。
- OS X: ~/Documents/Arduino
- Linux: ~/Arduino
- Windows: ~/Documents/Arduino
-
その中に
tools/nRF5FlashSoftDevice/tool/
フォルダを作成しましょう。
- nRF5FlashSoftDevice.jarを保存します。
-
ここで一旦Arduino IDEを再起動
- 再起動すると、項目がなんか追加された!
- ので
nRF5 Flash SoftDevice
を押してみます。
- エラーが出た。ぐぬぬ。
.hexファイル
のDLでこけてるみたいです。
-
Nordicのサイトから直接
.hexファイル
DLして直接入れます。
サイトのUIちょっと分かりにくいけど、なんとかDLできると思います。
-
.hexファイル
の設定(macのみの手順になってるのでwindowsの方は適宜読み替えてください、すみません)
~/Library/Arduino15/packages/sandeepmistry/hardware/nRF5/0.6.0/cores/nRF5/SDK/components/softdevice/s130/hex
にDLした.hexファイルを置きます。以下はコマンド例です。
cp ~/Downloads/s130nrf51201/s130_nrf51_2.0.1_softdevice.hex ~/Library/Arduino15/packages/sandeepmistry/hardware/nRF5/0.6.0/cores/nRF5/SDK/components/softdevice/s130/hex
- 再度書き込みをしてみましょう。
-
nRF5 Flash SoftDevice
をおしていけました。
-
空のスケッチの書き込み
ここまできたらセットアップ完了です。
からのスケッチを書き込んで試しましょう。
LINE Things Starterのファーム書き込み
https://github.com/line/line-things-starter/blob/master/microbit/arduino/sample/sample.ino を書き込んでみましょう。
LINEアプリとデバイスの連携して試してみる
LINEアプリ側とデバイス側で双方向に通信できるのが分かると思います。
早くおわた人向け - 追加コンテンツ
注意: ここから結構雑です。
こちらの手順を元にLIFFを作ってみましょう。
- line developersのサイトでログインします。
- 新規プロバイダー作成 or 既存のプロバイダーを選択 -> 新規チャンネル作成を選択
- Messaging APIを選択
- 情報を追加してBOTを作成
- BOTが作成できたよ
- チャンネル基本設定のページ下部のQRコードから作ったBOTと友達になろう
- 右のLIFFのタブからLIFFアプリを作成
- エンドポイントを入れる必要があるので、一旦GitHubの手順へ
- ここの右上からForkをする
- フォークしたらリポジトリのsettingsからGitHub Pagesの項目へ、Sourceをmaster branchに設定
* `https://<自分のgithubのID>.github.io/line-things-starter/` + `liff-app/`をエンドポイントへ
* 例: `https://n0bisuke.github.io/line-things-starter/liff-app/`がn0bisukeのenndo
- エンドポイントを設定し、BLE featureをONに
- CURLでサービスUUIDを生成
curl -X POST https://api.line.me/things/v1/trial/products \
-H 'Authorization: Bearer {channel access token}' \
-H 'Content-Type:application/json' \
-d '{
"name": "{trial product name}",
"liffId": "{LIFF APP ID}"
}'
↓実態例
$ curl -X POST https://api.line.me/things/v1/trial/products \
-H 'Authorization: Bearer 0yt1kkPxw6Ae9fTuQ/Refor4VOv2Ol4Ilpm16YMWH8ZS0rqO8e3qTr46g/0Pwjlq+xoJ0TPbsZOYWwc5uAC35nIR8JynnEcobZDWPU8LAjjX5PQIletABltk846/yOkqJmoqzYUW2Zz4dpnsNVQXUVGUYhWQfeY8sLGRXgo3xvw=' \
-H 'Content-Type:application/json' \
-d '{
"name": "n0bisuke_microbit",
"liffId": "1563239013-78E9voDZ"
}'
- 生成されたサービスUUIDを使ってArudinoのコードとliff.jsのサービスUUIDを書き換える
うまく繋がらない場合
これらも試してみてください。
まとめ
むずい!けど一回セットアップすると良い感じです。
micro:bitは安いし安定してるので結構おすすめ!