スリープ

Sleep Class リファレンス
Sleep API リファレンス

デバイスによってはスリープ機能を搭載しており(obniz Board 1Yなど)、機能を停止して低消費電力モードになることができます。スリープ開始時に起動のきっかけを設定し、起動とスリープを繰り返すことで電池などでの長期間稼働が可能となります。使い方によって単三乾電池でも1年を超える長期間動作が可能となり、電源が設置しづらい場所での稼働が可能です。

以下のような利用が考えられます。

  • 植物の水やりなど定期的に何かを動作させる
  • 一定間隔で温度を取得するなど定期的に何かを監視する場合
  • 人が来たら、温度がある範囲を超えたらなどいつ起こるかわからないイベントを監視する場合

obnizがオンラインになったときにクラウドのプログラムを稼働させるサーバーレスイベントと組み合わせると便利にスリープが活用できます。

スリープ方法

スリープに入るとデバイスの機能はすべて停止され、Wi-Fiやディスプレイ表示などを含む全てが利用できなくなり低消費電力な状態(実際の消費電流はこのページの下に記載)となります。

スリープはスリープに入るときに指定した次回起動方法(トリガー)に従って自動的に解除されて起動します。スリープ開始時に指定できるトリガーは以下の通りです。

  1. 経過時間後(秒) 1秒後から64800秒後(18時間後)
  2. 経過時間後(分) 1分後から64800分後(45日後)
  3. io0のピンの立ち上がり(しきい値はTTLレベル。ただし供給されている電源電圧に従う)
  4. io0のピンの立ち下がり(しきい値はTTLレベル。ただし供給されている電源電圧に従う)

スリープが解除されると電源が再投入されるのと同じように再起動し、クラウドに接続します。スリープ中のデバイスの電源を切って再度投入するとスリープは解除され即座に起動します。

obniz.sleepSeconds()obniz.sleepMinute()により経過時間を指定したスリープが可能です。また、obniz.sleep()ではdateオブジェクトを利用した指定時間までのスリープを行います。

// Javascript Example

obniz.sleepSeconds(60); //60 sec = 1min

obniz.sleepMinute(60*24); // one day

let dt = new Date();
dt.setHours(dt.getHours()+1,0,0,0); // Next 00 minites.
obniz.sleep(dt);

obniz.sleepIoTrigger()を利用することでio0が変化するまでスリープすることができます。

// Javascript Example

obniz.sleepIoTrigger(true);  // wake up when rising edge on io0

電池で稼働可能な時間

デバイスによって稼働可能な時間は異なるのでそれぞれのデバイス詳細をご覧ください。例として、obniz Board 1Yのスリープ中の消費電流は 20uA-40uA(電源電圧5V)となります。稼働可能な時間はobniz Board 1Y単体の平均消費電力(120mA)と合わせて以下のように計算することになります。

// Javascript Example

バッテリーの自己放電や電圧降下を無視し単純に計算すると以下のようになります

S: 平均的に1時間の間にobniz Boardを起動する時間(分)
Q: バッテリーの容量(mA)

(稼働可能時間(h)) = Q/(S/60*120 + (60-s)/60*0.04)


(例)
アルカリ単三乾電池(2000mA)3本で
1日1度、2分程度起動してスリープの動作で約1年。