最近突然想起N久之前买的温度传感器了,就想把它接到树莓派上。结果搜索了一下,发现已经有很多大牛搞定了这个事情。这里就简单的转载一篇文章吧(有删改)
【 http://www.2fz1.com/?p=370 】
CONTENTS
【智能家居】树莓派+DS18B20温度传感器+Yeelink实现家庭室内温度监控(python)
实现家庭室内温度远程监控只是“智能家居”的初步,目的是下班前如果发现家里温度过高,可提前用手机发送指令提前5-10分钟打开空调降温。
一、硬件准备
1、树莓派(Raspberry Pi)一个
2、DS18B20温度传感器一个(淘宝大概5元左右)
3、4.7kΩ电阻一个 或 DS18B20模块一个(笔者用,淘宝1.5元一个,其实就是店家帮忙把电阻焊好了,接线稍好看些)。
4、杜邦线三根(双头母)
二、接线方式(如图所示)
三、确认硬件接线是否正确并生效,并读取温度
1、首先升级内核(可忽略,但如果版本较老,可能影响设备读取)
sudo apt-get update sudo apt-get upgrade
2、确认设备是否生效
sudo modprobe w1-gpio sudo modprobe w1-therm cd /sys/bus/w1/devices/ ls
显示结果:
pi@raspberrypi:~$ cd /sys/bus/w1/devices/ pi@raspberrypi:/sys/bus/w1/devices$ ls 28-00000494cb79 w1_bus_master1
28-00000494cb79就是笔者外接的温度传感器设备,但并不是每个客户端都显示一样的,这个是传感器的序列号。
3、查看当前温度
cd 28-00000494cb79 cat w1_slave
显示结果:
70 01 4b 46 7f ff 10 10 e1 : crc=e1 YES 70 01 4b 46 7f ff 10 10 e1 t=23000
第二行的t=23000就是当前的温度值,要换算成摄氏度,除以1000,即当前温度为23000/1000=23摄氏度。
四、用python读取温度值
文件存放:/home/pi/temperature.py
内容如下:
#/home/pi/temperature.py #打开温度传感器文件 tfile=open("/sys/bus/w1/devices/28-00000494cb79/w1_slave") #读取文件所有内容 text=tfile.read() #关闭文件 tfile.close() #用换行符分割字符串成数组,并取第二行 secondline=text.split("\n")[1] #用空格分割字符串成数组,并取最后一个,即t=23000 temperaturedata=secondline.split(" ")[9] #取t=后面的数值,并转换为浮点型 temperature=float(temperaturedata[2:]) #转换单位为摄氏度 temperature=temperature/1000 #打印值 printtemperature
在命令行运行,即可得出结果数值:
python /home/pi/temperature.py
五、上报到yeelink
略
===========================
其他参考链接:
【 http://www.raspberrypi.org/forum/viewtopic.php?f=37&t=40044 】
【 http://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/temperature/#step-appendix-three 】
发表评论