u-service09 10-11 sunspotinstallguidesunspotの仕組み • 3層から構成 • sensorboard •...
TRANSCRIPT
-
モノ創りの科学
Sun SPOT 環境構築 コンテクストアウェア・プログラミング
環境情報学部 高汐 一紀
SunSpotとは • Sun microsystemsが開発した無線センサデバイス
• 3軸加速度センサー • 光センサー • 温度センサー • 3色 LEDs(8個) • プッシュボタン(入力) • I/O ピン • アナログ入力(6), 汎用入出力(5)
• Javaを使いプログラムの開発が可能
-
SunSpotの仕組み • 3層から構成
• SensorBoard • ProcesorBoard • Battery
• 無線ネットワーク • IEEE 802.15.4(数十メートル) • 複数のSunSpot間で通信が可能
Sunのページより
Sun SPOT
-
• 180 MHz 32 bit ARM-920T CPU with 512 KB RAM / 4 MB
• ChipCon 2420 Radio IEEE 802.15.4 / 2.4 GHz
• USB
• LEDs
•
•
• 3.7 V 720 mAh
SPOT eDemo
•
•
•
• LEDs 8
• 2
• 6
• GPIO 5
• 4
-
•
• AODV Ad hoc On-Demand Distance Vector
Squawk Java VM
•
• OS ARM
• Java
• etc.
• I/O C
• Java ME CLDC 1.1
• IMP 1.0 JRS-195
etc.
•
• Isolate Application Model JSR 121
-
Sun SPOT
• SPOT Manager
•
• SPOT World
• Sun SPOT OTAprint etc.
• Virtual SPOT
• NetBeans IDE
•
•
•
必要環境 • WindowsXP Vista/ Mac OS X/ Linux/ Solarisに対応
• 必須となるソフトウェア • JRE • JDK 5 • Apache Ant 1.6.5 • NetBeans IDE 6.0
• Sun SPOT NetBeans 6 • Sun SPOT Manager Tool • Sun SPOT SDK
-
JREがない人 • 本当にないか確かめる
• windows • C:¥¥Program Files¥java¥の下を見てみる
• jre1.xxがあればOK • mac
• ターミナルを開いて java ‒versionと入力 • Java(TM) 2 Runtime Environment・・・はOK
• Sunのホームページからダウンロード • http://java.sun.com/javase/downloads/index.jsp • 後ほどJDKをインストールするのでJDKをインストール
• 参考URL • Vista =
http://www.sunspotworld.com/GettingStarted/Vista.html • XP =
http://www.sunspotworld.com/GettingStarted/WinXP.html • MacOSX =
http://www.sunspotworld.com/GettingStarted/MacOSX.html
http://www.sunspotworld.com/SPOTManager/ install now! SunSpotManager &
JRE
Vista
• SunSpotManager •
-
インストールの各ステップ注意事項 Sun JDK ( NO XP JRE
NetBeans6.1 Jdk NetBeansIDE
Ant 5 NetBeans SunSpotModule 6 SunSpotSDK
Windows New SDK Directory Location C:\Program Files\Sun
\SunSPOT C:\Sun\SunSPOT JDK Ant PATH
PC
デバイスドライバのインストール PCの再起動後 SpotManagerのショートカットを再度起動 - (今度はインストーラではなく、マネージャとして起動する)
SunSPOTとPCをUSBで接続する - XP/Vista:(推奨)される自動で検索すれば見つかる
SpotManagerの「Sun SPOTs」タブでselect a sun spotsの項目に16進数のIDが出ていれば認識完了
※sunspotに対して何らかの呼び出しや書き込みをするとplease reset SPOT ~~~ といわれることがある
- その時はSunSPOT本体のボタンを押してリセットする
-
インストールに関する関連資料 • http://yoko-gb.blogspot.com/2008/05/
sunspot.html • http://sdc.sun.co.jp/java/series/sunspot/
index.html • http://blogs.sun.com/machida/entry/
sun_spot_1_sun_spot • http://togusa-akizuki.cocolog-nifty.com/blog/
2008/06/sun_spot_manage_9071.html
ファームウェアを揃える • SunSPOTにプログラムを書き込むためには、開発環境のSDK ver.
とSunSPOT本体のファームウェアのver.が同じでなければならない • SunSPOTを接続した状態でSpotManagerの「Sun
SPOTs」タブのupgradeボタンを押す。 • ※upgrade作業は2回必要になるかも(ボタンが赤かったら再
度
• 開発環境のSDKはSpotManagerの「SDK」タブで管理が可能。Active設定になっているSDKが開発環境のSDKとなる
• 次のスライドで写真付きで説明
-
1.Select a Sun Spot:でSunSpotを選択
2.SPOT Infoをクリック (please reset‥と出てきたらSunSpotの 電源を一度押す
3.左下のupgradeが赤かったらクリック してファームウェアをアップグレード
1
2 3
サンプルを動かしてみる • NetBeansを起動
• ファイル→プロジェクトを開く • SDKのディレクトリのDemosからAirtextプロジェクトを開く
• ex:C\Sun\sunspot\demos • プロジェクト欄でAirTextを右クリック
• Build Project&Deploy to SunSpot→書き込みが開始される • USB接続をはずし本体のスイッチを押して起動 • 以下の動画と同じものがSunSPOT上で動く
• http://jp.youtube.com/watch?v=BBRiCu-In1o
• プラグインの確認 • ファイル→新規プロジェクト→SunSPOTApplicationが無い場合
• ツール→プラグイン→使用可能なプラグインでsunspottemplateをインストール
-
http://www.sunspotworld.com/Tutorial/AirText.html
自分でプログラムを書いてみる
-
新規プロジェクトからSun Spot Applicationを選択
プログラムを新規作成する • ファイル→新規プロジェクト→SunSPOTApplication
• 自由なプロジェクト名で作成
• StartApplication.javaのstartApp()がSunSPOT起動時に呼ばれる • テンプレートのstartApp()に以下の内容を追加する
• 照度センサーインスタンスの生成 ILightSensor lightSensor =
EDemoBoard.getInstance().getLightSensor(); • 照度値取得コード(while内に記述)
try{ System.out.println(“LightValue : “ + lightSensor.getValue()); } catch(IOException ex) { ex.printStackTrace(); }
-
デバッグをしながらの起動 • USB接続したままプロジェクトを右クリック
• 実行 • NetBeansのコンソールに表示される
• System.out.printlnの出力を確認しながらSunSPOTを実行する事が可能 • 出力を確認するためにはテンプレートに含まれている
BootloaderListner().start()の生成が必要
• サンプルコード • SFC-SFS StartApplication.java
更にSunSPOTを楽しむために • 開発環境について
• 無線経由での書き込みや実行 • 良い資料を探しています
• センサ周りのSDK利用方法(p40~) • ht
tp://jp.sun.com/developers/java/series/sunspot/200804.html#s04
• http://mediacast.sun.com/users/akapin/media/SunSPOT.pdf • ホストアプリケーションの作成
• http://jp.sun.com/developers/java/series/sunspot/200807.html • エミュレータの利用
• http://jp.sun.com/developers/java/series/sunspot/200806.html • Tutorial
http://www.sunspotworld.com/Tutorial/
-
レファレンスはどこ? • NetBeansを起動しメニューから
• ヘルプ->Javadoc参照->Sun Spot API v5.0
• http://www.sunspotworld.com/docs/index.html
Sun SPOT on Snow Leopard
[java] SPOT Client starting...
[java] java.lang.UnsatisfiedLinkError: /Users/ /SunSPOT/sdk/lib/librxtxSerial.jnilib: no suitable image found. Did find: /Users/ /SunSPOT/sdk/lib/librxtxSerial.jnilib: mach-o, but wrong architecture thrown while loading gnu.io.RXTXCommDriver
[java] Exception in thread “main” java.lang.UnsatisfiedLinkError: /Users/ /SunSPOT/sdk/lib/librxtxSerial.jnilib: no suitable image found. Did find: /Users/ /SunSPOT/sdk/lib/librxtxSerial.jnilib: mach-o, but wrong architecture
[java] at java.lang.ClassLoader$NativeLibrary.load(Native Method)
[java] at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1878)
[java] at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1795)
[java] at java.lang.Runtime.loadLibrary0(Runtime.java:823)
[java] at java.lang.System.loadLibrary(System.java:1045)
[java] at gnu.io.CommPortIdentifier.(CommPortIdentifier.java:83)
[java] at com.sun.spot.client.SerialPortWrapper.initComms(SerialPortWrapper.java:157)
[java] at com.sun.spot.client.SerialPortWrapper.(SerialPortWrapper.java:133)
[java] at com.sun.spot.client.SpotManager.(SpotManager.java:85)
[java] at com.sun.spot.client.SpotClientCommands.(SpotClientCommands.java:152)
[java] at com.sun.spot.client.ui.SpotClientCommandLineUI.main(SpotClientCommandLineUI.java:166)
******************************
SPOT Command Completed!
******************************
Snow Leopard の Sun SPOT Manager で Refresh ボタンを押すと 以下の様なエラーが出る場合..
-
•
SFC-SFS librxtxSerial.jnlib
librxtxSerial.jnlib
• librxtxSerial.jnlib
/Users/ /SunSPOT/sdk/lib/librxtxSerial.jnilib
Sun SPOT
• Tutorial
• The Basestation in Action
• Send-Data and HTTP Demos
• BaseStation USB
• Sun SPOT Manager SPOT Info or “ant info” Demo
…
[java] OTA Command Server is disabled
[java] Configured as a Basestation
…
-
• BaseStation
• LED 10
• SendDataDemo
• SendDataDemo-onSPOT
• SendDataDemo-onDesktop
• SendDataDemo-GUIonDesktop
• NetBeans or ant
SendDataDemo-onSPOT protected void startApp() throws MIDletStateChangeException {
RadiogramConnection rCon = null; Datagram dg = null; … try { rCon = (RadiogramConnection) Connector.open("radiogram://broadcast:" + HOST_PORT); dg = rCon.newDatagram(50); } catch (Exception e) {…} … while (true) { try { now = System.currentTimeMillis(); reading = lightSensor.getValue(); … dg.reset(); dg.writeLong(now); dg.writeInt(reading); rCon.send(dg); } catch (Exception e) {…} } }
-
SendDataDemo-onDesktop private void run() throws Exception {
RadiogramConnection rCon; Datagram dg; … try { rCon = (RadiogramConnection) Connector.open("radiogram://:" + HOST_PORT); dg = rCon.newDatagram(rCon.getMaximumLength()); } catch (Exception e) {…} … while (true) { try { rCon.receive(dg); String addr = dg.getAddress(); // read sender's Id long time = dg.readLong(); // read time of the reading int val = dg.readInt(); // read the sensor value System.out.println(…); } catch (Exception e) {…} } }
Sun SPOT
http://jp.sun.com/developers/java/series/sunspot/index.html
3 Sun SPOT Hello World
• Sun SPOT API
eDemo
6 Sun SPOT
•
/ColorImageDict > /JPEG2000ColorACSImageDict > /JPEG2000ColorImageDict > /AntiAliasGrayImages false /CropGrayImages true /GrayImageMinResolution 300 /GrayImageMinResolutionPolicy /OK /DownsampleGrayImages true /GrayImageDownsampleType /Bicubic /GrayImageResolution 300 /GrayImageDepth -1 /GrayImageMinDownsampleDepth 2 /GrayImageDownsampleThreshold 1.50000 /EncodeGrayImages true /GrayImageFilter /DCTEncode /AutoFilterGrayImages true /GrayImageAutoFilterStrategy /JPEG /GrayACSImageDict > /GrayImageDict > /JPEG2000GrayACSImageDict > /JPEG2000GrayImageDict > /AntiAliasMonoImages false /CropMonoImages true /MonoImageMinResolution 1200 /MonoImageMinResolutionPolicy /OK /DownsampleMonoImages true /MonoImageDownsampleType /Bicubic /MonoImageResolution 1200 /MonoImageDepth -1 /MonoImageDownsampleThreshold 1.50000 /EncodeMonoImages true /MonoImageFilter /CCITTFaxEncode /MonoImageDict > /AllowPSXObjects false /CheckCompliance [ /None ] /PDFX1aCheck false /PDFX3Check false /PDFXCompliantPDFOnly false /PDFXNoTrimBoxError true /PDFXTrimBoxToMediaBoxOffset [ 0.00000 0.00000 0.00000 0.00000 ] /PDFXSetBleedBoxToMediaBox true /PDFXBleedBoxToTrimBoxOffset [ 0.00000 0.00000 0.00000 0.00000 ] /PDFXOutputIntentProfile () /PDFXOutputConditionIdentifier () /PDFXOutputCondition () /PDFXRegistryName () /PDFXTrapped /False
/CreateJDFFile false /Description > /Namespace [ (Adobe) (Common) (1.0) ] /OtherNamespaces [ > /FormElements false /GenerateStructure false /IncludeBookmarks false /IncludeHyperlinks false /IncludeInteractive false /IncludeLayers false /IncludeProfiles false /MultimediaHandling /UseObjectSettings /Namespace [ (Adobe) (CreativeSuite) (2.0) ] /PDFXOutputIntentProfileSelector /DocumentCMYK /PreserveEditing true /UntaggedCMYKHandling /LeaveUntagged /UntaggedRGBHandling /UseDocumentProfile /UseDocumentBleed false >> ]>> setdistillerparams> setpagedevice