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上では次のようにチャネルページでデーターを確認することができます。
チャネルとグラフのカスタマイズはこちらのページをご覧ください。