知的好奇心 for IoT

IoT関連の知的好奇心を探求するブログです

バッテリーが切れそうになったら通知するようにベランダのWiFi温湿度計を改良した

前回の改良で、バッテリーをダイソーの300円モバイルバッテリー(2000mAh)に変えて長時間駆動化を計りましたが、ベランダの温湿度計はBlynkに加えてthinger.ioにもデータを上げていることもあってか、思っていたよりも早くバッテリーが切れて1日ぐらい放置されていました。

やっぱりバッテリーが切れそうになったことがわかる仕組みが欲しい...と、いうことで、やってみることにしました。

 

ESP8266の電源電圧の測り方

ESP8266で電源電圧を計るにはグローバルスコープに次のコードを書いて

ADC_MODE(ADC_VCC);

計りたい場所で次のコードを書きます。

ESP.getVcc()

モバイルバッテリーで電源を供給している場合でも、ボードのレギュレーターで電圧変換された値が取得できますが、バッテリーが減ってくる状況がモニターできずにいきなり電源が断たれるため実用的ではありません。

バッテリーが減ってくる状況をモニターするには、ESP8266モジュールに直接電源を供給できる3V台のバッテリーを使用する必要があります。

ちょうど100均で1.2V(単三1300mAh)のニッケル水素電池が売られているのを見つけたので、これを3つ使うようにしてみました。

f:id:IntellectualCuriosity:20180222115828j:plain

新しいバッテリーモジュール

f:id:IntellectualCuriosity:20180222120312j:plain

おかず容器に組み込んだ状態

 

電圧のモニターと通知の仕方

電圧のモニター(表示)にはLabeled Value Widget、通知にはNotification Widgetを使用して次のような感じでレイアウトしてみました。

f:id:IntellectualCuriosity:20180222144501p:plain

Labeled Valueの設定

f:id:IntellectualCuriosity:20180222122945p:plain

Notificationの設定

f:id:IntellectualCuriosity:20180222123039p:plain

 

スケッチの追加

前回のスケッチに以下のコードを加えました。

・電圧閾値と通知メッセージの定義、ADCモードの設定

// Voltage
#define LIMIT_VOLTAGE 3.0
#define TEXT_VOLTAGE "Low Battery!"
ADC_MODE(ADC_VCC);

・電圧チェック関数

/*
 * Check VCC
 */
void checkVcc() {
  float vcc = ESP.getVcc() / 1024.0;
  // Push Notification
  if (vcc < LIMIT_VOLTAGE) {
    Blynk.notify(TEXT_VOLTAGE);
  }
  Blynk.virtualWrite(V8, vcc);
  BLYNK_LOG2("Voltage:", vcc);
}

電圧チェック関数をsendSensor()関数内で呼び出せば、温度や湿度を計測するタイミングで電圧も計測して電圧が閾値より低下すると通知されるようになります。

 

おわり