LINE Things を使って Bluetooth LE でつながる電子工作をしてみた作品例まとめ

まずは、[LINE Things Starter](https://github.com/line/line-things-starter) を試して欲しいけど、ただのLチカとボタンなんですよね。
もっと気軽に色々試してみたい方向けに、さらに一歩進んだ作品例を紹介します。

# LINE Things とは

LINE Things は LINE 上から利用できる、新しい IoT プラットフォームです。Bluetooth LE を利用して、IoT デバイスに接続し、LIFF や LINE Bot からコミュニケーションができるようになります。
詳しく知りたい方は、以下のドキュメントやブログ、発表資料をご覧ください。

- [LINE Things - LINE Developers](https://developers.line.biz/ja/docs/line-things/)
- [LINE の IoT プラットフォーム LINE Things の Developer Trial を試してみる](https://engineering.linecorp.com/ja/blog/line-things-developer-trial/)
- [Looking Toward the World Connected and Expanded through Things LINE&#x27;s Effort in IoT and its Future](https//www.slideshare.net/linecorp/looking-toward-the-world-connected-and-expanded-through-things-lines-effort-in-iot-and-its-future-123994663)

一言で説明すると、Bluetooth LE 対応デバイスを LINE 内の WebView から操作できたり、LINE Bot と連携できるようになるサービスです。
現在は、Bot と連携する部分は開発中で、LIFF (WebView) から BLE API を操作できる部分のみ公開されています。

# LINE Things を利用した作品例

暇があったので、いろいろ作ってみました。(仕事が暇なわけではない)
Bluetooth LE でスマホとつながるデバイスを作る時、一番苦労するのはスマホ側のアプリだと思います。
LINE Things を使うと、HTML と JavaScript でコードを書けるわけですが、それでもベースとなるものがあったら便利ですよね。

LIFF とファームウェアのコードはすべて GitHub 上で公開しているので、気軽に同じような作品を作ることができます。

 - https://github.com/techno/line-things-snippets

LINE Things を使ってどんな事ができるのか、どういう使い勝手なのか、ということを試すのにちょうどいい感じになっていると思います。
LIFF はすべて複数デバイス対応の状態で書かれていますので、複数デバイスを一気に接続して試すとかもできます。

使った Bluetooth LE 対応マイコンボードは、主に [ESP32-DevKitC](https://www.espressif.com/en/products/hardware/esp32-devkitc/overview) と [Adafruit Feather nRF52](https://www.adafruit.com/product/3406) です。
気まぐれなので、ものによって違います。あとで、かけるものはなるべく両方に移植できるようにします。

作例も、増えたら随時更新します。

## 温度計・湿度計

<img src="https://qiita-image-store.s3.amazonaws.com/0/29906/3348cc5b-dfe3-3b11-8a14-9dd3c1f67e18.png" height="320">

まずは、基本的なところで温度計・湿度計です。
ただ、センサーをつないだだけなので、回路の写真は特になし。

上記の例は、[DHT-11](http://akizukidenshi.com/catalog/g/gM-07003/) という気軽に入手できるセンサーを作って使いました。
I2C 接続ではありませんが、デジタルで値が取得できるので、大変便利です。

- Firmware: https://github.com/techno/line-things-snippets/tree/master/esp32/arduino/esp32-dht11
- LIFF: https://github.com/techno/line-things-snippets/tree/master/liff-app/environmental-sensing

上記の GitHub リポジトリの中には、その他のセンサーを利用したサンプルも含まれているので、試してみてください。

## 加速度センサー

<img src="https://qiita-image-store.s3.amazonaws.com/0/29906/884bbb8b-a5ad-ea05-54e4-b0f9e88c1397.png" height="320">

次は、またありきたりな加速度センサーです。
こちらも、ただ I2C でつないだだけなので実物の写真いらないよね？
事情があって、ESP32 ではなく、nRF52 と micro:bit 向けに書きました。

スマホに加速度センサーがついているのに、あえてデバイス側に加速度センサーいる？って思われそうですが、まあ必要な機会もあるでしょう... (何かを振ったりとか？おもちゃとか？インタラクティブななにか？)
[MMA8452](http://akizukidenshi.com/catalog/g/gK-12069/) あたりが手軽で扱いやすいです。micro:bit に乗っているのは、MMA8653 というチップで Arduino だとライブラリが微妙で微妙です。
ジャイロもついてるセンサーを付けたら、もっと面白いことできるかな？首を振ったときだけ動くとか。

どれぐらい BLE で反応がいい感じに出るのかを試すのに使いたかっただけです。
実際、Wi-Fi 経由と違って、ほぼリアルタイムに値をやり取りできます。
低消費電力で待機とかもできるので、落としたときに検出とか、そういう事もできますかね。

- Firmware (nRF52): https://github.com/techno/line-things-snippets/tree/master/nrf52/arduino/nrf52-mma8452
- Firmware (micro:bit): https://github.com/techno/line-things-snippets/tree/master/microbit/arduino/microbit-mma8653
- LIFF: https://github.com/techno/line-things-snippets/tree/master/liff-app/accelerometer

## パルスオキシメーター (脈拍、酸素飽和度)

<img src="https://qiita-image-store.s3.amazonaws.com/0/29906/895f2304-3328-b419-ee7b-049b90bcdacf.jpeg" width="400"> <img src="https://qiita-image-store.s3.amazonaws.com/0/29906/111ad847-89e6-a2eb-a090-3de49f4b9b19.png" height="320">

ちょっと毛色が変わって、パルスオキシメーターと呼ばれる、脈拍と血中の酸素飽和度が測れるセンサーのサンプルを作ってみました。
睡眠時無呼吸症候群とかの判定に使うようなものらしいです。
ユニバーサル基板とか、ブレッドボードだと安定して計測するのはなかなか難しいですが、それなりに測れます。

Maxim から出ている [MAX30100](https://ht-deko.com/arduino/pulse_i2c_max30100.html) や MAX30102 と呼ばれるセンサーが、比較的安価で気軽に入手可能です。
ただし、I2C のレベルが 1.8V なので、場合によってはレベル変換が必要かも。
(ESP32 + MAX30100 だと、レベル変換なしではうまく動作しなかった)

- Firmware: https://github.com/techno/line-things-snippets/tree/master/nrf52/arduino/nrf52-max30100
- LIFF: https://github.com/techno/line-things-snippets/tree/master/liff-app/pulseoximeter

## BLE ラジコンカー

<img src="https://qiita-image-store.s3.amazonaws.com/0/29906/9e20b50c-bd1b-d023-0937-84596d91d6d8.jpeg" width="400"> <img src="https://qiita-image-store.s3.amazonaws.com/0/29906/7040bcec-c312-e254-5ee5-b9a83b0f9d96.png" height="320">

スマホで操作できる、おもちゃのラジコンです。
日曜の電子工作にはちょうどいい規模じゃないでしょうか？

ここまでは、センサーとか値を取得する側に徹してきましたが、Bluetooth は双方向で通信できるので、何かをスマホから操作することも可能です。
Wi-Fi 経由でラジコンを作ると反応が悪くて操作するのに苦労することもありますが、BLE ならラクラクです。
BLE モジュール側で出す電波の強さによりますが、結構遠く離れても操作可能です。

回路は、TI の [DRV8830](http://www.tij.co.jp/product/jp/DRV8830/toolssoftware) という、I2C で制御できるモータードライバを4つ使っています。とても便利で、秋月などで手に入ります。

- http://akizukidenshi.com/catalog/g/gK-06273/
- http://prod.kyohritsu.com/KP-DRV8830.html

画像では、18650 というリチウムイオン電池を載せてバッテリー駆動できるようにしていますが、単3電池2本とかでも動かせます。LiPo や 18650 を使えば、Adafruit のボードは充電回路を搭載しているので、このまま充電したりできます。

これを真似して作る人向けの注意ですが、モータードライバの電源は、3.3V ではなくて VBus か VBat を使いましょう。その場合にモータードライバの信号レベルとマイコンボード側の信号レベルが変わってしまうので、レベル変換する必要があります。

- Firmware: https://github.com/techno/line-things-snippets/tree/master/nrf52/arduino/nrf52-drv8830-4wd
- LIFF: https://github.com/techno/line-things-snippets/tree/master/liff-app/rc-car

## とにかく小さくしてみた

<img src="https://qiita-image-store.s3.amazonaws.com/0/29906/1dd96e54-5a0b-d5f1-75b9-ee4fe38de6e6.jpeg" width="320"> <img src="https://qiita-image-store.s3.amazonaws.com/0/29906/c19bb6e8-79b6-1ef2-dd79-d0b8f5f11d36.jpeg" width="320">

秋月電子通商で売っている [AE-TYBLE16](http://akizukidenshi.com/catalog/g/gK-12339/) という、DIP-16 の IC サイズの BLE モジュールを使って、スイッチ・LED・温度計を搭載してみました。

CR2032 というボタン電池を裏側につけられて、これだけで動作します。
Arduino で開発すると、頑張っても数日とかそんなに長時間は動かないかもしれませんが...

Wi-Fi と違って、Bluetooth LE は低消費電力で CPU 側の処理能力もそれほどいらないので、小型のモジュールがたくさん出ているので、これぐらいのサイズも可能です。
趣味で作るとなると、限界がありますが... 

AE-TYBLE16 の LINE Things 向けの使い方はこちら

 - [小型 Bluetooth LE モジュール AE-TYBLE16 で LINE Things Starter してみる](https://qiita.com/hktechno/items/f594f87493fbe11de3fb)


# もっと高度な作例

お仕事では、もうちょっと高度な作例を作ったりしてました。

- [LINE Things でつくったプロトタイプデバイスの話](https://engineering.linecorp.com/ja/blog/line-things-prototype/)
- [LINE Thingsで自己紹介!? E inkを使ったLINE Thingsの活用事例](https://engineering.linecorp.com/ja/blog/line-things-poc-device-ecard/)

体重計と、LINE アカウントや画像を自由に書き換え可能な電子ペーパーを利用したカードです。
このレベルになると、ユニバーサル基板やブレッドボードだけではちょっと実現が難しいので、日曜工作でとはいかないと思いますが、LINE Things を使うとこんなものも作れます。

# その他、世界の誰かが作った作品例

- [LINE Thingsを使ってすこし実用的なサーモグラフィーを作った話](https://qiita.com/cpulabs/items/8b77a2e140fff10f177a)
- [LINE Thingsで作った勤怠管理システムを解説してみる #linethings](https://qiita.com/n0bisuke/items/98ba8b0cb8b843c7cc38)
- [LINE Thingsでお年玉を楽しくする](https://techblog.kayac.com/otoshidama-iot)
- [Vue.js × LINE Payでリアルガチャを作ってみた](https://speakerdeck.com/torisankanasan/vue-dot-js-x-line-payderiarugatiyawozuo-tutemita-8e3644c6-7c16-404e-879d-59643a6bfb1d)

# まとめ

LINE Things でなにか作ってみましょう。楽しいよ！