第4回 コンテクスト班 Sun Spotを動かしてみようの回

ユビキタスシステムアーキテクチャ
第8回 09,06,04
TA 山本純平
E-mail: [email protected]
アウトライン
• Sun SPOT紹介
– Sun SPOTとは?
– 実装例
• インストールの確認
– ドライバのインストール
– アップデート
• Net Beansの使い方
– サンプルプログラム
– 焼き込み方法
– 実行方法
• Sun SPOT演習
–
–
–
–
サンプルのDL
サンプルの説明
照度,加速度の取得
自由にプログラム
• タームプロジェクト
– スライドの作成について
• 課題
– なし!
Sun SPOTとは?
• 一言で言うと
– Javaでプログラミング可能なセンサ端末
• センサ
– 照度,加速度,温度センサ内蔵
– 8つのLED,2つのスイッチ
– さらに実装することも可能
• Javaでのプログラミングが可能
– Ex)センサデータの送信間隔を変更
実装例
• 温度計
– 温度によってLEDの光り方が変化
• 暑いと赤,寒いと青
• 照度計
– 明るさによってLEDの光り方が変化
• 明るいと激しく光り,暗いと消灯
• Sun SPOTに温度センサを実装
– 皮膚温度と気温を同時に測定できる
– ここでおもしろ話を1つ
ドライバのインストール
• Sun SPOT配布します
• USBに接続してインストール
– 自動的にインストールされるはず…
端末のアップデート
• Sun SPOT managerを起動
Sun SPOTsを選択
Sun SPOTの認識を確認
Upgrade
Net Beansの使い方
• サンプルプログラムの起動方法
• 焼き込み方
• 実行方法
サンプルの起動
• ファイル→プロジェクトを開く
サンプルの起動
• サンプルコードの場所
– SunSPOT/sdk/Demos/AirText
焼き込み
• AirTextを右クリック
– Build Project + Deploy to Sun SPOT
実行方法
• プロジェクトを右クリックして実行
– コンソールにデータが表示されるようになる
ここからが演習
• サンプルコード
– 照度に応じてLEDの明るさが変わるアプリケー
ション
• http://www.ht.sfc.keio.ac.jp/~ju
m-p/usa09s/StartApplication.java
Java基礎
• コンソールに出力
– System.out.println(“hoge”);
• 場合分け
– if(条件A){
• System.out.println(“A”);
– }else if(条件B)
• 繰り返し
– for(int i=0; i<5; i++){
• System.out.println(i);
–}
• 半永久的に繰り返す
– While(true){
• System.out.println(“B”);
• System.out.println(count
+ “回目”);
• count++;
–}
–}
インスタンスの作成
• LEDのインスタンス作成
– ITriColorLED[] leds =
EDemoBoard.getInstance().getLEDs();
• 照度センサのインスタンス作成
– ILightSensor lightSensor =
EDemoBoard.getInstance().getLightSensor();
照度の取得とLEDの点灯
• 照度の取得
– lightValue = lightSensor.getAverageValue();
• LEDの点灯
– leds[i].setRGB(lightValue, lightValue, lightValue);
– leds[i].setOn();
プログラミング演習
• 他のセンサデータも取得してみる
– 気温センサ
– 加速度センサ
• 取得したセンサデータに応じてLEDを変化させ
るプログラムを書いてみる
– 色で表示される温度計
• Ex)寒いと青・暑いと赤
– 激しく動くとLEDが強く点灯,立ち止まると消灯
コンテクスト取得のコツ
• 取得したいコンテクストの発見
– そりゃ当たり前
– Ex)歩行を取得したい場合
• センサの設置場所
– 人に付けるのか物に付けるのか
– Ex) 鞄の中,靴,足,手,etc
• 取得するセンサデータの選択
– Ex) 加速度,照度,温度, etc
• センサデータの変化を取得
– Ex) 立ち止まってる時,走ってる時との違いを発見
気温センサ
• インスタンスの作成
– ITemperatureInput tempSensor =
EDemoBoard.getInstance().getADCTemperature();
• 気温データの取得
– tempSensor.getCelsius(); (double)
加速度センサ
• インスタンスの作成
– Iaccelerometer3D accel =
EDemoBoard.getInstance().getAccelerometer();
• 加速度データの取得
– accel.getAccel();
あとは自習!
自由にプログラム書いてみて
タームプロジェクト
スライドテンプレート
TA 山本純平
E-mail: [email protected]
システムのタイトル
〜忘れ物検知システム〜
グループ名
所属 氏名1
所属 氏名2
システム概要
• 忘れ物をユーザに警告してくれるシステム
– 忘れ物を防止!!
アウトライン
• 背景と問題
– 忘れ物が本当にひどい
– どうにか直したい
• でも直らない
– こっそり教えてほしい
• システム提案
• アプローチ
– センサの装着と忘れ物
検知
– メールでユーザに通知
• システム構成
• スケジュール
– 忘れ物をこっそり通知
• 忘れ物検知
• こっそり通知
• コメント
– 発表の流れがわかるよ
うに
背景
• 一日に3回は忘れ物をする
– もう自分じゃ直せない
– メモを書いても,メモをなくすから意味がない
• センサの小型化やタグの普及
– センサの高機能化と小型化
• Sun SPOT, u-part, etc
• 照度,温度,加速度etc
– 1つ1つのモノがsmart化
• コメント
– この研究をやるにあたっての動機を書く
問題意識
• 自分自身の意思はあてにならない
• 他人も使えない
– お母さんはいっつも怒るしこれ以上頼めない
• 忘れ物検知システムは普及してない
– 周りに忘れ物したことがばれると恥ずかしい
• コメント
– 現在研究の目的が達成されていない理由を書く
システム
• 目的
– 忘れ物をなくす!
– 周りに気づかれないようにこっそり伝える
• 概要
– 忘れ物しそうになったら通知してくれる
– 周りにばれないように
シナリオ
• 星くんはいっつも忘れ物する
– もうなおらない,だってあほだもん
• このシステムを導入
– 忘れ物した状態で外に出ようとすると警告
– こっそりと通知が来る
– 何喰わぬ顔して忘れ物を取りに行く
– クールに外出!
• コメント
– このシステムを利用してハッピーな物語を描く
機能要件
• 忘れ物を検知
– 鍵,財布,時計を対象
• こっそりと通知する
– 他人にばれないように
• コメント
– システムを実現するために必要な機能を書く
アプローチ
• センサを使った忘れ物検知
– 振動センサを利用
• 靴と対象物に設置
– 外出時に対象物が振動していなかったら警告
• メールで通知
– 内容は他人にはばれない
– 友達からメール来たかように装う
• コメント
– 機能要件を実現するための手法を述べる
• =システムのウリ
システム構成図
実装環境
• PC
– Winows vista
• 振動センサ
– U-part
• 携帯端末
– ユーザの携帯電話を使用
スケジュールと役割分担
山本担当
• 忘れ物検知モジュール
• 6月中
– センサの設置
– センサデータの取得
– データの変化を確認
• 7月中
– 忘れ物判断アルゴリズム
星担当
• こっそり通知モジュール
• 6月中
– メール送信モジュール
• 7月中
– メアド登録インタフェース作成
スライド作成のコツ
• 話の軸を通すこと
– 流れがわかりやすいように
– 問題意識からアプローチまで,筋を通す
• イラストを多用する
– 言葉で伝わりにくい部分をイラストや図で説明
– インパクト
• おもしろおかしく説明
– イラスト,背景画像など