なんでも作っちゃう、かも。

Arduino/Make/フィジカルコンピューティング/電子工作あたりで活動しています。スタバの空きカップを使ったスタバカップアンプなど製作。最近はもっぱらArduinoと3Dプリンタの自作に興味があります。

センサーの値が一定量変化したら送信する - Wifi温度湿度計の製作(11)

Posted by arms22 on 2017年02月19日 0  0

温湿度センサー一定量変化があった時のグラフ
ESP8266 with HDC1000 Module Temperature/Humidity Monitor in Kyoto

ThingSpeakへのセンサーデータの送信間隔を一定間隔(5分)から一定量変化があったら送信するように変更しました。温度変化が激しい朝晩は5〜15分間隔、深夜から朝方にかけては温度がほぼ一定なので数時間間隔で送信しているのがわかります。1日のセンサーデータの送信回数が288回から30回〜40回に減って電池の消費量も大幅に減った、かも。これで半年ぐらい保つかな?


スケッチ


DeepSleepに入るとメインメモリのデータは保持されないので、RTCメモリにセンサーデータをバックアップして次回起動時にRTCメモリから前回データを読み出すようにしました。ThingSpeakへのセンサーデータの送信タイミングは温度±0.5度または湿度±2.0%または電源±0.02V変化があった場合としています。起床間隔は従来どおり5分。


ThingSpeakにセンサーデータを送ってグラフに表示する - Wifi温度湿度計の製作(10)

Posted by arms22 on 2016年11月04日 0  0

ThingSpeak-温度湿度グラフ
ESP8266 with HDC1000 Module Temperature/Humidity Monitor in Kyoto - ThingSpeak

さていよいよ大詰め、ThingSpeakにセンサーデータを送ってグラフに表示させるよ!


ThingSpeakって何ぞ?


ThingSpeakはIoT向けのクラウドデータサービスです。デバイスから送られた来たデータを貯めて、データを解析したりグラフに表示したり、データをトリガーに何らかのアクション(ツイートするとか)を起こしたりできます。Arduino用のライブラリがあるので簡単にデータを送ることができます。


アカウントの登録

まずはThingSpeakのページを開いて新しいアカウントを作成しましょう。Sign UpをクリックしてユーザID、メールアドレス、タイムゾーン、パスワードを入力しCreate Accountボタンをクリック。


チャンネルの作成


チャンネル作成

次にチャンネルを作成します。チャンネルには8種類のデータ・場所・状態を登録することができます。場所やデバイス毎にチャンネルを分けて作成するとよいでしょう。ここでは4つ(温度・湿度・露点温度・Vcc電圧)のセンサーデータを書き込むためのチャンネルを作成します。

  1. メニューバーの Channels > MyChannels をクリック。
  2. New Channel ボタンをクリック。
  3. 以下の情報を入力。
    Name(チャンネルの名前)
    Field1 Temperature(フィード1の名前)
    Field2 Humidity(フィード2の名前)
    Field3 Dew Point(フィード3の名前)
    Field4 Vcc(フィード4の名前)
    Make Public(公開しても良いならチェック)
  4. Save Channel ボタンをクリック


チャンネルIDと書き込み用のAPIキーの取得


チャンネルIDとAPIキー

センサーデータの書き込みにはチャンネルIDと書き込み用のAPIキーが必要です。メニューバーの Channels > MyChannels をクリックして、作成したチャンネルを開きます。Channel ID と書かれた6桁の数字がチャンネルID、API Keys をクリックして Write API Key と書かれた英数字の文字列が書き込み用のAPIキーです。


Arduino用ライブラリのインストール


ThingSpeakライブラリ

ThingSpeakにセンサーデータを書き込む為のArduino用ライブラリをインストールします。ライブラリはArduino IDEのライブラリマネージャからインストールします。Arduino IDEを起動しライブラリマネージャを開きます(スケッチ > ライブラリをインクルード > ライブラリを管理)。検索フィルターに“thingspeak”を入力し、"ThingSpeak by MathWorks"を選んでインストールボタンを押します。


スケッチ

5分毎にセンサーデータをThingSpeakに送るスケッチです。Wifi設定、ネットワーク設定、ThingSpeak設定は環境に合わせて変更してください。


処理の流れは次のとおりです。
  1. Vcc電圧を取得
  2. Vcc電圧が3.05V未満ならバッテリーの過放電を防ぐために無限スリープに入る
  3. 温度・湿度データを取得
  4. 露点温度を計算
  5. Wifi接続(リトライ3回まで)
  6. ThingSpeakに接続
  7. センサーデータを送信
  8. 5分間ディープスリープに入る
  9. 1に戻る

また消費電流を減らすため下記の対策を入れています。基本方針は「余計な電波を出さない・動作時間は短く」です。
  • ステーションモードに設定
    初期モードはステーション+APモード。APモードではSSIDを通知するためにビーコンを送信しています。このビーコンを送信しないようステーションモードに変更しています。
  • LightSleepモードに設定
    データシートによるとModemSleepよりLightSleepのほうが消費電流が少ないのでこのモードに設定しています。
  • 固定IPアドレス設定
    DHCPのやり取りが不要になるので余計な通信が減って接続時間が短縮されます。

ThingSpeak接続時にIP直指定にするとThingSpeakへの接続時間が短くなるはずですが今回は試していません。


グラフを表示する

メニューバーの Channels > MyChannels から先ほど作成したチャンネルを開くと、ThingSpeakに送ったデータが自動的にグラフとして表示されます。グラフ右上の鉛筆マークを押すとグラフをカスタマイズすることができます。


動作時間

1000mAの電池で約20日動作しました。1000mAで30日を目標にしていたのですがなかなか厳しいです。データを溜めてまとめて送るなど対策が必要です。ただThingSpeakは15秒に1回しかAPIを呼び出せないのでまとめて送るとその分動作時間が延びてより多く電力を消費してしまいます。これについてはまた次回。




該当の記事は見つかりませんでした。