SlideShare a Scribd company logo
1 of 28
Download to read offline
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台ほどあります

More Related Content

More from Kindai University

ブロックチェーンエコノミーのコンセンサスとガバナンス
ブロックチェーンエコノミーのコンセンサスとガバナンスブロックチェーンエコノミーのコンセンサスとガバナンス
ブロックチェーンエコノミーのコンセンサスとガバナンスKindai University
 
福岡ブロックチェーン・エコノミー勉強会セミナー
福岡ブロックチェーン・エコノミー勉強会セミナー福岡ブロックチェーン・エコノミー勉強会セミナー
福岡ブロックチェーン・エコノミー勉強会セミナーKindai University
 
福岡ブロックチェーン・エコノミー勉強会公開版
福岡ブロックチェーン・エコノミー勉強会公開版福岡ブロックチェーン・エコノミー勉強会公開版
福岡ブロックチェーン・エコノミー勉強会公開版Kindai University
 
やっぱりブロックチェインより仮想通貨
やっぱりブロックチェインより仮想通貨やっぱりブロックチェインより仮想通貨
やっぱりブロックチェインより仮想通貨Kindai University
 
FinTechと金融サービスの将来像
FinTechと金融サービスの将来像FinTechと金融サービスの将来像
FinTechと金融サービスの将来像Kindai University
 
仮想通貨のブロックチェイン技術によるFinTech
仮想通貨のブロックチェイン技術によるFinTech仮想通貨のブロックチェイン技術によるFinTech
仮想通貨のブロックチェイン技術によるFinTechKindai University
 
ビットコイン福岡勉強会法的課題
ビットコイン福岡勉強会法的課題ビットコイン福岡勉強会法的課題
ビットコイン福岡勉強会法的課題Kindai University
 
ブロックチェインとOpen asset protocol
ブロックチェインとOpen asset protocolブロックチェインとOpen asset protocol
ブロックチェインとOpen asset protocolKindai University
 
電気マネーでエネルギー問題解決
電気マネーでエネルギー問題解決電気マネーでエネルギー問題解決
電気マネーでエネルギー問題解決Kindai University
 
電子情報通信学会グローバル社会とビットコイン(山崎)
電子情報通信学会グローバル社会とビットコイン(山崎)電子情報通信学会グローバル社会とビットコイン(山崎)
電子情報通信学会グローバル社会とビットコイン(山崎)Kindai University
 
薬院サルー仮想通貨プロジェクト
薬院サルー仮想通貨プロジェクト薬院サルー仮想通貨プロジェクト
薬院サルー仮想通貨プロジェクトKindai University
 
明星和楽 Bitcoin の概要
明星和楽 Bitcoin の概要明星和楽 Bitcoin の概要
明星和楽 Bitcoin の概要Kindai University
 
仮想通貨の薬院サルー実験
仮想通貨の薬院サルー実験仮想通貨の薬院サルー実験
仮想通貨の薬院サルー実験Kindai University
 

More from Kindai University (20)

Blockchian definition
Blockchian definitionBlockchian definition
Blockchian definition
 
Blockchain economy
Blockchain economyBlockchain economy
Blockchain economy
 
ブロックチェーンエコノミーのコンセンサスとガバナンス
ブロックチェーンエコノミーのコンセンサスとガバナンスブロックチェーンエコノミーのコンセンサスとガバナンス
ブロックチェーンエコノミーのコンセンサスとガバナンス
 
福岡ブロックチェーン・エコノミー勉強会セミナー
福岡ブロックチェーン・エコノミー勉強会セミナー福岡ブロックチェーン・エコノミー勉強会セミナー
福岡ブロックチェーン・エコノミー勉強会セミナー
 
福岡ブロックチェーン・エコノミー勉強会公開版
福岡ブロックチェーン・エコノミー勉強会公開版福岡ブロックチェーン・エコノミー勉強会公開版
福岡ブロックチェーン・エコノミー勉強会公開版
 
やっぱりブロックチェインより仮想通貨
やっぱりブロックチェインより仮想通貨やっぱりブロックチェインより仮想通貨
やっぱりブロックチェインより仮想通貨
 
FinTechと金融サービスの将来像
FinTechと金融サービスの将来像FinTechと金融サービスの将来像
FinTechと金融サービスの将来像
 
Congre chain説明資料
Congre chain説明資料Congre chain説明資料
Congre chain説明資料
 
仮想通貨のブロックチェイン技術によるFinTech
仮想通貨のブロックチェイン技術によるFinTech仮想通貨のブロックチェイン技術によるFinTech
仮想通貨のブロックチェイン技術によるFinTech
 
ビットコイン福岡勉強会法的課題
ビットコイン福岡勉強会法的課題ビットコイン福岡勉強会法的課題
ビットコイン福岡勉強会法的課題
 
ブロックチェインとOpen asset protocol
ブロックチェインとOpen asset protocolブロックチェインとOpen asset protocol
ブロックチェインとOpen asset protocol
 
Open fintech and Kachatter
Open fintech and KachatterOpen fintech and Kachatter
Open fintech and Kachatter
 
電気マネーでエネルギー問題解決
電気マネーでエネルギー問題解決電気マネーでエネルギー問題解決
電気マネーでエネルギー問題解決
 
仮想通貨実験計画
仮想通貨実験計画仮想通貨実験計画
仮想通貨実験計画
 
Bit Nexus
Bit NexusBit Nexus
Bit Nexus
 
電子情報通信学会グローバル社会とビットコイン(山崎)
電子情報通信学会グローバル社会とビットコイン(山崎)電子情報通信学会グローバル社会とビットコイン(山崎)
電子情報通信学会グローバル社会とビットコイン(山崎)
 
薬院サルー仮想通貨プロジェクト
薬院サルー仮想通貨プロジェクト薬院サルー仮想通貨プロジェクト
薬院サルー仮想通貨プロジェクト
 
明星和楽 Bitcoin の概要
明星和楽 Bitcoin の概要明星和楽 Bitcoin の概要
明星和楽 Bitcoin の概要
 
仮想通貨の薬院サルー実験
仮想通貨の薬院サルー実験仮想通貨の薬院サルー実験
仮想通貨の薬院サルー実験
 
Bitcoinの技術
Bitcoinの技術Bitcoinの技術
Bitcoinの技術
 

Fukuoka rubykaigi01 yamasaki lt

  • 1. Fukuoka Ruby Kaigi 01 2012 December 1 Rubyで フィジカル コンピューティング Rubyist九州! 山崎重一郎!
  • 2. Fukuoka Ruby Kaigi 01 2012 December 1 今年の夏休みの発明品  
  • 3. Fukuoka Ruby Kaigi 01 2012 December 1 AC電源周波数 検知アンテナ 電源コンセントの周波数を測定できます。 50Hz 東日本 60Hz 西日本
  • 4. Fukuoka Ruby Kaigi 01 2012 December 1 電力の需要と供給 需要が増えると   発電機のトルクが増える おもいなあ モーター 手回し発電機 電球 LED
  • 5. Fukuoka Ruby Kaigi 01 2012 December 1 電力の需要と供給 需要が増えると   発電機のトルクが増える mortar 電力需要 発電所 周波数変動で瞬時に需給関係がわかる!
  • 6. Fukuoka Ruby Kaigi 01 2012 December 1 午前8時20分ごろの電源周波数 で、ちょんと でも、また 需要が増えると アクセル 下がる   周波数が下がる ふかす
  • 7. Fukuoka Ruby Kaigi 01 2012 December 1 九州電力の電力需給状況 今年の夏 93% までいった 100%超えると大停電
  • 8. 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台で運転している。
  • 9. Fukuoka Ruby Kaigi 01 2012 December 1    来年の夏も
 発電所長と一緒に
 はらはらしよう!
  • 10. Fukuoka Ruby Kaigi 01 2012 December 1 BeagleBoneでやってみた arduinoみたいなオープンハードウェア 普通にLinuxが動く Ruby1.9.3 Rails3 OK
  • 11. 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!
  • 12. Fukuoka Ruby Kaigi 01 2012 December 1 FFT  高速フーリエ変換ってやつ
  • 13. 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
  • 14. Fukuoka Ruby Kaigi 01 2012 December 1 Rubyでやる?  はっきり言ってむいていない!  mrubyとも???! !  でも、makersな人々! •  オープンハードウェアをRubyで フィジカルコンピューティングで きると楽しいぞ!
  • 15. Fukuoka Ruby Kaigi 01 2012 December 1 Rubyでがんばった事 !  正確な時間間隔でサンプリング! •  8.3ミリ秒以下(1/60秒の半分以下)!  収集途中でGCが入ってはだめ!! •  しかも何日も動き続けないとだめ!
  • 16. 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)}
  • 17. 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)}
  • 18. Fukuoka Ruby Kaigi 01 2012 December 1 正確な時間間隔で動作  リアクタパターンを利用! マルチスレッドを使わずに! 軽量にノンブロッキングIO
  • 19. Fukuoka Ruby Kaigi 01 2012 December 1 Rubyで リアクタパターン
  • 20. Fukuoka Ruby Kaigi 01 2012 December 1 gemsの event machine ユーザ定義のイベント IOやイベント駆動 リアクタ プログラム
  • 21. Fukuoka Ruby Kaigi 01 2012 December 1 gemsの event machine ユーザ定義のイベント 定期発生イベント リアクタ プログラム
  • 22. 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 } }
  • 23. 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 } } }
  • 24. Fukuoka Ruby Kaigi 01 2012 December 1 サンプリング中は素早く   ウィンドウ関数もメモ化して再利用 hamming=->i{m={} m[i]||=(0.54-0.46*cos(2*PI*i/N-1))}
  • 25. Fukuoka Ruby Kaigi 01 2012 December 1 びっくりするくらい正確になった  
  • 26. Fukuoka Ruby Kaigi 01 2012 December 1 九州電力の送電系統図
  • 27. Fukuoka Ruby Kaigi 01 2012 December 1 SNSで周波数を共有
  • 28. Fukuoka Ruby Kaigi 01 2012 December 1 実験協力者募集中!  BeagleBone 貸し出します!! •  全部で15台ほどあります