NTKSの要件
- 自宅(奥さん側)から能動的なアクションは不要にしたい、寝かしつけを開始するときに毎回メールやLINEを送るのは面倒
→何かしらのセンシングで寝かしつけの開始を自動判定したい - もし子供が触ることがあっても危険でないこと
→感電しにくい、怪我をしにくいこと - 自分が開発しやすい環境であること
→Mac OS、Arduino IDEの環境で開発できると嬉しい
左から右へ、我が家の寝かしつけへ至る流れ |
NTKSを開発運用する上でどんなことを大事にするかリストアップしてみました。前作の光る帽子のときと違って、どこかで展示をするというものでもないので比較的条件は軽めです。とはいえ子供が触る可能性があるので基板むき出しはできるだけ避けたいところです。
システム構成の検討
続いてシステム構成を考えます。システムは大きく分けて自宅のセンシングをするためのシステムと、クラウド上での寝かしつけ状態を表示するためのシステムの2つに別れます。
システム概要(という名のイメージ図) |
寝かしつけをしているかどうかの判別するためにどのような情報を送ればよいかについては、光センサーを部屋に置いてその計測データを分析すればわかるのではないかという仮設を立てました。これは我が家では寝かしつけの開始時に部屋を暗くして、寝かしつけが終われば部屋を明るくしている為です(正確には寝かしつけをしている隣の部屋に光センサーを置いています)。
そして、光センサーの計測データを分析、表示するにはAmbientというサービスを利用することにしました。
Ambient
Ambientは各種センサーの計測データなどIoTデータをグラフィカルに表示してくれるサービスなのですが、Arduino、mbed、Raspberry Piなど様々なプラットフォームで利用できるライブラリやサンプルファイルを提供していて、もちろんM5Stackの開発環境(Arduino IDE)にも対応していることが大きな要因でした。
下記URLを参考に、Ambientのアカウントとグラフを表示するためのチャネルを開設してライトキーを取得します。
Ambientを使ってみる
M5Stask Basic とデジタル光センサーの購入
M5Stask Basic とデジタル光センサーの購入にはスイッチサイエンスさんを利用しました。下記URLから同じ製品を購入することができます。
M5Stack Basic
GROVE - I2C デジタル光センサー
前作の光る帽子では9軸センサの値を使ってNeoPixelを制御していたのでM5Stack Grayを購入しましたが、今回はデジタル光センサーのみを利用するので、一番構成がシンプルで安価なM5Stack Basicを選びました。
M5Staskを使ったデジタル光センサーの制御
それではM5Stackを使って、デジタル光センサーの値を取得します。購入したデジタル光センサーはGROVEでの接続なので、デジタル光センサーに付属しているケーブルでデジタル光センサーとM5Stackを接続するのみでハードウェアの準備は完了です。次にソフトウェア側の設定をおこないます。
Grove - Digital Light Sensor
http://wiki.seeedstudio.com/Grove-Digital_Light_Sensor/
上記URLを参考に、
- デジタル光センサーのライブラリファイルをダウンロードする
https://github.com/Seeed-Studio/Grove_Digital_Light_Sensor/archive/master.zip - ダウンロードしたファイルをArduino IDE に取り込む
手順:Sketch > Include Library > Add .ZIP Library.
を選択し、ダウンロードしたファイルを選択する
http://wiki.seeedstudio.com/How_to_install_Arduino_Library/ - 下記手順でサンプルファイルを開く
手順:File -> Example ->Digital_Light_Sensor->Digital_Light_Sensor.
を選択する
を実行します。
サンプルファイルをコンパイルして実行すると、デジタル光センサーから読み取った値を確認することができます(サンプルファイルはArduino用なので、M5Stackのディスプレイ上には表示されません、Arduino IDEからシリアルモニタを起動して値を確認してください)。
M5StaskからAmbientへのデータ送信
次に取得したデジタル光センサーの値をAmbientへ送信します。
M5StackでセンサーデーターをAmbientに送る (Arduino編)
上記URLを参考に、
- Ambientのライブラリファイルをダウンロードする
https://github.com/AmbientDataInc/Ambient_ESP8266_lib/archive/master.zip - ダウンロードしたファイルをArduino IDE に取り込む
手順:Sketch > Include Library > Add .ZIP Library.
を選択し、ダウンロードしたファイルを選択する - 下記手順でサンプルファイルを開く
手順:File -> Example ->Ambient ESP8266 lib->Ambient_BME280.
を選択する
を実行します。
そしてサンプルファイルをベースに、Wi-Fiの設定、Ambientの設定、デジタル光センサーの設定を追加します。
Wi-Fiの設定(サンプルファイルの16-17行目)
Ambientの設定(サンプルファイルの19-20行目)const char* ssid = "your ssid"; ←接続するアクセスポイント名を記載const char* password = "your password"; ←接続するアクセスポイントのパスワードを記載
デジタル光センサーの設定として、サンプルファイルの最初にunsigned int channelId = 100; // Ambient上で開設したチャネルのIDを記載const char* writeKey = "writeKey"; // チャネルのライトキーを記載
#includeを追記、void setup()内に
TSL2561.init();
を追記、void loop()内に
int light;
light = TSL2561.readVisibleLux();
ambient.set(1, String(light).c_str());
ambient.send();を追記します。 BME280に関係する部分は利用しないので削除してください。
これでサンプルファイルをベースにデジタル光センサーの値をAmbientへ送る準備が整いました。
Ambientでのデータ確認
実際にプログラムを実行して、一日計測をしてみた結果がこちらです。とある一日の照度データ |
0 件のコメント:
コメントを投稿