感谢海爷支援了一个三无的不锈钢防水温控探头,剥线后发现红黑橙三根线。首先我以我的RP赌它是18B20的探头,其次,继续赌红线是Vcc,黑线接地,橙线是数据线。电路图就懒得画了,搜“18B20”可以搜出来一堆。需要说明的是我的实验中4.7K的上拉电阻还是用上的。(图中的棕线连接了探头的橙线)
树莓派用到了1,6,7三个pin(物理编号,即3.3V,地,GPIO7)。红线接pin 1,黑线接pin 6,橙线接pin 7,上拉电阻直连1和7。
树莓派里要sudo raspi-config,启用I2C(在高级选项里)。
### 2017-02-08 修改###
### 在Pixel里是Interfacing Options###
然后修改/boot/config.txt,确认dtparam=i2c_arm=on没有被注释掉。
加一句:dtoverlay=w1-gpio-pullup,gpiopin=4
这里的4就是pin7,应该是采用BCM GPIO的标准。
都好了以后最好重启一下。
起来后用lsmod看一下,有没有类似的信息输出:
w1_gpio 3657 0
wire 25219 2 w1_gpio,w1_therm
我们感兴趣的正是w1_therm。
“在Linux的世界中,一切皆文件”。甚至在读取温控探头获取的温度数据的方式也是如此。
cd /sys/bus/w1/devices
ls
正常情况下能看到一个28开头的目录(每个18B20温控探头都有唯一序列号),cd 这个目录,看到其中有一个文件w1_slave。cat 这个文件,最后的 t=xxxxx就是当前温度值。当然,需要除一下1000。
所以后面有程序需要得到当前温度,本质上就是去读取并解析这个文件即可。