ukonline2000 发表于 2012-8-8 23:11:09

在树莓派上使用1wire器件DS18B20(温度传感器)读取温度!!!!

今天是了一下1wire(1线)器件的读取,没有问题,写个简单的教程帮助有需要的童鞋吧!
1.准备工作:
树莓派
树莓派串口扩展版http://www.shumeipai.net/thread-466-1-2.html

wheezy版debian系统
DS18B20温度传感器模块



2.安装1 wire驱动
用root登录,执行以下命令:

cd /boot
wget http://www.frank-buss.de/raspberrypi/kernel-rpi-w1.tgz
tar -xzf kernel-rpi-w1.tgz
rm -f kernel-rpi-w1.tgz
cd /lib/modules
wget http://www.frank-buss.de/raspberrypi/modules-rpi-w1.tgz
tar -xzf modules-rpi-w1.tgz
rm -f modules-rpi-w1.tgz
sync
reboot


3.连接DS18B20温度传感器到树莓派上
DS18B20一共三个管脚:VCC,D0,GND
D0需要连接到树莓派的GPIO7


使用串口扩展版就简单一点
直接将DS18B20一共三个管脚:VCC,D0,GND 分别连接到串口扩展版D7这一组就行了




4.读取温度
root登录,输入
root@raspberrypi:~# modprobe w1-gpio
然后输入
root@raspberrypi:~# ls /sys/bus/w1/devices/w1\ bus\ master

可以看到以下信息,其中“28-000003e08db6”就是温度传感器


最后读取温度,输入
root@raspberrypi:~# cat /sys/bus/w1/devices/w1\ bus\ master /28-*/w1_slave
得到log信息如下:


其中t=25375,t除以100就温度值25.375摄氏度

树老大 发表于 2012-8-9 09:10:09

技术贴顶起来了。

ukonline2000 发表于 2012-8-9 09:12:51

沙发被抢了

focusheart 发表于 2012-8-9 09:19:30

哇,赞美技术贴~这个挺好的呀

felixlian 发表于 2012-8-25 16:52:53

好东西,帮顶!分享个自己写的读取温度小程序。
import os
import re

class ds18b20:
    path = "/sys/bus/w1/devices/"
    def __init__(self):
      pattern = re.compile(r'''
                (^\\d{2}) #
                (-)
                ''',re.VERBOSE)
      lines = os.popen("ls "+ self.path).readlines()
      for line in lines:
            l = pattern.search(line)
            if not l is None:
                self.path = '%s%s/%s' % (self.path,l.string[:-1],"w1_slave")
    def get_temperature(self):
      lines = os.popen("cat "+ self.path).readlines()
      pattern    = re.compile(r'''
                (t=\\d{5})
                ''',re.VERBOSE)
      for line in lines:
            l = pattern.search(line)
            if not l is None:
                vaule = line
                return float(vaule)/1000
      return None
if __name__ == "__main__":
    ds = ds18b20()
    print ds.get_temperature()

topzdx 发表于 2012-9-24 23:04:56

好贴子要多顶

lionberry 发表于 2012-10-29 21:12:27

好贴子要多顶

zhu327 发表于 2013-1-3 13:52:34

装了这个驱动之后,好像cat /sys/class/thermal/thermal_zone0/temp查CPU温度就不管用了啊

依山居 发表于 2013-1-3 14:37:42

其中t=25375,t除以100就温度值25.375摄氏度

应该除以一千吧。

hijhon 发表于 2013-1-14 22:20:46

利用这个实例,是否可以diy环境噪音实时监测,然后把数据上传到Yeelink网站?
页: [1] 2
查看完整版本: 在树莓派上使用1wire器件DS18B20(温度传感器)读取温度!!!!