树莓派+18B20做多点温度监测

作者: PokeBox
上传时间为: 2014-11-30 04:57 PM
2014-11-30
阅读:

18B20是个温度传感器,它采用独特的单线接口方式,在与微处理器连接时仅需要一条口线即可实现双向通讯。并且因为每个传感器都有独有的编号,所以可以多个传感器在一条总线上实现多点通讯。那下面我就来教大家如何利用多个18B20和树莓派连接实现多点温度监控。

首先我们把18B20和树莓派连接。树莓派的GPIO4是W1设备的接口,所以我们需要把18B20的数据脚接到GPIO4上。GPIO4是GPIO的第7个插针。

然后VCC和3.3V连接,GND和GND连接。之后要记得在数据脚和VCC之间连接个1K~10K的上拉电阻【建议4.7K】,不然读取数据会不正常。多个18B20也是这样连接。

然后我们需要加载2个驱动。

sudo modprobe w1-gpio sudo modprobe w1-therm

w1-gpio是单总线的IO操作方法,用于模拟单总线时序;w1_therm是DS18B20的内部操作方法(读写寄存器),和IO时序无关;

我们可以将驱动结构看成是将“w1_therm”挂接到“w1-gpio”总线上,由w1-gpio控制w1_therm工作。

成功加载驱动后我们可以在/sys/bus/w1/devices/看到连接的设备信息

cd /sys/bus/w1/devices/

ls

如果正确连接了设备和加载了驱动的话可以看到类似下面的信息:

28-00000812ac12    28-00000581ea9e    w1_bus_master1

那个28-0000开头的就是18B20的设备号。这个设备号是固定唯一的,所以你看到的你的设备号也会和我的不一样~

然后你可以先连接一个18B20看看设备号,这样就知道哪个设备号是哪个18B20的了。然后把18B20分别放在不同的地方,你就可以监测不同地点的温度。

读取温度的方法如下:

设备号的文件夹里面有个w1_slave文件,那个就是设备信息,用cat去读取它可以看到图里那些内容。

其中,t=25500就是温度信息,也就是25.5摄氏度。

连接了多个设备后你可以使用通配符来同时获取所有的温度传感器信息,

cat /sys/bus/w1/devices/28*/w1_slave

不过这样你可能分辨不出哪个温度是哪个传感器的……

所以,建议使用分别读取的方式来进行读取。当然你可以用& 或|符号来把2个命令连接起来同时运行。

全部评论 ()
条评论
写评论

创建讨论帖子

登录 后参与评论
系统提示