2008年 5月 01日 木曜日
[Sun SPOT API Tips(2)] 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の方も値が出てる(ようにみえる)のは謎です。。
Posted at 07:23午後 5 01, 2008 by Shuichi Machida in SunSPOT | 投稿されたコメント[0]