

省電力化のため、RTCによる Deep Sleep (または Cold Sleep) の制御について調べています。  
Arduino IDEでは、LowPower Library API を使うことで、RTCを使ってDeep Sleep(または Cold
Sleep)から起動(boot)することが出来ますが、SDKでは、up_pm_sleepにタイマー制御までは実装されていない様です。

SDK 環境で RTCタイマーを使用した Sleep制御の方法がございましたら、ご教授いただけないでしょうか。

(Arduio IDE の LowPowerClass を SDK側に取り込めたら良さそうなのですが・・・）


CC BY-SA 4.0
2019-07-06T14:49:46.177
56456
2019-07-11T10:12:20.900
35007
question
spresense arduino
SDKによるRTCを使用したDeep sleep制御


Arduinoのソースコードを見る限り、RTCアラームを設定してからスリープしているだけのようです。見よう見まねでSDKでも試してみたら同じ動きになりました(当然といえば当然ですが)

以下の方法で、SDKのNutShellコマンドを使って動作を確認しました。

アラームサンプルを有効にしてビルド：

[code]

    $ ./tools/config.py examples/alarm
    $ make 
    
[/code]

NutShell上で、`alarm`コマンドで10秒のアラームタイマーを設定した後に`poweroff`コマンドでDeep
Sleepすると、10秒後にウェイクアップして再起動します。

[code]

    nsh> alarm 10
    alarm_daemon started
    alarm_daemon: Running
    Opening /dev/rtc0
    Alarm 0 set in 10 seconds
    nsh> poweroff
    
    NuttShell (NSH) NuttX-7.22
    nsh>
    
[/code]

Cold Sleepも同じく10秒後に起動できました。

[code]

    nsh> alarm 10
    nsh> poweroff --cold
    
[/code]

単純にコマンドベースで確認してみましたが(これはこれで超便利)、  
examples/alarmのソースとboard_power_off()関数の組み合わせで実現できると思います。  
以上、参考になれば。


CC BY-SA 4.0
2019-07-09T17:36:31.437
56525
2019-07-09T17:36:31.437
31378
56456
answer