パワーマネジメント

パワーマネジメント機能を使用することで、消費電力を大幅に削減することができます。 Deguのパワーマネジメントでは、以下の2つの状態を設定することが可能です。

  • suspend
  • powerdown

比較

状態 消費電流(※1) 説明
suspend 5uA 指定した時間、Deguの動作を停止します。RAMのデータは保持されます
powerdown 1uA 電源を切断した時と同様の状態になります。RAMのデータを保持しません

※1: ボタン電池での3.0V供給時

サンプルスクリプト

Githubのopen-degu/degu-micropython-samplesに、パワーマネジメントのサンプルスクリプトがあります。

suspend

  • main.py
    from machine import ADC
    import ujson
      
    import degu
      
    def battery_voltage():
        R6 = 68
        R8 = 100
      
        ADC_REF = 0.6
        ADC_RESOLUTION=4096 #12bit
        ain = ADC(1)
        ain.gain(ain.GAIN_1_6) #gain set to 1/6
      
        raw = ain.read()
        vin = (raw / ADC_RESOLUTION) * ADC_REF * 6
      
        v = vin * ((R6 + R8) / R8)
        return v
      
    if __name__ == '__main__':
        reported = {'state':{'reported':{}}}
      
        while True:
            reported['state']['reported']['battery'] = battery_voltage()
      
            json = ujson.dumps(reported)
            degu.update_shadow(json)
            print(json)
      
            degu.suspend(30)
    

DeguをPCにUSBケーブルで接続し、main.pyをDeguにコピーします。

Deguを再起動するとmain.pyが実行され、バッテリー電圧の送信と、30秒間のsuspendを繰り返します。

powerdown

  • main.py
    import time
    import ujson
      
    import degu
      
    def update_power_state(state):
        reported = {'state':{'reported':{}}}
        reported['state']['reported']['state'] = state
      
        json = ujson.dumps(reported)
        degu.update_shadow(json)
        print(json)
      
    if __name__ == '__main__':
        update_power_state('wakeup')
      
        print("power down after 15 seconds...")
        time.sleep(15)
      
        update_power_state('powerdown')
        degu.powerdown()
    

DeguをPCにUSBケーブルで接続し、main.pyをDeguにコピーします。

Deguを再起動するとmain.pyが実行され、15秒経過した後にpowerdownとなります。