電源管理
ネットワークと並んでIoTデバイスの共通課題は電源です。IoTデバイスを制御するマイコンやセンサなどの多くは1.
IoTデバイスをバッテリーや発電デバイスで動作させる場合,
IoTデバイスは,
IoTデバイスの制御マイコンとしては,
ESP32の構造と特徴
前節で整理したIoTデバイスの制御マイコンに求められる要件を踏まえて,
ESP32の仕様
ESP32の仕様を,
ESP32はSRAM520kB,
Arduino UNOはメモリも小さく,
Raspberry Pi 3B+はメモリも1GBと大きく,
このようにESP32はデバイス制御や通信機能などの豊富な機能を持ちながら,
ESP32の内部構造と省電力機能
ESP32の内部は図2のような機能ブロックで構成されています。
中央にあるCPU,
ESP32はこの機能ブロック単位で機能をオフにすることができ,
ESP32を使ったIoTデバイスの事例
最後に,
温湿度センサデバイスのハードウェア
ESP32を使った温湿度センサデバイスは写真2のようなものです。
温度,
デバイスは単3乾電池3本で駆動します。電池電圧を抵抗で分圧してESP32のADコンバータ
温湿度センサデバイスのソフトウェア
温湿度センサデバイスのプログラムは次のようになります。
#include#include "Adafruit_Si7021.h" #include #define TIME_TO_SLEEP 60 // 測定周期(秒) const char* ssid = "ssid"; // Wi-FiルーターのSSID const char* password = "password"; // Wi-Fiルーターのパスワード WiFiClient client; Ambient ambient; unsigned int channelId = 100; // AmbientのチャネルID const char* writeKey = "writeKey"; // ライトキー Adafruit_Si7021 sensor = Adafruit_Si7021(); #define BATTERY 39 // バッテリー電圧を測るピン void setup(){ unsigned long starttime = millis(); Serial.begin(115200); while (!Serial) ; WiFi.begin(ssid, password); // Wi-Fiネットワークに接続する while (WiFi.status() != WL_CONNECTED) { // 接続したか調べる delay(500); Serial.print("."); } ambient.begin(channelId, writeKey, &client); // チャネルIDとライトキーを指定してAmbientの初期化 sensor.begin(); pinMode(BATTERY, INPUT); // バッテリー測定ピンをINPUTモードにする float temp = sensor.readTemperature(); float humid = sensor.readHumidity(); float vbat = (analogRead(BATTERY) / 4095.0 * 3.3 + 0.1132) * 2.0; Serial.printf("temp: %.2f, humid: %.2f, vbat: %.1f\r\n", temp, humid, vbat); ambient.set(1, temp); // Ambientのデータ1に温度をセットする ambient.set(2, humid); // データ2に湿度をセットする ambient.set(3, vbat); // データ3にバッテリー電圧をセットする ambient.send(); // Ambientに送信する delay(1000); // Deep sleepする時間(マイクロ秒)を計算する uint64_t sleeptime = TIME_TO_SLEEP * 1000000 - (millis() - starttime) * 1000 - 1000000; esp_deep_sleep(sleeptime); // DeepSleepモードに移行 // ここには戻らない } void loop(){ }
プログラムの大まかな流れは,
- Wi-Fiネットワークに接続する
- Ambientの初期設定をおこなう
- 温湿度センサSi7021の初期設定をおこなう
- Si7021から温度,
湿度を取得する - Ambientにデータを送信する
- Deep sleepモードに以降
esp_
というシステム関数を呼ぶと,
Wi-Fiに接続して温度,
このように,
ESP32を使った電子工作のさらなる実例やプログラムの詳細な解説が知りたいという方におすすめなのが