树莓派利用DS18B20获取当前环境温度

树莓派使用DS18B20获取当前的环境温度。

需要材料如下

树莓派一个、杜邦线若根、DS18B20温度传感器、面包板、4.7K电阻一个

电路如如下

DS18B20树莓派

DS18B20的接线还是比较简单的。DS18B20把扁的一面,面向自己,从左到右的接口分别是GND、数据、正极。

需要注意的是数据接口和正极直接需要放在4.7k的电阻。接好后的图如下。

20141206134347

下面是使用命令获取温度,首先登录ssh界面,执行下面的命令

[bash]
apt-get update
apt-get upgrade
sudo modprobe w1-gpio
sudo modprobe w1-therm
cd /sys/bus/w1/devices/
ls
[/bash]

显示如下

20141206135735

其中28-000006735885文件夹表示的是设备号,即传感器号码。(Linux下一切皆文件,设备也是使用文件表示的)每个设备终端号码都不相同。

好,既然获取到了设备剩下来的就是获取该设备的信息了。

我们进入该设备文件夹

[bash]
cd 28-000006735885
[/bash]

20141206140343

发现一个w1_slave文件,该文件就是存放温度数据的文件

我们读取它

[bash]
cat w1_slave
[/bash]

20141206140359其中t=12812就是温度,我们需要除以1000 即当前的温度为12.812度。

我们可以扩展下该功能,5分钟执行一次解析出文件中当前的温度,输出到LCD面板上。

附一段Python,来直接获取温度,即把上面的显示温度格式化显示

[bash]
vim getTemperature.py
[/bash]

粘贴下面的代码到文件中,需要注意本人使用的高亮插件,直接复制可能会有报错,注意的全角和半角的文件,略微修改下即可。

TemperatureFile = open('/sys/bus/w1/devices/28-000006735885/w1_slave')
Temperaturetext = TemperatureFile.read()
TemperatureFile.close()
secondline = Temperaturetext.split("\n")[1]
temperaturedata = secondline.split(" ")[9]
temperature = float(temperaturedata[2:])
temperature = temperature / 1000
print temperature

将上面的/sys/bus/w1/devices/28-000006735885/w1_slave替换为自己的设备温度文件地址

执行方法,python getTemperature.py

20141206150748

此条目发表在树莓派分类目录,贴了, 标签。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。 必填项已用*标注