M5StickCで玄関のチャイムに気付けるようにした

背景

1月前くらいに引っ越したんですが,作業部屋で音楽を流しながら作業をしていると玄関のチャイムが聞こえなくて,宅急便の不在票が入っているということが何度かありました.
流石になんとかしようということで,M5stickCをつかってなんとかできないかを考えました.

考えた流れが以下の感じ.

音→M5StickC(マイク)→FFT,チャイムの音判定→IFTTT→PC・スマホに通知

f:id:nyarurato:20200501165251p:plain
かんたんな流れ

M5Stick内でFFTをかけて,チャイムの音の特徴みたいなのを条件にしてやればいけるかな・・・と考えました.
あとはIFTTTを使えばどこにでも通知を投げられるので.

解析しようとしてみた

これが我が家の玄関のチャイム.スマホでインターホンに向けて録音したもの.
soundcloud.com

f:id:nyarurato:20200501215744p:plain
ピンポ~ン

「ピンポーン」の「ピン」はG#5っぽい,ピークは828Hz

f:id:nyarurato:20200501215847p:plain
「ピン」の周波数解析の結果

「ピンポーン」の「ポ~ン」はE5っぽい,ピークは672Hz

f:id:nyarurato:20200501215941p:plain
「ポ~ン」の周波数解析の結果

音声には詳しくはないが,M5StickCのマイクで音を拾って,G#5の音が連続したあとにE5の音が続いたら玄関のチャイムが鳴っていると判断すればよいのかな?と考えた.

実装

いろんなところを参考にしてキメラにしました.
いろいろと実験しながら進めた結果,FFTのピークの周波数だけ(直流成分に近いものは無視)見て,G#5の音が連続したあとE5が流れたらwebhookでIFTTTに投げるようにしています.
IFTTTからはスマホにはLINEで通知,PCにはPushbulletで通知を出しています.

gist.github.com
参考:
qiita.com
lang-ship.com
homemadegarbage.com
ambidata.io

結果

インターホンに反応して通知を送ってくれるようになりましたが,TVの音等に反応して誤動作もします.
改善の必要がありますが,とりあえずは宅急便が来ることが分かっているときに電源をいれるようにして様子見します.