Sun SPOT OwnersManualを読んで、まとめてみた。
SunSPOTについて、とりあえず読んでおいた方が良さそうなOwnersManual。
http://www.sunspotworld.com/docs/Purple/SunSPOT-OwnersManual.pdf
以下、軽く読んでみたので、中身についてのまとめと雑感です。
■気になった事
・SPOTに使われてるJ2MEベースのVMを「SquawkVM」と呼んでいるらしい。
・J2MEベースなので、アプリケーションを作成するにはMIDletクラスを継承する。
・「SquawkVM」がJ2MEと違うのは、複数のアプリを同時に動かせる事&Isolateクラスを使って、他のアプリの影響から保護できる事。
・システムIsolateとして「master isolate」が存在し、リソースの調停をおこなっている。
・ユーザアプリは、「master isolate」によって、「child isolates」として起動される。
・Jarファイルに、複数のMIDletを入れる方法について、このPDFに記述してある。
・実機では、SPOT Worldの「Run in Main Isolate」で、リセット後の自動起動アプリを指定できるっぽい。(実機が無いので、未確認)
・エミュでの実行でも、「Display sensor panel」から、各センサー・入出力・加速度の値を任意にいじって動作を確認可能。LEDについてもちゃんとアプリによる動作がパネルに反映される。
雑感)エミュが入出力ポートについてもきちんとしてるのが嬉しい。開発はかなりやり易そう。
■Sun SPOT Managerで可能な事
・SDKのインストール(NetBeansのプラグインは、これでは入らない)
・USB接続したSPOTの構成と管理
・Virtual SPOT(SPOTのソフトウェアエミュレータ)の構成と管理
・構成と管理は、デプロイとアプリケーションのスタート、コンソールログ閲覧が可能。
■電源について
・バッテリーは720mA/hの物を搭載
・搭載バッテリーの最大取り出し電流は、500mA(P28)。本体含めてだろうから要注意。
・ボードの消費電力。このPDFには、センサーボードなしのも載ってる(P26)が、以下はセンサーボード搭載時の値
・DeepSleepMode:無線Off、センサーボードOff:~33μA=2.5年(909日)
・ShallowSleep:無線Off、センサーボードOn:~31mA=23時間
・ShallowSleep:無線On、センサーボードOn:~46mA=15.7時間
・Awake,active calc:無線Off、センサーボードOn:~86mA=8.4時間
・Awake,active calc:無線On、センサーボードOn:~104mA=6.9時間
*ShallowSleep:デバイスアクティブだが、アクティブなスレッドが無し。の状態。
雑感)意外と長持ちするな!という印象。って、自前で計算したのに、P27のTABLE4に計算済みの値が書いてあるし!ひとつにまとめてくれればいいのに!
LEDは結構な電流食うので注意(P27 TABLE3)。青色LEDは、緑LEDの倍の電流を食うのか・・・
■プログラミングについて。
・SPOT OTA=SPOTがダイスキなヲタク。ではなくて、Over The Air。「無線経由」って事。
・OTA debugger=無線経由のデバッガ。OTA deploy=無線経由のデプロイ
・OTA debuggingを利用する為には、以下の手順が必要。
1、OTAリンクをベースステーションSPOTとフリーレンジSPOTの間に確率する。
2、フリーレンジSPOTで、アプリをデバッグモードでデプロイする。
3、NetBeansデバッガ(又は他のデバッガ)をデバッグしたいアプリにアタッチする。
・SPOTのMACアドレスは、「nnnn.nnnn.nnnn.nnnn」(n=16進数1ケタ)形式。(P29)
実機の場合、先頭8桁が、必ず「0014.4F01」。本体に張ってあるのは、残りの8ケタなので注意。エミュでは、この限りではないようだ。
・MACアドレスを確認するには、USB接続後にコマンドプロンプトを開いて、SunSPOTのプロジェクトディレクトリで「ant info」でチェックできる。(P29)
・OTAコマンドは、有効・無効の設定ができるので注意。これも「ant info」で確認できる。
有効・無効は「ant enableota」か「ant disableota」で。
・「disableota」されていると、無線経由のデプロイも当然できないので要注意。
・SPOTをベースステーションモードで動かすには「ant startbasestation」で。現在のモードは「ant info」で。(P31)
・
デバッグモードでアプリを動かすには「ant -DremoteId=nnnn.nnnn.nnnn.nnnn deploy」して「ant
-DremoteId=nnnn.nnnn.nnnn.nnnn debug」。「R」が小文字でないと動かないので注意!(P31)
・あとはデバッガをアタッチしてデバッグ。
・System.out.printlnを使った「Print Debugging」も使える。表示コンソールが、IDE上になければ「ant -DremoteId=nnnn.nnnn.nnnn.nnnn」で、コンソール出力がリダイレクトされてくる。
・javadocは「[SpotSDKdirectory]/doc/javadoc」にある。
・サンプルは、「[SpotSDKdirectory]/Demos/CodeSamples」にある。
・Demoボードセンサーの説明&APIについても簡単に書いてある。(P34-)
・加速度センサーについては「[SpotSDKdirectory]/doc/AppNotes/AccelerometerAppNote.pdf」を見よ。との事。
・LEDは、3色タイプ×8個。0-255の8ビット解像度。
・2個。イベントループで取得する。ただし、状態変更待ちに入る「waitForChange」メソッドがある。
・光センサー:0-750。0で真っ暗。600nmが最大感度波長。1000ルクスで497、100ルクスで50、10ルクスで5。蛍光灯とかの明滅光用に「getAverageValue」メソッド有。
・温度センサー。
・無線通信について(P39-)
・使えるプロトコルの分類としては、「radiostream」「radiogram」の2つがある。
・大事なデータは、到達保障のある、相手アドレスを指定したユニキャスト(プロトコルは「radiostream」「radiogram」のどちらでもOK)で送る事。
・ソケットライクな「radiostream」プロトコルでは、Peer-to-Peer接続が可能。以下のような感じ。xxxはポート番号。1-255が使用可能。
StreamConnection conn = (StreamConnection)
Connector.open("radiostream://nnnn.nnnn.nnnn.nnnn:xxx");
・データグラムベースの「radiogram」プロトロルも使える。こっちのポート番号は、32-255が使用可能。0-31はシステム予約。
・こっちは、Peer-to-Peer接続以外に、ブロードキャストも可能。ただし、到達保障は無い。
・データグラムのブロードキャストホップ数を設定するには「setMacBroadcstHops」(P41)
・ブロードキャストのデータサイズは200バイト以下を推奨。それ以上だとロストするかも。最大はペイロードで1260バイト。(P41)
・Peer-to-Peerの場合(P40)
DatagramConnection conn = (DatagramConnection)
Connector.open("radiogram://" + targetIEEEAddress + ":100");
Datagram dg = conn.newDatagram(conn.getMaximumLength());
dg.writeUTF("My message");
conn.send(dg);
...
conn.receive(dg);
String answer = dg.readUTF();
・ブロードキャストの場合(P40)
DatagramConnection sendConn = (DatagramConnection)
Connector.open("radiogram://broadcast:xxx");
dg.writeUTF("My message");
sendConn.send(dg);
・サーバモードも使える(P40)
DatagramConnection recvConn = (DatagramConnection)
Connector.open("radiogram://:100");
recvConn.receive(dg);
String answer = dg.readUTF();
■トラブルシューティング(詳細はPDFを見て下さい。)
・「NetBeansは使いたくない!」P42
・「SPOTと通信しようとすると RXTX Version mismatchエラーが出る。」P42
・「リスタートが繰り返されて、デプロイもエラーになる」P43
・「アプリをデプロイしようとすると、Unable to locate tools.jar Expected to find it in C:\... エラーになる。」:P44
・「ant用に、sunspot.homeプロパティを変更したいんだけど、どうしたらいい?」P44
・「SPOTランタイムで、MACアドレスを取得するAPIは?」P44
・「OTAでデプロイしようとすると、No route found エラーになる」P44
・Linuxでのソフトウェアトラブル:P45-46
・良くあるトラブル:P46-49
結論としては、かなりまとまっていて読みやすいので、一度は目を通しておくと吉です。
しかし実機が無いのがツライ!かなーり実機にさわりたくてたまらん状態になってます:p


コメント