Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
0
Help us understand the problem. What is going on with this article?
@AkiraKashihara

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

More than 3 years have 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/

0
Help us understand the problem. What is going on with this article?
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.
Sign Up
If you already have a Qiita account Login
0
Help us understand the problem. What is going on with this article?