今回の簡易IoTシステムでは、IoTデバイスは常時稼働することになるので、低消費電力化を考えなければいけません。
ESPr Developerにはdeep sleepモードがあるので、これについて調査しました。ハードウエアとしてはIO16端子とRESET端子を接続し、スケッチにdeep sleep用のコマンドを書けば良いようです。deep sleepから復帰した時は、スケッチは先頭から再実行されます。
これまで、ESPr DeveloperからWiFi接続するために、WiFi環境のSSIDとパスワードを、スケッチに直接書き込んでいました。これでは使いにくいので、SSIDとパスワードを後から設定する方法について調査しました。
WiFiManagerというArduinoライブラリを使えば、iPhoneなどのWiFi設定画面を使って、ESPr DeveloperのSSIDとパスワードを設定できるようになるようです。
動作確認を行い、スケッチを書き換えることなしに、SSIDとパスワードが設定できることを確認しました。また、一度設定すると、ESPr Developerがdeep sleepした後も設定が残ることも確認できました。本ライブラリは使えそうです。
光センサーで観測したデータをGoogle Driveで保存する際には、観測した時刻も一緒に保存する必要があります。このため、ESPr Developerで現在時刻を取得する方法を調査しました。
timeライブラリを使えば現在時刻を取得できることを確認しました。ただし、時間情報をESPr DeveloperからWebサーバに送信するのはばかばかしく、本来はサーバ側で時間を取得すべきです。システムの仕組みについては、もう少し考えようと思います。
ESPr Developerにはアナログ入力端子がひとつしかありません。今回の簡易IoTシステムでは、赤、黄、緑の3色のランプの明るさ情報をESPr Developerに取り込みたいため、ADコンバータを使ったアナログ信号入力の方法について調査しました。
MCP3008(8ch, 10bitのADコンバータ)を、ESPr DeveloperとSPI接続することで、8chまでのアナログデータをESPr Developerに取り込めることを確認しました。
これらの調査結果を踏まえて、「光センサ(3個)→ADコンバータ→ESPr Developer→IFTTT(mail, GoogleDrive)」の構成で試作2号機を作成しました。