Help us understand the problem. What is going on with this article?

Fast Sensingとmbedを使って温度のモニタリングをしてみる

More than 1 year has passed since last update.

今回やりたいこと

 mbedと温度センサーを使って取得したデータを、cloudに上げてモニタリングを行う。上げたデータはFast Sensing( https://fastsensing.com/ja/services/ )を使うことでブラウザでグラフにしてくれるので、今回はグラフを可視化するためのところまで行う。

データの流れ

 今回取得するデータの流れは、以下の図の通り。センサーで取得したデータをmbedで温度に直す。その後、Fast Sensingにデータをアップロードすることで可視化できる。
Qiita-Fastsensing-data.png

 ハードウェア

パーツリスト

 今回使用するパーツは以下の通り。

パーツ名 個数 購入先
LPC1768(mbed) 1 http://akizukidenshi.com/catalog/g/gM-03596/
LM60(温度センサー) 1 http://akizukidenshi.com/catalog/g/gI-02490/
mbed LPC1768用イーサネット接続キット 1 https://www.switch-science.com/catalog/555/
ジャンプワイヤー 必要数(3本ぐらい) http://akizukidenshi.com/catalog/g/gC-05371/
USBケーブル 1 mbed購入時に付属
LANケーブル 1 http://www.sengoku.co.jp/mod/sgk_cart/detail.php?code=EEHD-4XMX#

配線イラスト

 配線イラストは図の通り。特にLM60の配線は間違えると発火することがあるので、要注意。mbed LPC1768用イーサネット接続キットとの接続については、イラストにずれがあるので接続対応表を参考に接続してください。RD-またはp29との接続を合わせれば、あとのピンは合うと思います。
Qiita-Fastsensing-Ether.001.jpeg

接続対応表

 下の表が接続対応表です。左の列がmbedのピン番号(LPC1768の基板上に書いてある文字)、右の列が各パーツのピン名でカッコの中はパーツの種類を表します。

ピン名(mbed) ピン名(パーツ名)
VOUT +Vs(LM60)
GND GND(LM60)
RD- RD-(mbed LPC1768用イーサネット接続キット)
RD+ RD+(mbed LPC1768用イーサネット接続キット)
TD- TD-(mbed LPC1768用イーサネット接続キット)
TD+ TD+(mbed LPC1768用イーサネット接続キット)
D- D-(mbed LPC1768用イーサネット接続キット)
D+ D+(mbed LPC1768用イーサネット接続キット)
p30 30(mbed LPC1768用イーサネット接続キット)
p29 29(mbed LPC1768用イーサネット接続キット)
p20 Vo(LM60)

ソフトウェア

 書くコードはmbedのコードだけで大丈夫です。mbedのコードを書く前に、Fast SensingにデータをアップロードするためにFast Sensingのユーザ登録を行い、Device TokenとChannel Tokenを取得する必要があります。

Fast Sensingの準備

 開発に必要なアカウント作成やデバイス登録などは、以下のページをご覧ください。
 https://fastsensing.com/ja/developer/

ソースコード

 コードは以下になります。このコードにはFast Sensing Inc.が提供するライブラリを使用しています。以下のサイトから、いまお使いのcompilerにImportすることができます。
 https://os.mbed.com/teams/Fastsensing/code/SCP1000_Fastsensing/ 

main.cpp
/**
* このプログラムはlm60(気温センサ)を使用したサンプルコードです。
* 
*/

#include "mbed.h"
#include "Fastsensing.h"    //fastsensingライブラリをインポート

DigitalOut led[] = {LED1, LED2, LED3, LED4};      //モニタ用のLEDを定義
AnalogIn lm60(p20);         //温度センサを使うピン番号を定義
DigitalIn button(p18);      //終了ボタンのピン

Fastsensing fast;           //Fastsensingのインスタンスを作成

//プロトタイプ宣言
void displayError();        //エラーモニタ
void displayEnd();          //終了モニタ

//main関数
int main() {
   char *deviceId = "hogehogehogehoge";                         //デバイスTokenを入力、16文字
   char *channelId[3] = {"hogehoge", "hogehoge", "hogehoge"};      //チャンネルTokenを入力、8文字×3
    float temp = 0.0;                                               //温度を記憶する変数
    int status = 0;                                                 //データのアップデートのステータスを記録
    while (true) {
        temp = (3.3 * lm60 - 0.424) / 0.00625;                      //電圧を温度に変換
        printf("temp is %f degree\n", temp);                        //温度を出力
        status = fast.updateData(deviceId, channelId[0], temp, 1);         //channelIdの0番目の要素にあるチャンネルを使用する。
        if(status != 0) displayError();                                  //エラーが返ってくると-1を返して終了する。
        if(button != 0) break;                                      //ボタンが押されると終了
        wait(5.0);  //5秒待機
    }
}

//エラーをモニタするための関数
void displayError(){
    led[0] = 1;
    led[1] = 0;
    led[2] = 0;
    led[3] = 1;
    while(true){
        led[0] = !led[0];
        led[1] = !led[1];
        led[2] = !led[2];
        led[3] = !led[3];
    }    
}

//終了をモニタするための関数
void displayEnd(){
    led[0] = 1;
    led[1] = 0;
    led[2] = 0;
    led[3] = 0;
    while(true){
        led[0] = led[3];
        led[1] = led[0];
        led[2] = led[1];
        led[3] = led[2];
    }    
}

実行結果

 Ethernetの差込口にLANケーブルを接続し、電源をいれリセットボタンを押すと動き出します。このサンプルプログラムは、Tera Termなどを使うことで、動作をモニタリングすることができます。モニタリング結果は以下のようになります。Fast Sensingにサインインしたあと、ビューを選択しグラフを見たいチャンネルの名前をクリックすることで、見ることができます。
スクリーンショット 2017-07-12 19.29.45.png

お問い合わせ

 ご質問などはコメントにお願い致します。ソースコードの不具合に関しては、mbedのページでissueを発行してください。
 https://os.mbed.com/teams/Fastsensing/code/SCP1000_Fastsensing/issues/

参考URL

[Fast Sensing] https://fastsensing.com/ja/
[LM60データシート] http://www.tij.co.jp/jp/lit/ds/symlink/lm60.pdf
[mbed LPC1768用イーサネット接続キット] https://www.switch-science.com/catalog/555/
[mbed サンプルプログラム] https://developer.mbed.org/users/AkiraK/code/fastsensing_temp_sample/
[mbed Fast Sensing Library] https://developer.mbed.org/teams/Fastsensing/code/Fastsensing/

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした