Arduino + BeagleBoard(Ubuntu) シリアルポートを読んでたまにファイルに書き出す
大学院棟の明るさをwebに公開中
http://shokai-b.mag.keio.ac.jp/light
ArduinoにCdSをつけて明るさをとってシリアル通信させて、BeagleBoard側でRubyでシリアル通信を読んでApache2のディレクトリに書き出してる。
赤いのがBeagleBoard。Ubuntu9.04をインストールしてApache2が動いている。RailsとSinatraもインストールできたしもはやなんでもできる。
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