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チップで温度、湿度が測れるものを使いました。 回路図を次に示します。
この回路は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ライブラリーを自分の開発環境にインストールします。Arduino IDEを立ち上げて、「ツール」メニューの「ライブラリを管理…」を選択し、ライブラリマネージャを立ち上げます。検索窓に「ambient」と入力して、表示された「Ambient ESP32 ESP8266 lib」をインストールします。
プログラムのビルド
ライブラリーと一緒にサンプルプログラムがダウンロードされます。 これはメニューの「ファイル」→「スケッチの例」→「Examples from Custom Libraries」の 下の「Ambient ESP8266 lib」→「Ambient_ESP8266」にあります。
ssid、passwordをお使いのWi-Fi環境に合わせて修正し、 channelId、writeKeyをご自分のAmbientチャネルに合わせて修正すれば、 サンプルと同じものがビルドできます。
データーを送信し、Ambientで確認する
出来上がったバイナリーをESP8266にダウンロードするとデーターの送信が始まります。 しばらくしてAmbientにログインし、チャネル一覧ページのチャネル名を クリックするとチャネルページが現れます。
送信した温度と湿度のデーターがグラフ化されているのが確認できます。 次はチャネルとグラフをカスタマイズします。