RaspberryPiとArduinoの複雑な関係(シリアル編) ノ巻
Arduinoで測定したPocketGeigerの値をシリアル(232C)経由でRaspberryPiに取り込み、このデータをWeb向けに加工して表示というコンセプトでシステムがまとまったが、連続稼働で問題があった。
シリアルで受け取るところがminicomのファイルへのログ出力機能(-l)を使用していたが、これが数十分~数時間で止まる模様…
Arduinoが任意の時間にシリアルにデータを垂れ流すのをRaspPiがすかさず拾っていく仕組みなので、RaspPiに負荷が高いといえばそうかもしれないが、高々シリアル9600bpsを24時間連続待ち受け位は出来てもよいはず。
これを受け、cronで定期的に再実行掛けられるようスクリプトで、関連プロセス停止→Arduinoに接続→起動待ち(expect)→時刻設定データ送信→無限ループ、としたが期待通りに動いてくれない…
間欠的にシリアル接続してデータを吸い上げるモデルも考えたが、Arduinoがシリアル再接続で再起動してしまうため、測定を継続するには繋ぎっぱなしでなければならないと思う。
この長時間の問題もあるが、データにゴミ(文字列以外のデータ)が混入するとか、Arduinoとのハンドシェイク(expectでの時刻設定データ送信)が出来ない事があるなど、二台でシステムを組むと双方を補う点では良い事ずくめに思えたが、連携手段が限られているため工夫を求められる。それも一旦確立してしまえば…
あと余談だが、PocketGeigerの電池が切れたら、測定値が300uSv/hになっててビビったw もちろん誤報だが、電池が切れないACアダプタ化はしようと思うがノイズの影響が心配。
このコメントは投稿者によって削除されました。
返信削除