※Arduinoの環境構築とボードへの書き込み部分はすっ飛ばしていきます。
組み立て
部品がそろったので、組み立てていきます。
回路はSeeed RecipeにあるNodeMCU(ESP8266)のレシピを参考にしました。
ESP8266 IoT Energy Monitor
http://www.seeedstudio.com/recipe/index.php?controller=recipe&action=show&recipe_id=377&ref=product
なお、ThingSpeakを利用するとWEB上から出力データが閲覧できるようになります。
ThingSpeakを使用しない場合は、プログラムのコメントアウト部分を解除することで
簡単にArduinoのシリアルモニタにデータ出力をできるようになっています。
NodeMCUそのままでは配置が違うので、ESP-WROOM-02で動くように作り替えました。
表面にESP-WROOM-02を載せるため、裏面にスズメッキ線と半田ブリッジで配線しています。
電源に関しての注意
電源は3.3Vが必要なのですが、FT232RLからでは電流が不足し起動に失敗することがあります。
そのため、別途電源を取る部分が必要となってきます。
自分はRaspberry Pi Zeroの3.3Vから取って問題なく動いています。
計測プログラム
プログラムはレシピ作成者のwhatnick氏がgithubに公開しているソースを使用します。
ESP8266 Energy Monitor Real Power
https://gist.github.com/whatnick/13e08d40ce0f9a4c7373
主に修正が必要な場所は以下の3ヵ所です。
String apiKey = "XXXXXXXXXXXXXXXX";
const char* ssid = "xxxxxxxxxxxxx";
const char* password = "xxxxxxxxxxxxxxxx";
apiKeyにはThingSpeakの書き込みできるAPIキーを記入し
ssid/passwordには利用する環境のWifiアクセスポイントのSSID、パスワードを記入します。
DeepSleep機能
IO16とJP1の部品を実装しておくと、より省電力のDeepSleep機能を使うことができます。
DeepSleep機能を使う場合はJP1にジャンパピンをつけてショートさせ
プログラムの最下部にあるdelay(20000);を以下のように書き換えます。
ESP.deepSleep(20 * 1000 * 1000 , WAKE_RF_DEFAULT);
delay(1000);
※USB充電器から電源を取った場合、DeepSleep時の消費電力が少なすぎるため
電源の供給が止まり、DeepSleepから目覚めないことがあります。
DeepSleepで電源供給が止まった場合は、通常のdelay(20000);に戻して下さい。
次回は取り付け編です。