mbedはARMアーキテクチャーのプロセッサーを使ったワンボードマイコンとプログラム開発環境です。 プロセッサーは32ビットでパワフル、 開発環境はWebベースでインストール不要ですぐに使い始められ、非常に便利です。 このmbedを使って、温度・湿度を測定し、Ambientに送ってグラフ化してみます。

ハードウェアの準備

mbed対応のマイコンボードにはたくさんのバリエーションがあります。 ここでは一番ポピューラーなLPC1768を使いました。 LPC1768にはプロセッサーの他にイーサーネット、USB、I2C、SPIなど豊富な インターフェースがあり、センサーをつなぐだけでIoT端末を作ることができます。 今回センサーとしてはArduinoの事例と同じHDC1000という温度・湿度センサーを使いました。 回路図を次に示します。 LPC1768とHDC1000だけの非常にシンプルな回路で温度・湿度を測定するIoT端末が構成できます。

出来上がったものはこんな感じです。

プログラム

プログラムはこんな感じです。

    #include "mbed.h"
    #include "EthernetInterface.h"
    #include "Ambient.h"
    #include "HDC1000.h"

    unsigned int channelId = 357;
    const char* writeKey = "ライトキー";
    AMBIENT ambient;

    HDC1000      hdc1000(p9,p10);

    int main() {
        printf("start\r\n");

        EthernetInterface eth;
        eth.init(); // イーサーネットの初期化
        eth.connect();

        TCPSocketConnection socket;
        ambient.init(channelId, writeKey, &socket); // チャネルIDとライトキーを指定してAmbientの初期化

        printf("\n\rClient IP Address is %s\n\r", eth.getIPAddress());
        printf("Ambient send to ch: %d\r\n", channelId);

        while (true) {
            float temp, humid;
            char tempbuf[12], humidbuf[12];

            hdc1000.get();
            temp = hdc1000.temperature(); // HDC1000で温度を測定
            humid = hdc1000.humidity(); // 湿度を測定

            sprintf(tempbuf, "%2.1f", temp); // Ambientに送るにはデーターを文字列にします
            ambient.set(1, tempbuf); // 温度をパケットにセット
            sprintf(humidbuf, "%2.0f", humid);
            ambient.set(2, humidbuf); // 湿度をパケットにセット
            printf("Temp: %s C, Humid: %s %%\r\n", tempbuf, humidbuf);

            ambient.send(); // Ambientにデーターを送信

            wait(30.0);
        }
    }

30秒ごとに温度、湿度を測定し、データーをAmbientに送信しています。 Ambientに送信する時は、データーを文字列に変換して送ります。 まずambient.set()でデーターをパケットにセットし、 ambient.send()で送信します。 データーは8種類まで送ることが出来ます。

ライブラリーとサンプルプログラムはそれぞれmbedサイトで公開しました。

サンプルプログラムのインポート

サンプルプログラムを自分の開発環境にインポートするには、 サンプルプログラムのページの「Import this program」をクリックします。

すると、次のようにサンプルプログラムが自分の開発環境にコピーされます。

コピーされたサンプルプログラムのmain.cppの中の channelId、writeKeyをご自分のAmbientチャネルに合わせて修正すれば、 サンプルと同じものがビルドできます。

データーを送信し、Ambientで確認する

ビルドしたバイナリーをLPC1768にダウンロードし、 LPC1768のリセットスィッチを押すと、プログラムが動き、 データーがAmbientに送信されます。

Ambient上では次のようにチャネルページでデーターを確認することができます。

fig3

チャネルとグラフのカスタマイズはこちらのページをご覧ください。