Up DS18B20 のテスト (OS : Raspbian for robots) 作成: 2021-03-24
更新: 2021-03-24


  1. 配線

  2. RaspberryPi を起動。

  3. 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

  4. 温度が記録されていることを確認:
      $ 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」


  5. 温度表示プログラムを作成・実行
      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 の接続によって作成され,
       接続が断たれると,削除される。