ESP8266はArduinoが動くWi-Fiモジュールです。 このESP8266を使って、温度・湿度を測定し、Ambientに送ってグラフ化してみます。

ハードウェアの準備

ESP8266周辺のハードウェア構成やArduino開発環境の設定は 以下のサイトを参考にしました。

ESP-WROOM-02はESP8266を搭載したパッケージです。 ESP-WROOM-02は複数社からブレッドボードに挿せるピッチ変換ボードが出ています。 ESP-WROOM-02はモジュール幅が広いため、通常のブレッドボードに載せると 配線の余地がなくなるものが多いのですが、秋月電子さんの Wi-FiモジュールESP-WROOM-02 DIP化キット などは配線のスペースが取れるように工夫されていて、使いやすいので、これを使いました。

センサーはTI社のHDC1000という、1チップで温度、湿度が測れるものを使いました。 回路図を次に示します。

schema

この回路はUSBインターフェースを備えたプログラム開発用のものです。 パソコンでプログラムを開発し、USB経由でプログラムのダウンロードや プリント文でのデバッグをおこないます。 プログラムが動いたらUSBインターフェースのない回路に置き換えて、 パソコンなしで動作させます。

できあがったセンサー端末の写真です。 こちらはUSBインターフェースのないもので、単三乾電池3本で動かしています。

プログラム

プログラムはこんな感じです。全体の流れを掴みやすいように、#define文や動作確認用のプリント文は省略してあります。

    void setup()
    {
        WiFi.begin(ssid, password);  //  Wi-Fiの初期化

        while (WiFi.status() != WL_CONNECTED) {  //  Wi-Fiアクセスポイントへの接続待ち
            delay(500);
        }

        ambient.begin(channelId, writeKey, &client);  //  チャネルIDとライトキーを指定してAmbientの初期化
        hdc1000.begin(SDA, SCL, RDY);  //  HDC1000の初期化
    }

    void loop()
    {
        float temp, humid;
        char humidbuf[12];

        temp = hdc1000.readTemperature(); //  HDC1000で温度を測定
        humid = hdc1000.readHumidity();   //  湿度を測定

        ambient.set(1, temp);             //  データーがint型かfloat型であれば、直接セットすることができます。
        dtostrf(humid, 3, 1, humidbuf);   //  データーの桁数などを制御したければ自分で文字列形式に変換し、
        ambient.set(2, humidbuf);         //  セットします。

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

        delay(PERIOD * 1000);
    }

30秒ごとに温度、湿度を測定し、データーをAmbientに送信しています。 Ambientに送信する時は、まずambient.set()でデーターをパケットにセットします。データーがint型、float型であれば直接ambient.set()でセットできます。データーの桁数などを制御したければ自分で文字列形式に変換し、パケットにセットします。データーをパケットにセットしたら、ambient.send()で送信します。 データーは8種類まで送ることが出来ます。

プログラムはAmbientライブラリーと合わせて、 Githubに公開 しました。

Ambientライブラリーのインポート

プログラムを開発するには、まずAmbientライブラリーを自分の開発環境にインポートします。 Githubの「Ambient_ESP8266_lib」 に行き、右上の「Clone or download」ボタンを押して出て来る「Download ZIP」をクリックして、 ライブラリーを含むZIPファイルをパソコンにダウンロードします。

Ambient_ESP8266_lib-master.zipというファイルがダウンロードされるので、 適当なディレクトリーに置きます(ダウンロードディレクトリーのままでもいいです)。

Arduino IDEを立ち上げて、メニューの「スケッチ」→「ライブラリをインクルード」→ 「.ZIP形式のライブラリをインストール…」を選択し、ダウンロードした ライブラリーのZIPファイルを選びます。

もう一度「スケッチ」→「ライブラリをインクルード」を選択して 「Contributed libraries」に「Ambient ESP8266 lib」が現れれば、 インストールは成功です。

プログラムのビルド

ライブラリーと一緒にサンプルプログラムがダウンロードされます。 これはメニューの「ファイル」→「スケッチの例」→「Examples from Custom Libraries」の 下の「Ambient ESP8266 lib」→「Ambient_ESP8266」にあります。

ssid、passwordをお使いのWi-Fi環境に合わせて修正し、 channelId、writeKeyをご自分のAmbientチャネルに合わせて修正すれば、 サンプルと同じものがビルドできます。

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

出来上がったバイナリーをESP8266にダウンロードするとデーターの送信が始まります。 しばらくしてAmbientにログインし、チャネル一覧ページのチャネル名を クリックするとチャネルページが現れます。

fig3

送信した温度と湿度のデーターがグラフ化されているのが確認できます。 次はチャネルとグラフをカスタマイズします。