mbedアプリケーションの開発
オンラインのIDEを使用してmbedアプリケーションを開発します。第1話と同じように「IoTkajiCli」という名前の新しいプログラムを作成します。
生成されたmain.cppを開いて、プログラムを記述して保存します。概要で述べたように今回のレシピは、デバイスID(deviceid)、温度(temperature)、メモ(memo)の3項目をWebサーバーへHTTPでPOST送信するアプリケーションです。
処理の内容は次のようになります。
- (1)液晶画面をクリアしてからDHCPから取得したIPアドレスを表示します。
- (2)ここでは一旦、20回送信したら終了することにします。
- (3)温度センサーの情報を取得します。
- (4)POSTするためのデータを作成します。
- (5)サーバーのURLを指定してPOSTします。サーバーのURLは、最終的にはIBM Containers上で割り当てられるものを使用しますが、ご自身の環境に合わせて記載してください。
- (6)送信できていることの確認ができるように、POSTした返り値を温度と一緒に液晶画面に表示します。
- (7)接続を切断します。
#include "mbed.h"
#include "LM75B.h"
#include "C12832.h"
#include "EthernetInterface.h"
#include "HTTPClient.h"
LM75B sensor(p28,p27);
C12832 lcd(p5, p7, p6, p8, p11);
HTTPClient http;
int main() {
EthernetInterface _eth;
_eth.init();
_eth.connect();
char _tstr[512];
char _temp[7];
int _res;
int index=0;
// (1)液晶画面をクリアしてからDHCPから取得したIPアドレスを表示します。
lcd.cls();
lcd.locate(0,3);
lcd.printf("IP Address is %s\n", _eth.getIPAddress());
// (2)ここでは一旦、20回送信したら終了することにします。
while(index<20){
lcd.locate(0,4);
// (3)温度センサーの情報を取得します。
if (sensor.open()) {
sprintf(_temp,"%6.3f",(float)sensor); // 温度情報をfloat型へ変換します。
} else {
error("Device not detected!\n");
}
// (4)POSTするためのデータを作成します。
HTTPMap _map;
HTTPText _text(_tstr, 512);
_map.put("deviceid","MBED1234"); // POSTで送信するためdeviceidの値をセットします。
_map.put("temperature",_temp); // POSTで送信するためtemperatureとして計測した温度の値をセットします。
_map.put("memo","mbed iotkaji"); // メモとしてテストであることを書いておきます。
// (5)サーバーのURLを指定してPOSTします。URLはご自身の環境に合わせて記載してください。
_res = http.post("http://XXX.XXX.XXX.XXX/writedb.php", _map, &_text);
// (6)POSTした返り値を温度と一緒に液晶画面に表示します。
lcd.cls();
lcd.locate(0,3);
lcd.printf("Temp = %s/Return code is %d\n",_temp,_res);
wait(1.0); // 送信は1秒に1回に制限します。もっと高頻度で送信できますが、室温なのでまあいいでしょう。
index++;
}
// (7)接続を切断します。
_eth.disconnect();
}
deviceidとmemoは、好きな値でかまいません。サーバーのURLは、最終的にはIBM Containers上で割り当てられるものを使用します。
ライブラリのインポート
アプリケーションボードの液晶画面に情報を表示させたいので、C12832ライブラリをインポートしましょう。
オンラインIDEのインポートボタンをクリックして、インポートウィザードを開きます。
ダイアログボックスが表示されますので、updateにチェックを付けてインポートします。
温度センサーを使用しますので、同様にLM75Bライブラリをインポートします。ただし、このときfeature complete driverのものを選びます。
さらにサーバーとの通信のためEthernetInterfaceもインポートします。作成者がmbed officialのライブラリを選びます。
EthernetInterfaceライブラリは、mbed-rtosライブラリを必要としますのでインポートします。作成者がmbed officialのライブラリを選びます。
最後にサーバーとのHTTP通信のためにHTTPClientをインポートしますが、mbedのハンドブックから「TCP IP protocols and APIs」を開きます。表にあるHTTPClientをクリックします。
HTTPClientのライブラリをインポートする画面が表示されますので、「Import this library」ボタンを押します。
プログラムがコンパイルできることを確認します。コンパイルが成功すると実行ファイルが作成されてローカルPCへ保存するかどうかを確認されますのでOKを押します。
以上でmbed側の開発は完了です。
