树莓派2代(RaspberryPi2)配合温度传感器DS18B20获取温度

构建这个例子须要下面的零件:spa

一个树莓派23d

一个DS18B20温度传感器blog

一个4.7K欧的电阻it

一些安装线io

固然得先让树莓派可以正常工做file


DS18B20传感器温度监测范围在-55*C ~ 125*C之间,和三极管的大小和外形差很少,一面圆形一面是平的,平的那一面为正面,从正面看左数第一个引脚为1号引脚,float

引脚号|功能im

1            接地d3

2            DQ(数据输入和输出)数据

3            电源(3v~5v,电源是可选的,由于它使用了被称为一线总线的工业标准,数据输入输出引脚同时能够提供电流)    


树莓派2代的引脚有40个:



树莓派关机,按下图,DS18B20的数据引脚链接树莓派的GPIO 4:


链接好后开机,进入 /sys/bus/w1/devices/ 目录:

# cd /sys/bus/w1/devices

# ls


查看是否存在相似28-021553d46eff这样的文件夹,若是不存在,须要运行下面的命令加载一线总线:

# sudo modprobe w1_gpio

# sudo modprobe w1_therm


若是用的最新的raspbian的镜像,需打开/boot/config.txt ,在最后一行手动添加这个:dtoverlay=w1-gpio-pullup,gpiopin=4,保存后重启树莓派


这时进入 /sys/bus/w1/devices/再看看相似28-021553d46eff的文件夹是否出现了,若是仍是没出现,应该检测一下链接线是否都连对了。


若是一切顺利,28-021553d46eff文件夹已经出现了,运行下面命令就能够查看:

# cat 28-021553d46eff/w1_slave

最后一行 t=30289 ,除以1000就是当前的温度了。


写一个脚本便于读数:

# nano temperature.py

内容是:

tfile = open("/sys/bus/w1/devices/28-021553d46eff/w1_slave")
text = tfile.read()
tfile.close()
secondline = text.split("\n")[1]
temperaturedata = secondline.split(" ")[9]
temperature = float(temperaturedata[2:])
temperature = temperature / 1000
print temperature, "*C"

按ctrl+o保存,回车,ctrl+x退出编辑,输入下面命令:

# sudo chmod u+x temperature.py

# sudo ./temperature.py