Intel Edison Eaglet ボードでトイレ空き状況センサを作ってみた

会社の男性用トイレには個室が１つしかないので、
行きたいときに空いていないことが、よくありました。

で、一年程前に Intel Edison Board for Arduino を使ってトイレの空き状況センサを作ったのですが、
その時は電子工作の経験が全くなかったので、適当？！に作りました。

今回は、もっと小さくするために Intel Edison Eaglet ボードで作ってみました。
![IntelEdisonEaglet01.jpg](https://qiita-image-store.s3.amazonaws.com/0/134613/8c301fa2-d68d-b352-0de3-bcc725f5b7ae.jpeg)

# トイレ空き状況センサ　零号機
これが、一年前に作ったやつです。
簡単にできることを優先した結果がこれです。

* [Intel Edison Board for Arduino](https://www.switch-science.com/catalog/1958/)
* [GROVE ベースシールド](https://www.switch-science.com/catalog/1293/)
* [GROVE 赤外線反射センサ](https://www.switch-science.com/catalog/1321/)

![Arduino01.jpg](https://qiita-image-store.s3.amazonaws.com/0/134613/9fce5454-f2be-7ed4-129b-7f3a3a96d5a9.jpeg)

機能としては、個室の扉の開閉状態が変化したときに通知するようにしました。
そこそこ上手く出来たので、男性社員のみんなが喜んでくれました！

しかーし...
**大きすぎる！！！**
**何とか小さくしたい！！！**
と思い、作り直すことを決意。


# スイッチサイエンス版 Eaglet
今回は、スイッチサイエンス版 Eaglet で作ります。
並べてみると **大きさが全然違う！！！**
![Arduino_Eaglet01.jpg](https://qiita-image-store.s3.amazonaws.com/0/134613/ed531db5-ced4-ccda-a994-3a563f434aa5.jpeg)

Eaglet ボードには 3.3V の GROVE I2C コネクタが１つあるのですが、
今まで使用していた GROVE 赤外線反射センサは I2C 通信できないので、
I2C 通信できるセンサに変更しました。

* [スイッチサイエンス版Eaglet （MFTバージョン）](https://www.switch-science.com/catalog/2070/)
* [VCNL4010搭載 小型測距/環境光センサ](https://www.switch-science.com/catalog/2640/)

![IntelEdisonEaglet02.jpg](https://qiita-image-store.s3.amazonaws.com/0/134613/15276d95-afe8-0049-658f-632246a50eef.jpeg)

# I2C 設定

![Eaglet](https://docid81hrs3j1.cloudfront.net/imagecontent/Eaglet_desc_2.png)

Eaglet ボードの GROVE コネクタは I2C-6 が割り当てられていますが、
デフォルトでは I2C-6 が有効になっていないので、まずは使えるように設定します。

```bash
$ echo mode1 > /sys/kernel/debug/gpio_debug/gpio28/current_pinmux
$ echo mode1 > /sys/kernel/debug/gpio_debug/gpio27/current_pinmux
```

i2cdetect コマンドで接続したセンサが確認できました。

```bash
$ i2cdetect -y -r 6
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- 13 -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --                         
```

# FRISKケース

サイズ的に FRISK ケースに入りそうなので、入れてみましたが。。。
ちょっとだけ、はみ出ます　(*>ω<)
※ 現在の FRISK は少し大きくなりましたが、これは大きくなる前のものです。

![FRISK01.jpg](https://qiita-image-store.s3.amazonaws.com/0/134613/5011ee49-fd73-5869-f7db-45d68efb9e4d.jpeg)
USB Micro-B コネクタが。。。

![FRISK02.jpg](https://qiita-image-store.s3.amazonaws.com/0/134613/bf920f8d-fb7b-121d-eb33-c1254c538a60.jpeg)
（分かりにくいけど）GROVE コネクタが。。。

で、当然ですが、穴あけました。
![FRISK03.jpg](https://qiita-image-store.s3.amazonaws.com/0/134613/aa98ee46-d181-b081-a341-56217bd95fb2.jpeg)
思ったより綺麗にできた！

ぴったり感が、すごくいい！！！
![FRISK04.jpg](https://qiita-image-store.s3.amazonaws.com/0/134613/d4ee166b-45a5-05de-5990-210dad103417.jpeg)


# トイレ空き状況センサ　初号機

ついに完成！！！

![connected.jpg](https://qiita-image-store.s3.amazonaws.com/0/134613/9d3525dc-ece0-dc3f-042a-abe7f96f0bcf.jpeg)

無駄に大きくて、基板むき出しだったものが、ここまで小さく綺麗にできたので、
ちょっとうれしい。 ヽ(^o^)ノ

# おわりに

今回は、プログラムのことを全然書かなかったけど、
どんなものを作ったか簡単に書いておきます。

* **node.js** で作った
* トイレ個室の扉の**開閉状態が変化したときに通知した（Web Push）**
* 光センサも搭載しているので、**扉が閉まっているときに電気を消されたら通知した（Web Push）**
* トイレの空き状況は、**Web ページと Chrome 拡張機能で確認できるようにした**

苦労した点をあげるならば、node.js で I2C 通信が少し面倒だったことかな。