RaspberryPi i2cgetでADT7410の温度を取得するコマンド

 2015-07-26
RaspberryPiではi2cgetでI2Cの通信が出来ますが、ADT7410(温度センサ)のビットパターンを計算しないと摂氏温度は手に入りません。
 
perlやらpythonやらを使えば簡単ですが、面倒くさがりなのでパイプで繋いで計算してもらいます。

[raspi]% i2cget -y 1 0x48 0x00 w | sed 's/0x\(..\)\(..\)/0x\2\1/g' | xargs printf "(%d/8)*0.0625\n" | bc
28.7500


i2cget -y 1 0x48 0x00 w
I2Cでリードする
何か聴かれてもyと答える
I2Cバス1番を使用
スレーブアドレスは0x48(ADT7410のデフォルト)
スレーブの0x00番地から読む
16bit単位アクセス

sed 's/0x\(..\)\(..\)/0x\2\1/g'
エンディアンの変換を文字列置換で行う
0xの後ろに4文字続く事を期待
0xの後ろの4文字を2文字ずつ区切って、順番を入れ替えて出力

xargs printf "(%d/8)*0.0625\n"
xargsは標準入力で受け取った文字列を引数として別のコマンドに渡す
printfで16進数を10進数に変換
次のbcコマンドに渡すために計算式を付け加える

bc
小数点を含む算術計算


KISSの原則に従って、出来るだけ簡素な方がいいんです!
あとは適当にcronで定期的にコマンド叩いて、ファイルにリダイレクトしておけばデータロガーになるですよ。


ちなみに0度以下は考えてないので、そのまま使用すると値がひっくり返ります。 必要になったらその時実装するです。



ADT7410関係:


 
 
コメント












管理者にだけ表示を許可する
トラックバック
トラックバックURL:
http://wbbwbb.blog83.fc2.com/tb.php/202-a6401804
≪ トップページへこのページの先頭へ  ≫