树莓派连接DS18B20记录温度
最近尝试用DS18B20通过连接树莓派来记录温度。DS18B20是一种温度传感器,它很便宜,而且精确度也很高(±0.5°C),即使使用多个传感器时,也只需要占用树莓派的1个针脚来完成数据传输。
DS18B20温度传感器接口定义
DS18B20温度传感器
如上图所示,DS18B20温度传感器有三个阵脚,
- 1脚Ground
- 2脚Data
- 3脚3.3v or 5v
从DS18B20的datasheet可以看出,我们需要在引脚2和3之间跨接4.7 k的电阻.
树莓派读取DS18B20温度传感器数据
Rasbian系统内建在GPIO 4 针脚支持单总线协议(1-wire),这就是我们需要连接DS18B20的针脚。参照下面的电路图把所有的零件连接起来,将DS18B20的1号引脚连接到树莓派的GND,并在DS18B20的2号和3号针脚间跨接一个4.7 k电阻,将DS18B20的3号引脚与树莓派的3.3V连接,然后将DS18B20的2号引脚连接到树莓派的GPIO 4。
访问传感器之前,需要试用一下命令加载两个模块:
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温度传感器的值成功。