Fukuoka rubykaigi01 yamasaki lt
Upcoming SlideShare
Loading in...5
×
 

Fukuoka rubykaigi01 yamasaki lt

on

  • 4,606 views

 

Statistics

Views

Total Views
4,606
Views on SlideShare
2,586
Embed Views
2,020

Actions

Likes
9
Downloads
2
Comments
0

9 Embeds 2,020

http://spring-mt.tumblr.com 1380
http://www.lancard.com 558
https://twitter.com 30
http://tumblr.hootsuite.com 24
http://www2.lancard.com 15
http://heaven-controlled22.rssing.com 8
http://webcache.googleusercontent.com 3
http://www.hanrss.com 1
http://tweetedtimes.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Fukuoka rubykaigi01 yamasaki lt Fukuoka rubykaigi01 yamasaki lt Presentation Transcript

  • Fukuoka Ruby Kaigi 01 2012 December 1 Rubyで フィジカル コンピューティング Rubyist九州! 山崎重一郎!
  • Fukuoka Ruby Kaigi 01 2012 December 1 今年の夏休みの発明品  
  • Fukuoka Ruby Kaigi 01 2012 December 1 AC電源周波数 検知アンテナ 電源コンセントの周波数を測定できます。 50Hz 東日本 60Hz 西日本
  • Fukuoka Ruby Kaigi 01 2012 December 1 電力の需要と供給需要が増えると   発電機のトルクが増える おもいなあ モーター 手回し発電機 電球 LED
  • Fukuoka Ruby Kaigi 01 2012 December 1 電力の需要と供給需要が増えると   発電機のトルクが増える mortar 電力需要 発電所 周波数変動で瞬時に需給関係がわかる!
  • Fukuoka Ruby Kaigi 01 2012 December 1 午前8時20分ごろの電源周波数 で、ちょんと でも、また 需要が増えると アクセル 下がる   周波数が下がる ふかす
  • Fukuoka Ruby Kaigi 01 2012 December 1 九州電力の電力需給状況 今年の夏 93% までいった 100%超えると大停電
  • Fukuoka Ruby Kaigi 01 2012 December 1 苅田火力発電所新二号機   今年の1月に廃止予定だった40歳の火力発電機! (2012年8月20日 読売新聞) 苅田発電所新2号機が故障、出力 半減  九州電力は20日、石油火力の苅田発電所新2号機(福岡県苅田町、 出力37万5000キロ・ワット)で17日に燃料ポンプが故障し、出力を約 19万キロ・ワットに下げて運転していると発表した。17日に故障で止 まった液化天然ガス(LNG)火力の新小倉発電所5号機(北九州市、出 力60万キロ・ワット)は20日夜にも運転を再開する。  九電では他電力会社などからの調達量を増やし、20日の電力使用率 は92%の見通しで、「当面の需給に問題はない」としている。  苅田新2号機は17日午前、ボイラーに燃料を送るポンプ2台のうち1 台で振動や異音が起き、予備機に切り替えて運転。同日夕に予備機も 同じ故障で止まり、ポンプ1台で運転している。
  • Fukuoka Ruby Kaigi 01 2012 December 1   来年の夏も
 発電所長と一緒に
 はらはらしよう!
  • Fukuoka Ruby Kaigi 01 2012 December 1 BeagleBoneでやってみた arduinoみたいなオープンハードウェア 普通にLinuxが動く Ruby1.9.3 Rails3 OK
  • 0! 500! 1000! 1500! 2000! 2500! 3000! 3500! 4000! 4500! 1! 5! 9! 13! 17! 21! 25! 29! 33! 37! 41! 45! 49! 53! 57! 61! Fukuoka Ruby Kaigi 01 2012 December 1 65! 69! 73! 77! 81! 85! 89! 93! 97!101!105!109!113!117!121!125!129!133!137!141!145! うわあ∼ノイズだらけ149!153!157!161!165!169!173!177!181!185!189!193!197!201!205!209!213!217!221!225!229!233!237!241!245!249! アンテナからの生データ アナログポートに刺した253! 系列1!
  • Fukuoka Ruby Kaigi 01 2012 December 1 FFT  高速フーリエ変換ってやつ
  • Fukuoka Ruby Kaigi 01 2012 December 1 周波数成分の分布 25! 20! 15! 10! 5! 0! 1! 59.93 2! 59.94 59.96 3! 4! 59.97 59.98 5! 6! 59.99 7! 60.00 8! 60.01 9! 60.02
  • Fukuoka Ruby Kaigi 01 2012 December 1 Rubyでやる?  はっきり言ってむいていない!  mrubyとも???! !  でも、makersな人々! •  オープンハードウェアをRubyで フィジカルコンピューティングで きると楽しいぞ!
  • Fukuoka Ruby Kaigi 01 2012 December 1 Rubyでがんばった事 !  正確な時間間隔でサンプリング! •  8.3ミリ秒以下(1/60秒の半分以下)!  収集途中でGCが入ってはだめ!! •  しかも何日も動き続けないとだめ!
  • Fukuoka Ruby Kaigi 01 2012 December 1 FFTは2行fft=->a{n=a.size! (n==1 ? a : fft[(0...n/2).map{|i|a[i]+a[i+n/2]}].zip(fft[(0...n/2).map{|i|(a[i]-a[i+n/2])*((Complex.polar(1,-2*PI/n))**i)}]).flatten)}
  • Fukuoka Ruby Kaigi 01 2012 December 1 FFTは2行
 (拡大版)fft=->a{n=a.size (n==1 ? a : fft[(0...n/2).map{|i|a[i]+a[i+n/2]}].zip(fft[(0...n/2).map{|i|(a[i]-a[i+n/2])*((Complex.polar(1,-2*PI/n))**i)}]).flatten)}
  • Fukuoka Ruby Kaigi 01 2012 December 1 正確な時間間隔で動作  リアクタパターンを利用! マルチスレッドを使わずに! 軽量にノンブロッキングIO
  • Fukuoka Ruby Kaigi 01 2012 December 1 Rubyで リアクタパターン
  • Fukuoka Ruby Kaigi 01 2012 December 1 gemsの event machine ユーザ定義のイベント IOやイベント駆動 リアクタ プログラム
  • Fukuoka Ruby Kaigi 01 2012 December 1 gemsの event machine ユーザ定義のイベント 定期発生イベント リアクタ プログラム
  • Fukuoka Ruby Kaigi 01 2012 December 1 5ミリ秒ごとに駆動されるプログラム (実際は微調整が必要!) require eventmachine EM.run {n=1 EM.add_periodic_timer(0.005){ センサーチェックプログラム n+=1 EM.stop if n==N } }
  • Fukuoka Ruby Kaigi 01 2012 December 1 サンプリング中はGCを入れない   バッファ(ウィンドウ)をFiberのコルーチンにして 領域を繰り返し再利用!window=Fiber.new{i=0;buf=Array.new(SIZE) File.open(ANALOG_IN){|f| loop{r=Fiber.yield(buf) if r==0 then i=0 else #センサーチェック buf[i]=f.gets.chomp.to_f*hamming[i] f.rewind;i+=1 end } } }
  • Fukuoka Ruby Kaigi 01 2012 December 1 サンプリング中は素早く   ウィンドウ関数もメモ化して再利用 hamming=->i{m={} m[i]||=(0.54-0.46*cos(2*PI*i/N-1))}
  • Fukuoka Ruby Kaigi 01 2012 December 1 びっくりするくらい正確になった  
  • Fukuoka Ruby Kaigi 01 2012 December 1 九州電力の送電系統図
  • Fukuoka Ruby Kaigi 01 2012 December 1 SNSで周波数を共有
  • Fukuoka Ruby Kaigi 01 2012 December 1 実験協力者募集中!  BeagleBone 貸し出します!! •  全部で15台ほどあります