Arduinoで赤ちゃん起床センサー

#はじめに

別の部屋に寝ている赤ちゃんを人感センサーでお目覚めの検知しようとするもです。


<img src="https://qiita-image-store.s3.amazonaws.com/0/203949/06e7bbc9-872d-74aa-25ac-3532a480548e.png" width=70%>

お母さんは他の家事もしますし、休憩もします。そこでセンサーで検知したら Google Home に喋ってもらいます。

#しくみ

人感センサーは静止している人は検知しなくなます。それを利用します。
赤ちゃんがゴソゴソし始めるとセンサーが検知し、しきい値以上検知したら GooglHome に喋ってもらいます。

<img src="https://qiita-image-store.s3.amazonaws.com/0/203949/578228cc-5597-8fe7-78be-947bd5f80193.png" width=70%>

<img src="https://qiita-image-store.s3.amazonaws.com/0/203949/c38cafa2-c5db-cf0a-0b2d-a3cf6df5556d.png" width=70%>


#仕様
* 検知したらLEDを点灯。カウントを+1。
* n分間で人感センサーが検知したカウントにより警戒レベルを判定。（デフォルト：n=1分)
* 警戒レベルは0、1、2の３つ。
* 警戒レベルでのしきい値を超えたらGoogle Homeを喋らせる。

|警戒レベル|しきい値|メッセージ|
|:-:|:-:|:-:|
|2|5|総員、第二戦闘配置|
|1|7|総員、第一戦闘配置|
|0|10|怪獣が起きました！|

おそらく、生息する怪獣により個体差があると思うので調整してください。

```cpp:
const char *DEFCON2 = "総員、第二戦闘配置";
const char *DEFCON1 = "総員、第一戦闘配置";
const char *DEFCON0 = "怪獣が起きました！";
// max 15
#define DEFCON2_THRESHOLD 5
#define DEFCON1_THRESHOLD 7
#define DEFCON0_THRESHOLD 10
```

#ハード

<img src="https://qiita-image-store.s3.amazonaws.com/0/203949/6dc7b071-7c0d-dfae-42fe-7c5a8d139f0e.png" width=50%>

* ESP32(ESP-WROOM-32) の開発ボード。
今回は、秋月電子の[AE-ESP-WROOM02-DEV](http://akizukidenshi.com/catalog/g/gK-12236/)
* 人感センサー(焦電センサー) HC-SR501。
* LED、抵抗
* ブレッドボード 小型
* [ユニバーサル基板](http://akizukidenshi.com/catalog/g/gP-03232/)
* ワイヤー、USBケーブル、半田

人感センサー HC-SR501 はそこそこ出回っているので、情報はありますが今回は以下の設定。

* 検知時間：最小3秒
* 検知距離：最小3m
* ジャンパ：SINGLE TRIGGER モード
* BlockTime：これは、次の検知までの時間なのだがドキュメントだ2.5秒とあるが私の場合6秒ぐらいある。他の方も同様の現象らしく、これでは少し不便。[ここのAmamzonレビューのカトンボさん]
(https://www.amazon.co.jp/HiLetgo%C2%AE-3%E5%80%8B%E3%82%BB%E3%83%83%E3%83%88-HC-SR501%E4%BA%BA%E4%BD%93%E8%B5%A4%E5%A4%96%E7%B7%9A%E6%84%9F%E5%BF%9C%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB-%E4%BA%BA%E4%BD%93%E3%81%AE%E8%B5%A4%E5%A4%96%E7%B7%9A%E3%81%AE%E6%84%9F%E5%BF%9C%E5%99%A8-%E4%B8%A6%E8%A1%8C%E8%BC%B8%E5%85%A5%E5%93%81/product-reviews/B010RYGEGM/ref=cm_cr_dp_d_show_all_btm?ie=UTF8&reviewerType=all_reviews)を参考に手を入れました。

下図の位置に、もとの1MΩのチップ抵抗と並列に100KΩの抵抗を半田で付けました。
<img src="https://qiita-image-store.s3.amazonaws.com/0/203949/ce2a5a02-6ecf-5185-4a8f-18beb09a45d9.png" width=50%>

#組み立て
回路図は[こちらのyukitterさん](https://qiita.com/yukitter/items/d726225f7cd21995897b)を参考にさせて頂きました（ピン番号は違います）。ありがとうございました。


#ソフト
* 母艦(Windows10)
* ArduinoIDE1.8.7
* ESP32拡張モジュール(1.0.0)
* esp8266-google-home-notifier(1.0.6)
* Ambientライブラリ

#esp8266-google-home-notifier
Arduino(ESP8266/ESP32)で [GoogleHome を喋らせるライブラリ](https://github.com/horihiro/esp8266-google-home-notifier)を horihiroさんが公開されています。ありがとうございます。
詳細は[こちら](https://qiita.com/horihiro/items/4ab0edf415916a2cd542)。

#Ambient
[Ambient](https://ambidata.io/)によるデータをグラフ化します。（しなくてもいいです。該当部分を削除してください。）
怪獣の動向を調査しながら、しきい値を決定しても良いと思います。
Ambientは無料で使用できます。

#ソース
こちらにソースを置いておきます。
https://github.com/nori-dev-akg/BabySleepSensor

#最後に
恥ずかしながら、私には怪獣がおらず実戦をしておりません。
本稿をみて実戦された方がおられましたら、戦果をお待ちしております。m(_ _)m

#SpecialThanks!!
[人感センサー HC-SR501](https://ht-deko.com/arduino/hc_sr501.html)
[対人センサーで侵入者を検知してSlackに通知するbot（ESP8266＆HC-SR501編）（人感センサモジュールの応用）](https://qiita.com/yukitter/items/d726225f7cd21995897b)
[ESP8266 から Google Home に喋らせるライブラリ](https://qiita.com/horihiro/items/4ab0edf415916a2cd542)