micro:bitでLINE Thingsハンズオン #linethings #linedc #gwアドベントカレンダー


LINE Developer Community GWアドベントカレンダーの3日目です。 -> https://linedevelopercommunity.connpass.com/

4月上旬にmicro:bit x LINE Thingsのハンズオンをやったんですけど、そのとき発生したトラブルの解決方法などを追記できたので記事を公開したいと思います。

この資料について

この資料はLINE Things触ってみようハンズオンのハンズオン内容になります。

connpassに書いてますが、PCにArduino IDEのインストールしてありますよね?してない人は前で話してる裏でコソッと入れてください!割と時間かかる場合があります。

あと、僕が試すことができなかったので、Windowsの人は今日は苦しい戦いになるかも...

自己紹介

今日やる内容

  • LINE Thingsの概要紹介
  • ハンズオン: LINE Things Starterのmicro:bit動作をみんなで試してみよう
  • 時間が余ったら各自もくもく会

LINE Thingsの概要

簡単にいうと、 LINEから外部のBluetoothデバイスにアクセス出来るようになるAPIです。


ここ1週間 LINE Thingsで5つのデバイス 触ってみたのでまとめてみる

今日のハンズオンのゴール

LINE Things Starter for BBC micro:bitを試してみます。


https://www.instagram.com/p/BvRuBsxDnrD/

  • 本来はLINE BOT側も作成してアプリケーションを作成しますが、LINE Things Starterを使うことでLINE BOT側の実装を省略できます。
  • ESP32系やnRF52で試したりもしましたが、感覚的にmicro:bitが一番難しかったです。
    • 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をインストール

ここで一息いれてもいいかもしれません。

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デバイスのドライバインストール作業が発生します。

https://github.com/sandeepmistry/arduino-nRF5#windows

講師側で試せてません。すみません!

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/フォルダを作成しましょう。

  • ここで一旦Arduino IDEを再起動
    • 再起動すると、項目がなんか追加された!
    • のでnRF5 Flash SoftDeviceを押してみます。

  • エラーが出た。ぐぬぬ。.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を作ってみましょう。

  • 新規プロバイダー作成 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は安いし安定してるので結構おすすめ!