Arduino + BeagleBoard(Ubuntu) シリアルポートを読んでたまにファイルに書き出す

大学院棟の明るさをwebに公開中


http://shokai-b.mag.keio.ac.jp/light


ArduinoCdSをつけて明るさをとってシリアル通信させて、BeagleBoard側でRubyでシリアル通信を読んでApache2のディレクトリに書き出してる。
赤いのがBeagleBoard。Ubuntu9.04をインストールしてApache2が動いている。RailsSinatraもインストールできたしもはやなんでもできる。
R0012111

BeagleBoardのストレージがSDカードなので、あまり書き込みたくない。1000回受信したら1回だけ書き込むようにしといた。

あとシリアル通信の出力フォーマットがに=とか&とか付けちゃったのでそれをparseしてる

#!/usr/bin/env ruby

name = ARGV.shift || '/dev/ttyS2'
port = open(name, 'r')
count = 1000
begin
  port.each {|line|
    light = line.split('=')[1].split('&')[0] # 数値だけ取り出し
    puts light
    count+=1
    if count > 1000
      file = open('/var/www/light', 'w+')
      file.puts("light : #{light}")
      file.close
      count = 0
    end
  }
ensure
  port.close
end