哈!朋友们,欢迎来到LIUSE网络。 今天这篇文章我们来讨论一下关于自动化控制的一些小问题,目的是通过树莓派做一个实时监控室内温度,并将温度值在一定时间自动推送给你的QQ邮箱,达到实时监控的目的。
注:这节课我们分两篇文章来讲解,上篇为监控实时温度,下篇为进行邮件发送,请大家时刻关注。 所需原料:
注:没有DS18B20模块的可以自己从带温度传感器的电器中拆一个,再加一个4.7K的电阻也可以达到同样的效果。 硬件连接:整体连接: 将DS18B20模块的VCC连接树莓派的1号口3.3V,将GND连接树莓派的6号口GND,DQ或者OUT连接树莓派的7号口GPIO4.如果你的不是模块,自己焊接电阻的方法跟下图一样即可。 (整体连接图) DS18B20与电阻的连接电路: (DS18B20与电阻图) 树莓派管脚对照参考图: (引脚图) 接线完成后,现在还不能开始工作,我们要通过简单的代码来实现功能。 代码部分:1.确保你的树莓派长期使用并更新,如果版本过于老,可能会对接下来的操作有影响。所以先升级系统:
2.修改配置文件。官方15年后的树莓派版本,为了解决GPIO冲突,使用了新的DT策略,我们需要修改config文件添加树莓派Device Tree设备。
然后在最后一行计入下面的代码Ctrl+x保存退出。
注:如果的你的DS18B20连接的管脚不是4号口,那你必须要改为对应口号。 3.确认设备是否运行:
进入devices目录后,ls列目录,会显示出设备的文件夹(正对应序列号)。 当然,不同的设备,设备号不同这个不需要纠结,操作起来是一样的。 4.查看当前温度: 有了设备号之后(也就是那个文件夹名字),我们需要进入用cat命令查看一下w1_slave的温度值。
命令执行后,显示温度值:
上面的23000就是当前的温度值,不过是浮点型的所以我们要除以1000来换算成摄氏度: 23000/1000=23° 即当前温度为23度。 5.通过python脚本获取温度值: 我们通过上面的手工操作可以简单的看出,要想获取温度
对于找到温度值t=23000我们可以通过正则表达式来获取,也可以通过分割字符串来提取,我们先介绍一下通过正则表达式提取的python代码: (源码) 我们可以看到上图已经注释的十分详细了,再不懂的就看下面的注吧。
运行状态: 我们再稍加修改,变得人性化一点: 最后的num4变量成功的打印出了23度数值。 然后再简单的说一下方法2,通过分割字符串方式来获取值: (方法2代码) 虽然上面的方法同样可以打印出实际温度,但鄙人不是十分喜欢,还是推荐第一种。 那今天的文章就写到这,我们明天写一下如何让树莓派通过python将实时温度通过邮件的方式发到我们的邮箱~ 喜欢的同学记得关注哦~ |
|