スポンサーリンク

ベッドに敷かない「はかり式」の離床センサーを作っています(その3:測定結果をAmbientでグラフ化)

スポンサーリンク

前回はM5StickCとロードセルで「はかり」が完成しました。

今回は「はかり」で測定した値を、時系列のグラフとして見れるようにしたいと思います。

スポンサーリンク

クラウドを使う

測定結果をアップロードし続けることで、それらのデータを可視化して表示してくれる、無料のクラウドサービスがあります。MathWorksのThingSpeakや、日本の会社のAmbientなどです。どちらも無料で利用できますが、保存できるデータの数に制限があります。ちょっと調べてみました。

ThinkSpeakの無料版

ThingSpeak™ Licensing FAQのページによると

ThinkSpeakの無料版
・最大4チャネル
・1年間に300万メッセージ/年 or 8200メッセージ/日
・メッセージの送信間隔は最低15秒

Ambient(無料)

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行追加するだけです。

  1. ヘッダファイルを読み込み
    #include “Ambient.h”
  2. クラスを生成
    Ambient ambient;
  3. 初期化
    ambient.begin(channelId, writeKey, &client);
  4. データをセット
    ambient.set(1, Value);
  5. 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 追加 つづきはこちらです

追加終わり

 

コメント

  1. ボードは何を選択してますか?
    また、
    #include
    のプログラムでエラーがおきているのですがなにか設定の問題なのでしょうか?

    • このプログラムに限らず設定の「ボード」には書き込みたいターゲットのボード名を指定するのが決まりごとになっています。
      記事のプログラムはM5Stick-Cを想定しています。
      私の環境では正常にコンパイルできましたよ。

      • 環境によってエラーが起きてしまうと難しいですね
        無線による測定方法については可能なのでしょうか?

        • 私は使ったことはありませんが、ESP Nowという機能を使うと、他のM5Stick-Cなどに比較的簡単にデータを送信することができるようです。
          ESP Nowで調べてみてはいかがでしょうか。

          • ありがとうございます。
            調べてみます。

            ambientscaleのプログラムのファイルの中にMACOSXというファイルがあるのですがどちらを使用したらよろしいのでしょうか?

          • MACOSXフォルダはwindowsでは不要なので、削除してかまいません。

          • 色々調べたのですが、やはりコンパイルエラーが解消されませんでした…
            「ボードM5Stick-Cに対するコンパイル時にエラーが発生しました」を消すことができません
            このエラーメッセージに心を折られそうです笑

          • ライブラリマネージャーからM5Stick-Cのライブラリはインストールしましたか?
            [ツール]→[ライブラリを管理]→「M5Stick-C」で検索しインストール

          • インストールしてます

          • 何行目でどんなエラーが発生しているのか分からないので、こちらでは解決策が検討することができません。
            別のパソコンで環境をセットアップして、プログラムをコンパイルしてみてはいかがでしょうか。

          • どうやらcppファイルなどがある場所に関係ないファイルがあることが問題だったようです。
            ロードセルで計測した数値を表示させる方法またはエクセルなどに表示する方法はわかりますか?
            追伸 あけましておめでとうございます

          • あけましておめでとうございます。
            今年もkohacraft.comをどうぞよろしくお願いします。
            コンパイルできてよかったですね。
            ambientに送信すればグラフとして表示されますよ。
            ambientに記録されたデータをダウンロードすればエクセルで開くこともできます。

          • ambientを使用しないとやはり不可能なのでしょうか?