树莓派连接DS18B20记录温度

  • 内容
  • ....
  • 相关

最近尝试用DS18B20通过连接树莓派来记录温度。DS18B20是一种温度传感器,它很便宜,而且精确度也很高(±0.5°C),即使使用多个传感器时,也只需要占用树莓派的1个针脚来完成数据传输。

ds18b20

DS18B20温度传感器接口定义

DS18B20温度传感器
如上图所示,DS18B20温度传感器有三个阵脚,

  • 1脚Ground
  • 2脚Data
  • 3脚3.3v or 5v

从DS18B20的datasheet可以看出,我们需要在引脚2和3之间跨接4.7 k的电阻.
DS18B20 datasheet

树莓派读取DS18B20温度传感器数据

Rasbian系统内建在GPIO 4 针脚支持单总线协议(1-wire),这就是我们需要连接DS18B20的针脚。参照下面的电路图把所有的零件连接起来,将DS18B20的1号引脚连接到树莓派的GND,并在DS18B20的2号和3号针脚间跨接一个4.7 k电阻,将DS18B20的3号引脚与树莓派的3.3V连接,然后将DS18B20的2号引脚连接到树莓派的GPIO 4。
DS18B20与树莓派的连接图
访问传感器之前,需要试用一下命令加载两个模块:

    sudo modprobe w1-gpio
    sudo modprobe w1-therm 

上面的命令运行后,,看起来什么都没有发生,这是你可以输入以下命令来查看传感器:

ls /sys/bus/w1/devices

这是在我的机器上运行后得到的输出,传感器是由“28”开头的字符串显示的,后面的数字对每个设备都是不同的(这是唯一的地址),所以您看到的也会和我的不一样。

28-000004e53685  w1_bus_master1

要读取传感器的数据使用下面的命令:(需要将XXXXXXX替换您的设备编号)

cat /sys/bus/w1/devices/28-xxxxxxxxxxxx/w1_slave

输出结果中,如果第一行以“YES”结尾,那么温度是可用的,温度的值将在第二行显示,如下:

a6 01 4b 46 7f ff 0a 10 f6 : crc=f6 YES
a6 01 4b 46 7f ff 0a 10 f6 t=26375

得到温度的值后,我们需要换算为摄氏度,可以用2637/1000=26.375c。,也就是将读取的温度值除以1000得到摄氏温度值。至此通过树莓派读取DS18B20温度传感器的值成功。