u-service09 10-11 sunspotinstallguidesunspotの仕組み • 3層から構成 • sensorboard •...

16
モノ創りの科学 Sun SPOT 環境構築 コンテクストアウェア・プログラミング 環境情報学部 高汐 一紀 SunSpotとは Sun microsystemsが開発した無線センサデバイス 3軸加速度センサー 光センサー 温度センサー 3色 LEDs(8個) プッシュボタン(入力) I/O ピン アナログ入力(6), 汎用入出力(5) Javaを使いプログラムの開発が可能

Upload: others

Post on 27-Jan-2021

1 views

Category:

Documents


0 download

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が赤かったらクリック してファームウェアをアップグレード

    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