Micro;bitを使ってIoT入門してみた

# はじめに

マネーフォワードアドベントカレンダー4日目！
エンジニアのしげる(4geru)です。しげるのしは4なのでカレンダーも4日目をいただきました。

マネーフォワードでは毎年エンジニア合宿が行われています。エンジニア合宿ではそれぞれが好きな技術について2日間開発してみようという試みです。自分はIoTデバイスに初めて挑戦して楽しいと思ったので紹介します。

## IoTデバイスの盛り上がり
今年の5月からAndroid Thingsがリリース。11月にLINE ThingsがリリースなどIoTデバイスがリリースされました。IoTLTなどIoTのコミュニティも広がりつつあります。

7月に開かれたエンジニア合宿で、IoT入門をしてみたかったので、Micro;bitという教育用のGUIプログラミングが可能なデバイスを買って遊んでみました。自分の趣味がLINEということもあって、最終目標はLINE Beaconを使って通知を飛ばすことを目標にしました。

とても簡単にできたのでぜひ購入して遊んでみてください(※Micro;bitとLINEの回し者ではありません。

# Micro;bitとは
デバイスの説明をします。[Micro;bit](https://makecode.microbit.org/#)とは、Microsoftが提供しているプログラミング教育用のデバイスです。Scratchを利用したGUIプログラミングが可能で簡単にプログラミングすることが可能です。世界中の様々な学校でプログラミング教育の一環として導入されています。

Micro;bitには様々なセンサー/インターフェイスが搭載されています。そのためMicro;bitのみで様々なプログラムを表現することができます。

- 2つのボタン
- モーター・LEDなど電気部品を接続可能な端子
- 光センサ
- 温度センサ
- 加速度センサ
- Bluetoothデバイス
- USBインターフェイス

言語はNode/Python/Scratchに対応しています。Scratchのtutorialも存在し一つのtutorialが5分程度で終わるもので簡単に開発することが可能です。

# したこと
2日間の合宿だったためMicro;bitの機能を一通り知る。Beaconを使ってLINEに通知を飛ばすということを目標にしました。したことは次の通りです。

1. Micro;bitのtutorialを一通りしてみる。
2. LINE Beaconの設定。LINEに通知を飛ばしてみる。

## 1. Micro;bitのtutorialを一通りしてみる。
1日目はMicro;bitに慣れるために5つのチュートリアルをしました。
どのチュートリアルも5,10分程度でサクッとできました。どのチュートリアルも新しいことをできるため、楽しみながら作ることができました。

- [【ボタン】数当てゲーム](https://microbit.org/en/2017-03-07-guess-the-number/)
    - ボタンを押すと0-9の数字を表示さする
- [【気温センサー・ジャイロセンサー】Temperature Activity](https://microbit.org/en/2017-03-07-temperature/)
    - Micro;bitを振るとジャイロセンサーが反応しLEDに現在の気温が表示する
- [【PIN】スマイルLEDライト](https://microbit.org/en/2017-03-07-smiley-buttons/)
    - PINとGNDを押すことでLEDに表示する
- [【乱数表示】Truth or Dare](https://microbit.org/en/2017-03-07-truth-or-dare/)
    - ランダムでTrue or Falseを判定しLEDに表示する
- [【PINの使い方】Love Meter](https://microbit.org/en/2017-03-07-love-meter/)
    - pinを押して乱数で相性を表示する

## 2. LINE Beaconの設定。LINEに通知を飛ばしてみる。
#### 2.1. 設定から拡張機能を選択します。

<img width="300" alt="Microsoft MakeCode for micro:bit 2018-12-03 10-27-10.png" src="https://qiita-image-store.s3.amazonaws.com/0/64677/09c863e1-d1cb-a2f5-7991-0af46fbf60d7.png">

#### 2.2. 拡張機能の中からline beaconを選択します。
<img width="300" alt="Microsoft MakeCode for micro:bit 2018-12-03 10-29-28.png" src="https://qiita-image-store.s3.amazonaws.com/0/64677/445ded7c-8f8c-d97a-cab9-723f61ae324e.png">

### 2.3. LINE Beaconの拡張を選択することができます。
<img width="300" alt="Microsoft MakeCode for micro:bit 2018-12-03 10-32-17.png" src="https://qiita-image-store.s3.amazonaws.com/0/64677/34a34daa-afcc-41e6-42aa-c453e99b0b9d.png">

### 2.4 LINE Beaconの登録
[LINE Beaconの登録画面](https://admin-official.line.me/beacon/register#/)から、アカウント一覧から紐付けるアカウントを選択します。

<img width="300" alt="LINE OFFICIAL ACCOUNT MANAGER 2018-12-03 23-48-42.png" src="https://qiita-image-store.s3.amazonaws.com/0/64677/508d199a-931e-b03d-3ac0-98dd0e32047b.png">

### 2.5 ハードウェアIDを発行
<img width="300" alt="LINE OFFICIAL ACCOUNT MANAGER 2018-12-03 23-58-43.png" src="https://qiita-image-store.s3.amazonaws.com/0/64677/86b5722e-e195-8af9-df20-6bad349af08e.png">

### 2.6. 次のようにブロックを設置し、先ほど取得したハードウェアIDを設定します。
<img width="300" src="https://qiita-image-store.s3.amazonaws.com/0/64677/d5244b8f-7668-76ca-c205-a4486cc7b81e.png">

Beaconの設定は以上で終わりです。LINE Botの説明をすると長くなるので是非、調べてみてください。
参考にRubyでのLINE Botの作り方を記載しておきます。

# まとめ
対象年齢が8歳からと小学生でも簡単にできるため、親子でも一緒にできます。
Javascript/Pythonを使うことで本格的なプログラミングが可能です。自分ももっと遊び尽くしてみたいです。
パッケージ化して公開もできます。今回の[LINE Beacon](https://github.com/pizayanz/pxt-linebeacon)もOSSとして公開されているパッケージです。今回紹介したLINE Beacon以外にも様々なパッケージが公開されているので遊んでみてください。
Obnizなど様々なデバイスが出ています。わいわい！2019年も楽しみだぞい！

# 参考文献
- Micro;bitについて
  - [Micro;bit](https://makecode.microbit.org/#)
  - [Micro;bitの機能](https://microbit.org/ja/guide/features/)
  - [carlosperate/awesome-microbit](https://github.com/carlosperate/awesome-microbit)
  - [micro:bit Lab.へようこそ](https://sanuki-tech.net/micro-bit/)
- Pythonでの書き方
  - [Pythonエディタ](https://python.microbit.org/v/1.1)
  - [Pythonの公式ドキュメント](https://microbit-micropython.readthedocs.io/en/latest/tutorials/hello.html)
- Micro;bitでの工作
    - [micro:bitで赤外線リモコン100V家電のOFF/ON](https://qiita.com/asondemita/items/40e3d24a155d3dae71c5)
    - [micro:bitを使って初めての電子工作【ドア開閉センサーを作ろう】](https://qiita.com/cw-hirama/items/021724091ce5bd59d0db)
    - [マイクロビット工作 – Let's Enjoy Programming](http://xn--r9j1d0b6i8jx814a8sl.com/category/microbit/%E3%83%9E%E3%82%A4%E3%82%AF%E3%83%AD%E3%83%93%E3%83%83%E3%83%88%E5%B7%A5%E4%BD%9C/)
    - [マイクロビット2台で無線通信してみたよ！](http://xn--r9j1d0b6i8jx814a8sl.com/microbit-wireless-communication/#2)

- Micro;bitのパッケージ
  - [micro:bit のカタカナ表示ブロック（パッケージ）](https://qiita.com/asondemita/items/6b44930839e3456856bb)
  - [LINE Beaconのパッケージ](https://github.com/pizayanz/pxt-linebeacon)

- LINE botについて
    - [【LINE bot】初めてのおみくじbot](https://qiita.com/4geru/items/438a2dfcaf9eea4bdbb5)