Rubyを用いたマイコンプログラムの遠隔書き換えシステム
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

Rubyを用いたマイコンプログラムの遠隔書き換えシステム

  • 58 views
Uploaded on

第2回3Gシールド・アイデア・コンテスト&カンファレンス用資料

第2回3Gシールド・アイデア・コンテスト&カンファレンス用資料

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment

Views

Total Views
58
On Slideshare
58
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
0
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Rubyを用いた マイコンプログラムの 遠隔書き換えシステム ルアリダワークス  山本 和歌山県立 海南高校  瀧本、筈谷、若勇、和田、岸田
  • 2. 2 システム概要  基板はArduino Pro Miniとピン互換、 GR-SAKURAと機能互換となっています。  GR-SAKURA互換基板として使用する には、GR-SAKURAファームを書き込む 必要があります。  マイコンには、mrubyが実装されて おり、Serial 1を使って3Gシールドと やり取りができるRubyのクラスが 用意されています。
  • 3. 3 プログラム書き換えの仕組み  インターネット上のサーバにapacheなどを 入れておき、http/httpsでプログラムが取得 できるようにしておく。 インターネット・クラウド DropBoxファイル 公開サーバ上ファイル  mrubyボードには、httpを用いて指定ファイルが取得 できるrubyクラスが実装されている。  下記のサイトからのファイル取得が可能なこと が確認できている。  ・DropBox (httpsによる取得)  ・Yahoo ジオシティーズ (httpによる取得) 実行中のプログラム 自分自身を終了させて、 ダウンロードしたプログラムを呼び出す ダウンロードしたプログラム ダウンロードしたプログラム の呼び出し ダウンロードしたプログ ラムの実行
  • 4. 4 プログラム書き換えの仕組み mrubyは、 バイトコードをロードし直せば、 動作プログラムを切り替えられる。
  • 5. 5 実装クラス・メソッド一覧 カーネルクラス pinMode(pin,mode) digitalRead(pin) digitalWrite(pin,value) analogRead(number) pwm(pin,value) pwmHz(value) analogDac(value) delay(value) millis() led(sw) システムクラス Sys.exit() Sys.setrun(filename) Sys.version(r) Sys.push(address,buf,length) Sys.pop(address,length) Sys.fileload() ファイルクラス Mem.open(number,filename,mode) Mem.close(number) Mem.read(number) Mem.write(number,buf,len) Mem.seek(number,byte) シリアルクラス Serial.begin(num,bps) Serial.setDefault(num) Serial.print(number,string) Serial.println(number,string) Serial.read(number) Serial.write(number,buf,len) Serial.available(number) I2Cクラス I2c.sdascl(sda,scl) I2c.write(id,address,data) I2c.read(id,addressL,addressH) I2c.begin(id) I2c.lwrite(address) I2c.end() I2c.request(id,n) I2c.lread() I2c.freq(Hz) ネットワーククラス Net.begin(setBaurate[,oldBaurate]) Net.date() Net.time() Net.lat([timeout]) Net.lng([timeout]) Net.getmrb(server,path,port[,ssl]) Net.restart() Net.shutdown() Net.httpget(server,path,port[,ssl]) Net.httppost(server,path,port,header,body[,ssl])
  • 6. 6 rubyプログラム while(true)do #http://www.geocities.jp/cansatkainan01/からプログラムをダウンロードする x = Net.getmrb("www.geocities.jp","/cansatkainan01/sensor-a.mrb",80) #x=0だったら取得に成功している if(x == 0)then #sensor-a.mrbの実行セット Sys.setrun("sensor-a.mrb") delay(100) #100ms待つ #"Success load sensor-a.mrb #cansatkainan"とツイートする mes = "Success load sensor-a.mrb #cansatkainan" res = Net.httppost("arduino-tweet.appspot.com","update",80,"",@Token + mes) #今走っているプログラムを終了させる Sys.exit() end @Dat = Net.date() @Tim = Net.time() @Lat = Net.lat(60000) @Lng = Net.lng(60000) #間隔待ち。予定の時間になるまで待っている while(millis() < @ToTime)do #ファイルローダーを呼び出すべきか調べる fileloader() delay(1) #1ms待ちます End #次の動作時間をセットする nextTime() #LEDを点滅させる led(@Sw) @Sw = 1 - @Sw end geocitiesからrubyプログラムをダウンロードするプログラム例です。 mrbファイル名を指定して ダウンロードしている ダウンロード成功の場合 そのmrbファイルが 次に実行されるファイル として登録される Http POSTを利用して tweetしている exit()によりプログラムを 終了させると 登録されたmrbファイルが 実行される
  • 7. 7 今後の目標 クラウドサーバークラウドサーバー O S RubyVM / JVM Rails / JAX-RS プログラムを書いている H/W RT(C) Framework プログラム mRVM(C) 通信 JAX-RS JVM 組み込みプログラマを増やす
  • 8. 8 今後の目標 クラウドサーバークラウドサーバー クラウド分散 デバイス側の処理負荷を クラウドに持って行く! CloudManegeCloudManegeクラスとクラスと ChannelChannelクラスの実装クラスの実装 binary
  • 9. 9 実際の使用例 和歌山県立海南高校が製作した 疑似人工衛星 キャリアの パラシュート パラシュート ロケット用 キャリア キャリア開閉 機構回路 疑似人工衛星をロ ケットに搭載するた め、キャリアに詰め ている様子
  • 10. 10 実際の使用例 疑似人工衛星を搭載したロケット Bluetooth通信とインターネット通信は、既に動作して いる
  • 11. 11 実際の使用例 JAXA能代ロケット実験場での 打ち上げの様子ロケット 400m程度上 昇し、疑似人 工衛星の入っ たキャリアが 放出される。
  • 12. 缶サット甲子園出場
  • 13. 13 挑戦したミッション はやぶさが行ったような遠隔操作での プログラムの書き換え
  • 14. 14 製作した衛星 RubyボードA RubyボードB 3Gシールド 加速度&ジャイロ センサA 加速度&ジャイロ センサB 温度&気圧センサ 衝撃吸収用クッション ログ用SDメモリ X2 バッテリと bluetooth基板 は取り外し中 ネットワークアクセス用(A)とセンサ制御用(B)の2枚のボードを搭載
  • 15. ここは動画です
  • 16. 16 お わ り ご清聴ありがとうございました