RasPiで1-wire温度計を使ってみよう
2013年2月16日(土) 23:28 JST
閲覧数 7,522
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
複数接続されていれば、複数行表示されます。
以下だと、30.312度になります。
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