- 配線
- RaspberryPi を起動。
- DS18B20 が認識されていることを確認:
$ lsmod
‥‥
w1_gpio 16384 0
wire 45056 2 w1_gpio,w1_therm
‥‥
DS18B20 を表す「w1_therm」が加わっている。
$ ls -la /sys/bus/w1/devices
lrwxrwxrwx 1 root root 0 Mar 24 22:21 28-3c01a816532c
-> ../../../devices/w1_bus_master1/28-3c01a816532c
lrwxrwxrwx 1 root root 0 Mar 24 19:30 w1_bus_master1
-> ../../../devices/w1_bus_master1
$ cd /sys/devices/w1_bus_master1/28-3c01a816532c
$ ls -la
lrwxrwxrwx 1 root root 0 Mar 24 22:21 28-3c01a816532c
-> ../../../devices/w1_bus_master1/28-3c01a816532c
drwxr-xr-x 3 root root 0 Mar 24 19:30 hwmon
-r--r--r-- 1 root root 4096 Mar 24 22:28 id
-r--r--r-- 1 root root 4096 Mar 24 22:28 name
drwxr-xr-x 2 root root 0 Mar 24 22:28 power
lrwxrwxrwx 1 root root 0 Mar 24 19:30 w1_bus_master1
-> ../../../devices/w1_bus_master1
-rw-r--r-- 1 root root 4096 Mar 24 19:30 uevent
-rw-r--r-- 1 root root 4096 Mar 24 22:28 w1_slave
- 温度が記録されていることを確認:
$ cat w1_slave
70 01 55 05 7f a5 a5 66 c7 : crc=c7 YES
70 01 55 05 7f a5 a5 66 c7 t=23000
「t=23000」は,「23度C」
- 温度表示プログラムを作成・実行
denshi.club「ディジタル温度センサ1 1-Wire DS18B20」から,プログラムを部分的に拝借する:
$ vi ds18b20.py
#!/usr/bin/env python
import subprocess
import os
import glob
dir1 = os.listdir("/sys/bus/w1/devices")
counter = 0
for D in dir1:
if "28-" in D:
counter += 1
files = glob.glob('/sys/bus/w1/devices/28-*')
print(D)
tfiles = subprocess.check_output(['cat','/sys/bus/w1/devices/' + D + '/w1_slave'])
if tfiles.find("YES",30,60) != -1 :
nannmojime = tfiles.find("t=",50,80)
print (str(tfiles[nannmojime:]) + " " + str(int(tfiles[nannmojime+2:])/1000.0))
|
$ chmod +x ds18b20.py
$ ./ds18b20.py
28-3c01a816532c
t=23500
23.5
備考:ディレクトリ /sys/devices/w1_bus_master1/28- ‥‥ は,
DS18B20 の接続によって作成され,
接続が断たれると,削除される。
|