实验室扔着一个同组给的18B20。。。
然后在实验室还闲的无聊,就像显示个温度玩玩。
结果嘛。。。教程都是比较坑的。。。而且老方法还有些问题。。。
下面是显示结果:
话说今天感觉好凉快的说。。。。
0x00、连接硬件:
硬件基本连接就看下面那张图了。。(从别的地方搬来的233)
我连的样子:
(好难看啊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
此时会显示你的设备编号(如果前面步骤你都做对了的话。。。):
记住这个编号(28-0115a83f87ff),后面还要用到。
然后测试一下温度是否读出来了:
cd 28-0115a83f87ff #按你的编号来 cat w1_slave
显示:
第二行的 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
看,温度是不是出来了啊~
(怎么又比刚才升温了擦)
教(bi)程(ji)完毕~
转载保留版权:晨旭的博客 » 《树莓派读取18b20温度》如果喜欢可以: 点击右侧上方的邮件订阅,订阅本站