follow me

RasPiで1-wire温度計を使ってみよう

Raspberry Piで1-wire温度計を繋げてみました。
利用したのは、秋月電子通商で入手できるDS18B20+。簡単に入手できる事は大切です。
1-wireなので、電流が足りる限り複数接続できます。(ADを使ってしまうと複数繋げるのが面倒なので、1-wireを利用してみました。)


接続は、こんな感じです。
写真ではわかりにくいですが、結線はこうなります。
RasPi (P1 3.3V) - DS18B20+(P3)
RasPi (P4 GPIO4) - DS18B20+(P2)
RasPi (P24 GND) - DS18B20+(P1)
VDDとDQの間に4.7kの抵抗を付けます


データの取得は、1-wire用のモジュールを読み込めば、/sysで値を取れます。
後は読み取ったデータを加工するだけなのでPerlでもRubyでもPythonでもw
$ sudo modprobe wire
$ sudo modprobe w1-gpio
$ sudo modprobe w1-therm
以下で、接続されているデバイス数を確認できます。
$ cat /sys/bus/w1/devices/w1_bus_master1/w1_master_slave_count
1
以下で、接続されているデバイスのIDを取得します。(1-wire機器は個別のIDが振られています。)
複数接続されていれば、複数行表示されます。
$ cat /sys/bus/w1/devices/w1_bus_master1/w1_master_slaves
28-000003b73c38
実際のデータ読み取りは、2行目のデータを1000で割った値が温度になります。
以下だと、30.312度になります。
$ cat /sys/bus/w1/devices/28-000003b73c38/w1_slave 
e5 01 4b 46 7f ff 0b 10 be : crc=be YES
e5 01 4b 46 7f ff 0b 10 be t=30312


1-wire品なので若干値段はしますが、大量に海外から買えば半額にはなるでしょう。
これでラックの四隅に付けてラック内の温度を監視できる訳ですね。


ちなみに、複数個繋げるとコンナ感じ。
$  cat /sys/bus/w1/devices/w1_bus_master1/w1_master_slaves
28-000003b73c38
28-000003b7114c
$ cat /sys/bus/w1/devices/28-000003b73c38/w1_slave 
42 01 4b 46 7f ff 0e 10 ab : crc=ab YES
42 01 4b 46 7f ff 0e 10 ab t=20125
$ cat /sys/bus/w1/devices/28-000003b7114c/w1_slave
44 01 4b 46 7f ff 0c 10 a9 : crc=a9 YES
44 01 4b 46 7f ff 0c 10 a9 t=20250
RasPiで1-wire温度計を使ってみよう | 0 件のコメント | アカウント登録
サイト管理者はコメントに関する責任を負いません。