前回はM5StickCとロードセルで「はかり」が完成しました。
今回は「はかり」で測定した値を、時系列のグラフとして見れるようにしたいと思います。
クラウドを使う
測定結果をアップロードし続けることで、それらのデータを可視化して表示してくれる、無料のクラウドサービスがあります。MathWorksのThingSpeakや、日本の会社のAmbientなどです。どちらも無料で利用できますが、保存できるデータの数に制限があります。ちょっと調べてみました。
ThinkSpeakの無料版
ThingSpeak™ Licensing FAQのページによると
・最大4チャネル
・1年間に300万メッセージ/年 or 8200メッセージ/日
・メッセージの送信間隔は最低15秒
Ambient(無料)
Ambient 諸元/制限のページによると
・最大8チャネル
・8000件/日
・メッセージの送信間隔は最低5秒
どちらも、メッセージ数は同じくらいですが、Ambientの方が8チャネル保存でき、送信間隔も短いですね。チャネルはデータを保存する箱のようなもので、用途ごとに区別してデータを保存することができます。
あと大きいのはAmbientは日本語でokなんですね。というわけでAmbientを使ってみたいと思います。
Ambientのセットアップ
ユーザー登録
Ambientのホームページの右上に[ユーザー登録(無料)]のボタンがあるので、それをクリック。
メールアドレスと、好きなパスワードを入れて[ユーザー登録(無料)]ボタンをクリックします。すると、設定したメール宛に「Ambient 新規登録確認メール」というメールが届きます。
が、私のgmailの場合は、迷惑メールに入ってしまい、しばらく気づきませんでした。すぐに届ていたようなので、しばらくしても届かなければ、迷惑メールフォルダを確認してみてください。
届いたメールに記載のURLをクリックすると、登録が完了します。
チャネルを作る
[My チャネル]で[チャネルを作る]をクリックすると、チャネルが1つ追加されます。これでデータを入れる箱ができました。
ここに表示されている、ユーザーキーと、ライトキーを使って、M5StickCからAmbientにデータを送ります。
M5StickCのプログラム
Ambientのライブラリを追加
公式のこのページにライブラリーのインポートの方法が書いてあります。公式のGitHubからCloneのzipファイルをダウンロードして、インポートします。
私の場合はインポートせずに、srcフォルダの中の「Ambient.cpp」「Ambient.h」のファイルを、Arduinoのプロジェクトフォルダの中に入れて使うことにしました。
プログラムの作り方
これが、とてつもなく簡単なんです。
... #include "Ambient.h"//ヘッダファイルをインクルード ... Ambient ambient; //Ambientクラスを生成 void setup() { ... ambient.begin(channelId, writeKey, &client); // チャネルIDとライトキーを指定してAmbientの初期化 ... } void loop() { ... ambient.set(1, Value); //データ列1にValueの値をセット ambient.send(); //Ambientにデータを送信 ... }
5行追加するだけです。
- ヘッダファイルを読み込み
#include “Ambient.h” - クラスを生成
Ambient ambient; - 初期化
ambient.begin(channelId, writeKey, &client); - データをセット
ambient.set(1, Value); - Ambientへ送信
ambient.send();
これだけで、Ambientにデータを送信できます。3.の初期化時に、チャネルを作ったときに表示されていた、ユーザーキーと、ライトキーを指定します。
Ambientに測定結果を送信するプログラム
以前に作った「はかり」としてのプログラムに、Wifiにつなぐためのコードと、Ambientにデータを送信するコードを追加してみました。
プログラムはこちら→m5stick_ambientScaleからダウンロードできます。
//Wifi const char* WifiSSID = "SSID"; //アクセスポイントのSSID const char* WifiPassword = "POSSWORD"; //アクセスポイントのパスワード WiFiClient client; //Ambient unsigned int channelId = CHANNEL_ID; // AmbientのチャネルID const char* writeKey = "WRITE_KEY"; // ライトキー Ambient ambient;
20,21行目のWiFiのアクセスポイントの設定と、25,26行目のAmbientのチャネルID、ライトキーをご自身の環境に合わせて設定していただければ、他は変更する必要はありません。
これで、60秒に1回、Ambientに測定データを送信するプログラムができました。
エヴァちゃんで実験
愛犬「エヴァ」ちゃんのお気に入りの座布団の下に、「Ambient対応はかり」が入っています。座布団に乗っていれば、数字が上がるはずです。
本来の体重は25kgぐらいだったと思いますが、座布団があり全体重が「はかり」に乗るわけではないので、重さは1kgちょっとですね。
朝からお昼まで記録してみました。
だいたい1時間に1度、重さが0になっているので、寝ている時でも、1時間ごとに起きて水を飲むか、体を伸ばしているようです。
また、20分から30分間隔で重さが階段状に変わることから、それくらいの時間間隔で体勢変えているようです。
人用に離床センサを作りましたが、ペットの離床もこれでわかりますね。
2019.10.9 追加 つづきはこちらです
追加終わり