「Simple IoT Board」はその名の通り簡単にIoTが始められるワンボードマイコンです。 LPC1114FN28というARMアーキテクチャーのマイコンを搭載し、 mbedというWebベースの開発環境でプログラムが作れます。

以下のような特長があり、非常によく考えられたボードだと思います。

  • プログラム開発時にはmbed LPC1114FN28を挿し、開発が終わればLPC1114FN28単体で動かすことができる
  • ボード上にGroveコネクターが5個ついており、Grove社の豊富なセンサーが使える
  • Wi-FiモジュールのESP-WROOM-02が載っていて、無線LAN経由でデーターをインターネットに送れる
  • ソフトシリアルがついていて、print文でデバッグができる

このボードだけでセンサーを制御し、データーをインターネットに送信するIoT端末が作れます。

このSimple IoT Boardを使って温度を測定し、Ambientに送ってグラフ化するサンプルプログラムを作ってみました。

ハードウェアの準備

プログラム開発中のSimple IoT Boardです。mbed LPC1114FN28の上にゼロプレッシャーICソケットを載せています。 ICの抜き挿しに力がかからないので、開発中は便利です。 温度の測定にはGroveのTemperature Sensor v1.2を使い、 Simple IoT BoardのアナログのGroveコネクターにつないでいます。

開発が終わるとmbed LPC1114FN28を外して、LPC1114FN28単体で動作させることができます。 写真は左から直接LPC1114FN28を載せたSimple IoT Board、 mbed LPC1114FN28、ゼロプレッシャーICソケットです。

プログラム

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

    #include "mbed.h"
    #include "math.h"
    #include "ESP8266Interface.h"
    #include "TCPSocketConnection.h"
    #include "SoftSerialSendOnry.h"

    #include "Ambient.h"

    ESP8266Interface wifi(dp16,dp15,dp4,"SSID","Password",115200); // TX,RX,Reset,SSID,Password,Baud

    unsigned int channelId = チャネルID;  //  Ambientのご自分のチャネルID
    const char* writeKey = "ライトキー";  //  チャネルIDに対応したライトキー
    AMBIENT ambient;  //  Ambientのインスタンス

    AnalogIn thermistor(dp13);
    const int B=4275; // B value of the thermistor

    SoftSerialSendOnry pc(dp10);

    int main()
    {
        TCPSocketConnection socket;

        pc.baud(9600);

        wifi.init();  //  Reset
        wifi.connect();  //  Use DHCP
        pc.printf("IP Address is %s\r\n", wifi.getIPAddress());

        ambient.init(channelId, writeKey, &socket);

        while (true) {
            float temp;
            char tempbuf[12];
            int a = thermistor.read_u16();

            float R = 65535.0/((float)a)-1.0;
            R = 100000.0*R;

            //convert to temperature via datasheet ;
            temp = 1.0/(log(R/100000.0)/B+1/298.15)-273.15;

            pc.printf("%4.2f\r\n", temp);

            sprintf(tempbuf, "%2.1f", temp);  //  Ambientに送るにはデーターを文字列にします
            ambient.set(1, tempbuf);  //  温度をパケットにセット

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

            wait(30.0);
        }
    }

サンプルプログラムとライブラリーをmbedサイトに公開しました 。 このページで「Import this program」をクリックすれば、 自分の開発環境にサンプルプログラムと必要なライブラリーがまとめてインポートされます。

インポートしたらSSIDとPasswordをお使いのWi-Fiのものに変更し、 チャネルIDとライトキーをご自分のAmbientのものに変更します。 コンパイルして、できたバイナリーをダウンロードすると、 プログラムが動き、温度を測定してAmbientに送り始めます。

Ambientサイトにログインし、チャネルページを見ると、送られた温度データーが確認できます。

fig2

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