晨旭的博客
你想干什么!
晨旭的博客~
树莓派读取18b20温度

实验室扔着一个同组给的18B20。。。

然后在实验室还闲的无聊,就像显示个温度玩玩。

结果嘛。。。教程都是比较坑的。。。而且老方法还有些问题。。。

下面是显示结果:

https://source.papapoi.com/wp-content/plugins/new-ueditor/ueditor/php/upload/44041471594883.png?imageView2/2/w/800|watermark/1/image/aHR0cDovL3NvdXJjZS5wYXBhcG9pLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAxNi8wOC9sb2dvcGljLnBuZw==/dissolve/100/gravity/SouthEast/dx/10/dy/10

话说今天感觉好凉快的说。。。。

0x00、连接硬件:

硬件基本连接就看下面那张图了。。(从别的地方搬来的233)

https://source.papapoi.com/wp-content/plugins/new-ueditor/ueditor/php/upload/25841471594884.png?imageView2/2/w/800|watermark/1/image/aHR0cDovL3NvdXJjZS5wYXBhcG9pLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAxNi8wOC9sb2dvcGljLnBuZw==/dissolve/100/gravity/SouthEast/dx/10/dy/10

我连的样子:

https://source.papapoi.com/wp-content/plugins/new-ueditor/ueditor/php/upload/18261471594884.jpg?imageView2/2/w/600/h/800|watermark/1/image/aHR0cDovL3NvdXJjZS5wYXBhcG9pLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAxNi8wOC9sb2dvcGljLnBuZw==/dissolve/100/gravity/SouthEast/dx/10/dy/10

(好难看啊23333)

0x01、启动必要服务:

网上给的教程就像下面的一样

运行两个命令:

sudo apt-get update
sudo apt-get upgrade

启动服务

sudo modprobe w1-gpio
sudo modprobe w1-therm

测试是否生效

cd /sys/bus/w1/devices/
ls

然后。。。这什么都没显示啊(摔!

后来发现这篇文章:http://blog.csdn.net/vvbbbbb/article/details/52053293

要多加两个步骤:

sudo nano /boot/config.txt

然后在末尾加上一句:

dtoverlay=w1-gpio

按ctrl+o保存,然后ctrl+x退出

重启设备:

sudo reboot

然后开机之后就可以按照之前的语句执行了:

sudo modprobe w1-gpio
sudo modprobe w1-therm
cd /sys/bus/w1/devices/
ls

此时会显示你的设备编号(如果前面步骤你都做对了的话。。。):

https://source.papapoi.com/wp-content/plugins/new-ueditor/ueditor/php/upload/79621471594885.png?imageView2/2/w/800|watermark/1/image/aHR0cDovL3NvdXJjZS5wYXBhcG9pLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAxNi8wOC9sb2dvcGljLnBuZw==/dissolve/100/gravity/SouthEast/dx/10/dy/10

记住这个编号(28-0115a83f87ff),后面还要用到。

然后测试一下温度是否读出来了:

cd 28-0115a83f87ff   #按你的编号来
cat w1_slave

显示:

https://source.papapoi.com/wp-content/plugins/new-ueditor/ueditor/php/upload/11971471594885.png?imageView2/2/w/800|watermark/1/image/aHR0cDovL3NvdXJjZS5wYXBhcG9pLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAxNi8wOC9sb2dvcGljLnBuZw==/dissolve/100/gravity/SouthEast/dx/10/dy/10

第二行的 t=35562 就是当前的温度值,要换算成摄氏度,除以 1000。

0x02、在py里读取温度:

我们回到home:

cd ~

新建t.py:

sudo nano t.py

放入以下代码:

# -*- coding:utf-8 -*-
# 打开温度传感器文件
tfile = open("/sys/bus/w1/devices/28-0115a83f87ff/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
# 打印值
print temperature

按ctrl+o保存,然后ctrl+x退出

然后用命令:

python t.py

看,温度是不是出来了啊~

https://source.papapoi.com/wp-content/plugins/new-ueditor/ueditor/php/upload/20160819/14715949202276.png?imageView2/2/w/800|watermark/1/image/aHR0cDovL3NvdXJjZS5wYXBhcG9pLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAxNi8wOC9sb2dvcGljLnBuZw==/dissolve/100/gravity/SouthEast/dx/10/dy/10

(怎么又比刚才升温了擦)

教(bi)程(ji)完毕~

赞赏
如非特殊说明,本站所有文章均采用知识共享 署名-非商业性使用-相同方式共享4.0国际许可协议(CC BY-NC-SA 4.0)进行许可。

发表评论

textsms
account_circle
email

晨旭的博客~

树莓派读取18b20温度
实验室扔着一个同组给的18B20。。。然后在实验室还闲的无聊,就像显示个温度玩玩。结果嘛。。。教程都是比较坑的。。。而且老方法还有些问题。。。下面是显示结果:话说今天感觉好凉快的…
扫描二维码继续阅读
2016-08-19