Shuichi Machida's Weblog

« [Sun SPOT API Tips(1... | メイン | [Sun SPOTで"デューク神棚(Du... »

http://blogs.sun.com/machida/date/20080501 2008年 5月 01日 木曜日

[Sun SPOT API Tips(2)] Sun SPOTのバッテリー残量や電流消費量を調べたい時は?

よく

  • 「Sun SPOTのバッテリー残量を取得できますか?」
  • 「Sun SPOTの電流消費量を調べられますか?」

といった質問を受けることあります。 Solarium (a.k.a. SPOT World)という管理ツールを使うと、ホストPC上からリモートにある Sun SPOTのステータス情報を取得することができるのですが、Sun SPOTアプリケーションではSun SPOT API V3.0 IPowerController インタフェースが使えます。このAPIを使うとバッテリー残量や電流消費量などの電源関連の情報がいろいろ入手できます。

コード例:

package org.sunspotworld;

import com.sun.spot.peripheral.IPowerController;
import com.sun.spot.peripheral.Spot;
import com.sun.spot.util.*;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;

public class StartApplication extends MIDlet {

    protected void startApp() throws MIDletStateChangeException {
        new BootloaderListener().start();   // monitor the USB (if connected) and recognize commands from host
        Spot.getInstance().getSleepManager().disableDeepSleep();
        
        IPowerController powerController =
                Spot.getInstance().getPowerController();

        
        while (true) {
            // Vbatt の値で、大体のバッテリー残量を推定可能
            // APIドキュメントによると、2700~4700mVの範囲
            System.out.println("battery supply(mV): " +
                    powerController.getVbatt());
            
            // 現在の電流消費量を取得
            System.out.println("current discharge(mA): " +
                    powerController.getIdischarge());        
            
            // 現在のチャージ電流の量を取得
            System.out.println("current charge(mA): " +
                    powerController.getIcharge());                        

            Utils.sleep(10000L);
        }
    }

    protected void pauseApp() {
    }

    protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
    }
}

 

# 実行結果


# 裏で無線通信しているので、その時だけ電流消費量が数十mA 上がっています。

なお、ホストPCにUSB接続している場合はバスパワーで動作して充電します。USBつないでいないのにchargeの方も値が出てる(ようにみえる)のは謎です。。

投稿されたコメント:

コメント
  • HTML文法 不許可

Valid HTML! Valid CSS!

This is a personal weblog, I do not speak for my employer.