これまで、ロードセルによる重さの測定、Ambientサーバへのデータのアップロード、Ambientからのデータの取得、IFTTT経由でのツイートと、必要なプログラムの部品を作ってきました。これらを組み合わせて、はかり式離床センサとしてプログラムを作りました。
はかり式離床センサの仕組み
仕様
- 人が居なくなってから、設定した時間(ディレイ)になっても戻ってこなかったら、いないことをIFTTT経由でツイート
- 人が戻ってきたら、戻ってきたことをIFTTT経由でツイート
- 人がいると判断するしきい値を用意し、これを上回った人がいると判断
- 人が居ないと判断するしきい値を用意し、これを下回ったら人がいないと判断
- 「人がいると判断するしきい値」「人が居ないと判断するしきい値」「ディレイ」は、Ambientのパラメータ用のチャネルから定期的に受信して更新する
- 受信周期は5分毎とする
- 定期的に測定した「おもさ」をAmbientのログ用のチャネルに送信し記録して、しきい値を決める参考にする
- 送信周期は5分毎をする
- 1日ごとに再起動する(再起動してもいいタイミングならば)
プログラムを作る
Arduinoでプログラムを作りました。650行くらいのコード量でした。
実験
愛犬「エヴァ」ちゃんで正常に動作するかテストします。
ベッドの製作
床に、センサを置きます。
網を敷きます。
補強のためダンボールを載せます。
お気に入りの座布団を載せれば、特製離床センサ内蔵ベッドの出来上がり。
「おもさ」の変化を記録
一晩記録してみました。Ambientに記録された結果がこちら。
いろいろなデータが記録されていますが、青い線が「おもさ」のデータです。
18:00〜6:00くらいが、ベッドに乗っていない期間(途中の少し軽いのは網だけ)。
6:00〜15:00くらいが、ベッドに愛犬が乗って寝ている期間。
これを見ると、ベッド自体の重さは1.5kgで、愛犬が乗ると最低6kgぐらいで、最大12kgぐらいになりました。愛犬の実際の重さは30kgくらいなので、1/5から1/3くらいの重さとして測定されています。ベッドの足が4本あるので、上に乗っている重さがそれぞれの足に分配されるので、実際に乗っている重さの1/4前後となるんでしょうかね。
ネット越しにパラメータを変更
初期状態のパラメータは
- 人がいないと判断するしきい値:1kg
- 人がいないと判断するしきい値:2kg
- いなくなってからツイートするまでのディレイ:10秒
となっています。
一晩測定した結果から、パラメータを
- 人がいないと判断する(Low)しきい値:1kg→2kg
- 人がいないと判断する(Hi)しきい値:2kg→3kg
と、変更したいと思います。
ついでに
- いなくなってからツイートするまでの(通知)ディレイ:10秒→300秒(5分)
に変更してみます。
初期値
現在のAmbientのパラメータのチャネルは、上の図のようになっています。初期のパラメータと同じです。
M5StickCの画面にも、「L:1.0 H:2.0 D 0:10」というように初期値のパラメータが表示されています。
パラメータの変更
ここで、Ambientの値を変更します。
- 人がいないと判断する(Low)しきい値:1kg→2kg
- 人がいないと判断する(Hi)しきい値:2kg→3kg
- いなくなってからツイートするまでの(通知)ディレイ:10秒→300秒(5分)
Ambienにあるパラメータのチャネルを変更し、しばらく待ちます。はかり式離床センサは、5分毎にAmbientを参照するので最大5分は待ちます。
5分後
Ambientから新しい値を受信して、「L:1.0 H:2.0 D 0:10」から「L:2.0 H:3.0 D 5:0」とパラメータが更新されました!!
ツイートしてくれるか
ベッドに愛犬が乗ると、
「満」の絵文字と、その時間がツイートされました。
で、愛犬がベッドからいなくなると、
「空」の絵文字のツイートが、きっちり5分後にツイートされました。
ツイートの機能も正常に動作しています。
すばらしい
Ambient、IFTTT、Twitterと初めてのことばかりでしたが、これらを使って「はかり式」の離床センサができました。
ここまでは理論的なことなので進めるのは簡単。あとは、理論的でない世界でこのセンサーが受け入れられるかどうかです。
2019.11.20追加 運用開始しました。
追加終わり
コメント