micro:bitを使って初めての電子工作【ドア開閉センサーを作ろう】

# micro:bitとは？
micro:bitは、イギリスのBBC放送が主体となり開発した教育向けのマイコンボードです。
日本では、2017年に技適を取得して、現在、株式会社スイッチエデュケーションから販売されています。
主に子供向けのプログラミングボードとして販売されていますが、日本では子供よりも大人が飛びついている印象です。（私だけかもですが...）
小型で安価（2160円）ながらも、入力インタフェースや、センサーがついており、micro:bit一台で様々な電子工作ができるのが魅力です。

# micro:bitに内蔵されている入力インタフェースやセンサー
micro:bitには、システムスイッチ以外に、2つの物理ボタン、25個のLEDがついています。このLEDは出力インタフェースとしてだけでなく、光センサーとしても活用できます。
また、コンパス、加速度センサーも内蔵されています。
micro:bitの最大の特徴はBLE（Bluetooth Low Energy）ではないでしょうか。
BLEはmicro:bit同士の通信や、micro:bitとBluetooth機器の通信、そして制御も可能にします。まさにIoTにはうってつけのデバイスでしょう。

# プログラム環境
micro:bitには複数の開発環境が用意されています。
（詳しくはこちら： https://microbit.org/ja/code/ ）
micro:bit公式では、「JavaScriptブロックエディタ」「Pythonエディター」の2つの開発環境があります。
いづれも、Webブラウザ上で開発ができますので、インストールなどが不要なのも魅力です。Webブラウザを使用しますが、開発はオフラインでも行え、データ自体は自身のPCに保存されますので、ネットワークが無い環境でも開発が可能です。
また、「micro:bit」というアプリを使い、iPhone、Androidでもビジュアルプログラミングができ、USBを使わずに、Bluetoothを使って、プログラムを書き込むことができる開発環境も用意されています。
長時間の移動の時、ちょっとものづくりしたい！そんなメイカーさん心をくすぐりますね。

# ドアセンサーのプログラム
ここまで、ざっとmicro:bitの紹介をしました。それでは、よくIoTネタなどで出てくるドアセンサーを、「JavaScriptブロックエディタ」という開発環境で作って見ましょう。

1.まずは（ https://makecode.microbit.org/#lang=ja ）にアクセスし、開発環境を確認しましょう。

<img width="1319" alt="スクリーンショット 2017-12-20 11.46.23.png" src="https://qiita-image-store.s3.amazonaws.com/0/46262/03464642-f535-2610-14e6-194e147703cd.png">

はじめにアクセスすると、上記の様なページが出てきます。
左のmicro:bitが表示されたアリアは、プレビューエリア。中央は、プログラムを選ぶエリアです。右端は、選んだプログラムを組み合わるエディター的なエリアです。

![00.jpg](https://qiita-image-store.s3.amazonaws.com/0/46262/1f2b7332-4c7d-1d2a-ad35-b0d93055e99c.jpeg)

2.それでは、早速エディターエリアに表示されていた**「最初だけ」**というブロックを選び、ブロックの周りに黄色い枠が表示されたら、キーボードの「delete」ボタンで削除しましょう。
3.残った、**「ずっと」**というブロックを使ってプログラムしていきたいと思います。

### 今回作るもののイメージを共有
プログラムを組む前に、今回作成するもののイメージを共有します。
今回はケース入りリードスイッチ（磁石付セット）ＭＣ－１４ＡＧ（参考： http://akizukidenshi.com/catalog/g/gP-04025/ ）を使い、ONかOFFかを、micro:bitに通知し、扉が閉じていれば、LEDに閉じている状態を表示し、空いていれば、LEDに空いている状態を表示するシンプルなプログラムを作成します。

4.早速プログラムですが、まずは中央の**「変数」**と書かれた箇所をクリックし、**「変数（変数）を（0）にする」**ブロックを選び、エディタの、**「ずっと」**ブロックの下に設置します。

<img width="1308" alt="スクリーンショット 2017-12-20 12.07.59.png" src="https://qiita-image-store.s3.amazonaws.com/0/46262/fd50683a-1f48-1643-dbe2-8d8b72e92adb.png">

5.先ほど配置した**「変数（変数）を（0）にする」**ブロックの**（変数▼）**をクリックして**「変数の名前の変更」**から新しい変数「sensor」を作成します。

<img width="407" alt="スクリーンショット 2017-12-20 12.13.25.png" src="https://qiita-image-store.s3.amazonaws.com/0/46262/19561f42-a49d-2558-b15c-312d2d69dcdb.png">

6.次に中央の**「入力端子」**と書かれた箇所をクリックし、**「アナログ値を読み取る端子（P0）」**ブロックを選び、エディタの、**「変数（変数）を（0）にする」**ブロックの**（0）**の箇所にはめ込みます。

<img width="586" alt="スクリーンショット 2017-12-20 12.16.08.png" src="https://qiita-image-store.s3.amazonaws.com/0/46262/36d5ccf7-9b15-45fc-09b1-97efbc83c815.png">

この様にブロックを組み合わせる事で、プログラムが作れてしまいます。細かい説明を書くと長くなるので完成図はこちら。
3分クッキング方式です。なんと簡単ですね！

<img width="616" alt="スクリーンショット 2017-12-20 12.18.48.png" src="https://qiita-image-store.s3.amazonaws.com/0/46262/ae241247-088b-30fd-d924-bcfc094e72f1.png">

「JavaScriptブロックエディタ」はjavascriptでも入力できますので、ブロックも作るのも面倒だという方は、こちらをコピペしてください。


```javascript:qiita.rb
let sensor = 0
basic.forever(() => {
    sensor = pins.analogReadPin(AnalogPin.P0)
    if (sensor > 3) {
        basic.showLeds(`
            . . . . .
            . # . # .
            # . . . #
            . . . . .
            . . . . .
            `)
    } else {
        basic.showLeds(`
            . . . . .
            . . . . .
            # # # # #
            . . . . .
            . . . . .
            `)
    }
})
```
7.なんと簡単にできました。軽く説明しますと、micro:bitのP0ピンを使い、値が3以上になる場合は、LEDを「ドアが空いている」状態にし、それ以外はLEDを「ドアがしまっている」状態にするというシンプルなプログラムです。

あとは、**「ダウンロード」**ボタンをクリックして、.hexというファイルをPCに接続したmicro:bitのファイルに保存するだけです。自動的にmicro:bitとPCの接続がきれたら書き込み完了です。

# 配線
プログラムの書き込みが終われば次は配線です。用具を整えましょう。

- micro:bit本体
- micro:bit電池パック（なければmicroUSBとモバイルバッテリーかACアダプタ）
- ワニ口クリップ2本
- ケース入りリードスイッチ（磁石付セット）ＭＣ－１４ＡＧ（参考： http://akizukidenshi.com/catalog/g/gP-04025/ ）

下記の様に繋いで電源ONで出来上がりです。少々説明が雑ですが、まんま繋ぐしかないので、頑張ってください。

![IMG_41762.png](https://qiita-image-store.s3.amazonaws.com/0/46262/6a029ec8-7901-9b63-e721-956804a3b0bd.png)

# 完成
![download.gif](https://qiita-image-store.s3.amazonaws.com/0/46262/743d104a-fde2-3a39-8658-3bb7500f482b.gif)




いかがでしたでしょうか？プログラム初心者も、電子工作初心者も比較的簡単に作れちゃうのではないでしょうか？
IoT的にBluetoothを使って....と行きたかったのですが、長くなったのでまた今度！
これを期に、電子工作初めて見てください。

こちらの記事は、IoTLT Advent Calendar 2017（ https://qiita.com/advent-calendar/2017/iotlt_neo )様に書かせていただきました。