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 into Compiler」をクリックします。
サンプルプログラムのインポート
サンプルプログラムを自分の開発環境にインポートするには、 サンプルプログラムのページの「Import into Compiler」をクリックします。

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

コピーされたサンプルプログラムのmain.cppの中の channelId、writeKeyをご自分のAmbientチャネルに合わせて修正すれば、 サンプルと同じものがビルドできます。
データーを送信し、Ambientで確認する
ビルドしたバイナリーをLPC1768にダウンロードし、 LPC1768のリセットスィッチを押すと、プログラムが動き、 データーがAmbientに送信されます。
Ambient上では次のようにチャネルページでデーターを確認することができます。

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