■RaspberryPi B+を使って、室温監視のセンサアレイを作ってみようと計画中。1-wireの温度センサを複数使って室内の温度分布を取得して、グラフィック表示できればいいかなと。もともとAVRのプラットフォームで計画していたけれど、そこをRaspberryPi B+に置き換える。
調べてみれば、Raspberry Piにはすでに1-wireの通信ドライバがあって、そのサブセットにはDS18S20の温度センサを扱えるものもある。使い方は簡単で、+3.3VとGND(0V)、GPIO7をセンサにつなげる。GPIO7は信号線で、3.3Vから4.7K程度の抵抗でプルアップする。1つ前のモデルのRaspberryPI Bだと信号線はGPIO4がアサインされていて、Webで拾える説明もたいていGPIO4となっている。
GPIO7にしたのは、RaspberryPI Bモデルのピン配置で眺めてみると、上の方にGPIO4があるからで、B+モデルのピンアサインで比べてみるとGPIO7がそれっぽい。ものは試しと配線してみると、デバイスドライバが認識してくれました。
pidoraを使っているのですが、起動時にモジュールを組み込む説明をまだ見つけておらず、modprobeで手動で導入します。
でデバイスドライバが導入され、センサが認識されれば、/sys/bus/w1/devices/ 以下に
w1_bus_master1
と、
'28-' で始まる個々のセンサに対応するデバイスファイル(シンボリックリンク)が作成されます。実際の温度情報は'28-'で始まるフォルダ配下のw1_slaveファイルを読み出すことで取得できます。
温度情報は't='で示されている数値を100で割ることで得られます。DS18S20のIDは'28-'で始まる個々のデバイスフォルダ名で識別されるので、センサアレイを作る前に個々のセンサのIDを調べておく必要があります。
センサの読み出しは簡単にできることがわかったので、あとはセンサアレイの作り方を考えればよさそうです。