E32-SolarCharger の Deep Sleep ーベランダ太陽光発電所への道2ー
さて第2回となりますシリーズ “ベランダ太陽光発電所への道”。今日もソーラー充電コントローラ E32-SolarCharger の基礎的な動作を学び この基板との距離を縮めていきたいと思います。
まぁ帰ってきたら夜でソーラー発電動作実験できないからね。トランキーロ焦らずじっくりやっていきます。
今回は E32-SolarChargerに使用されているマイコンESP32のDeep Sleepについて学習します。
目次
Deep Sleep
例えば太陽光がソーラーパネルに届かないのにマイコンで一生懸命バッテリーへのチャージ動作しても意味がないですよね。チャージ動作停止するだけでもいいのですが、マイコンの待機消費電流をも抑えてしまおうというのがDeep Sleep機能です。
販売元であるIndoor Corgi Elec.社のサイトにDeep Sleep動作を確認できるサンプルコードがアップされておりますので試してみました。
http://indoor.lolipop.jp/IndoorCorgiElec/E32-SolarCharger/Load-Sleep.zip
こちらを書き込み起動すると自動的にESP32はDeepSleepモードに入ります。30秒経過もしくはSW3スイッチを押すとDeepSleepから復帰します。
動作
E32-SolarCharger
Deep Sleep動作#ベランダ太陽光発電 pic.twitter.com/eNecnkoO4X— HomeMadeGarbage (@H0meMadeGarbage) 2019年5月16日
SW3スイッチを押すたびにESP32がDeep Sleepしています。スリープする前にラッチICで保持してLED1(緑)の点灯を保っています。
ここで驚いたのですがコード内の変数宣言の冒頭でRTC_DATA_ATTRを
付けるとスリープしても初期化されず値を保持します。
1 |
RTC_DATA_ATTR uint16_t n = 0; |
このサンプルでは復帰回数をカウントしています。
またスリープ復帰後にesp_sleep_get_wakeup_cause()で復帰理由の取得も行って表示しています。
おわりに
今回のDeep Sleep動作学習は非常にためになりました。他のESP32製品使用時にも大いに役に立つと思います。
なによりベランダ太陽光発電においてDeep Sleepは重要な役目を果たすことになるでしょう。太陽光を効率よく無駄なくチャージして有効利用を目指します。
俺はベランダで太陽光発電をする人になる!