raspberry pi
即使在晚上,香港也可能是高温高湿,许多人使用空调使自己的房屋更舒适。 当我的大儿子还是婴儿时,他卧室中的空调装置具有手动控制功能,没有恒温器功能。 它要么打开,要么关闭,让它连续运行一整夜会导致房间变冷,并浪费能源和金钱。
我决定使用基于Raspberry Pi 的物联网解决方案解决此问题。 后来,我有了一个婴儿监视器附加组件,使它更进一步。 在本文中,我将解释如何做到这一点,并且代码可以在我的GitHub页面上找到 。
设置空调控制器
我使用Orvibo S20 WiFi连接的智能插头和智能手机应用程序解决了问题的第一部分。 尽管这使我可以远程控制空调单元,但这仍然是一个手动过程,我想尝试使其自动化。 我发现了一个有关Instructables的项目,该项目似乎符合我的要求:它使用Raspberry Pi测量AM2302传感器的本地温度和湿度读数,并将其记录到MySQL数据库中。
通过将压接端子触点与压接外壳配合使用,可以将温度/湿度传感器连接到Raspberry Pi的正确GPIO引脚上。 幸运的是,AM2302传感器具有用于获取读数的开源软件 ,并带有有用的Python示例。
自从我将项目放在一起以来,用于AM2302传感器接口的软件已更新,现在使用的原始代码现在被认为是旧版且无需维护。 该代码由一个连接到传感器的小二进制对象和一些Python脚本组成,以解释读数并返回正确的值。
Raspberry Pi,传感器和Python代码用于构建温度/湿度监视器。
通过将传感器连接到Raspberry Pi,Python代码可以正确返回温度和湿度读数。 将Python连接到MySQL数据库很简单,并且有很多使用python- mysql绑定的代码示例。 因为我需要连续监控温度和湿度,所以我编写了软件来做到这一点。
实际上,我最终得到了两种解决方案,一种将作为一个过程连续运行并定期轮询传感器(通常以一分钟为间隔),另一种则运行一次并退出。 我决定将运行一次退出方法与cron结合使用,每分钟调用一次此脚本。 主要原因是连续(循环)脚本偶尔不会返回读数,这可能会导致尝试读取传感器的进程堆积,最终由于缺少可用资源而导致系统挂起。
我还找到了一个方便的Perl脚本,以编程方式控制我的智能插件。 这是拼图中不可或缺的一部分,因为这意味着如果满足某些温度和/或湿度条件,我可以触发Perl脚本。 经过一些测试,我决定创建一个单独的checking脚本,该脚本将从MySQL数据库中获取最新值,并根据返回的值来打开或关闭智能插件。 将运行插头控制脚本的逻辑与读取传感器的脚本分开的逻辑还意味着,即使读取传感器的脚本出现问题,它也可以独立运行并继续运行。
使空调的开/关温度可配置是合理的,因此我将这些值移到了控制脚本读取的配置文件中。 我还发现,尽管传感器通常是准确的,但偶尔也会返回错误的读数。 修改了传感器脚本,以不将与以前的值明显不同的温度或湿度值写入MySQL数据库。 同样,在常规配置文件中设置了连续读数之间允许的温度或湿度变化,并且如果读数超出了这些限制,则这些值将不会提交给数据库。
尽管制作恒温器似乎花费了很多精力,但将数据记录到MySQL数据库意味着它可用于进一步分析以识别使用模式。 有许多图形选项可用于显示MySQL数据库中的数据,因此我决定使用Google Chart在网页上显示数据。
前六个小时测得的温度和湿度。
添加一个婴儿监视器相机
我需要一台在黑暗中工作的相机,而Pi Noir相机模块非常适合此功能。 Pi Noir与Raspberry Pi的常规相机模块相同,不同之处在于它没有红外线(IR)滤镜。 这意味着白天的图像可能会略带紫色,但是会在黑暗中显示红外光照明的图像。
现在我需要一个红外光源。 由于Pi的受欢迎程度和较低的入门门槛,因此有大量的外设和附件。 在众多可用的IR光源中,引起我注意的一个是Bright Pi 。 它从Raspberry Pi汲取能量,并安装在相机Pi模块周围,以提供IR和普通光源。 唯一的缺点是我需要清除生锈的焊接技巧。
它可能花费了我比大多数人更长的时间,但是我的焊接技能才得以实现,而且我能够成功地将所有IR LED固定到外壳上,并将IR光源连接到Pi的GPIO引脚。 这也意味着Pi可以通过程序控制IR LED的点亮时间及其光强度。
通过网络流公开视频捕获也是有意义的,因此我可以从网页上查看温度和湿度读数表。 经过进一步研究,我选择使用使用M-JPEG捕获的流软件 。 通过网页公开JPG源也使我能够连接智能手机上的Camera Viewer应用程序,并在那里查看相机输出。
画龙点睛
如果没有为Pi及其各种组件选择合适的外壳,那么Raspberry Pi项目就无法完成。 经过大量搜索和比较,有一个明显的赢家 :SmartPi的Lego风格外壳。 与Lego的兼容性使我能够为温度/湿度传感器和摄像机构建支架。 这是最终结果:
从那时起,我对设置进行了其他更改和更新:
- 我从Raspberry Pi 2 Model B升级到Raspberry Pi 3 ,这意味着我可以取消USB WiFi模块。
- 我用TP-Link HS110智能插头替换了Orvibo S20。
- 我还将Pi插入智能插头,以便可以进行远程重启/重置。
- 我从Raspberry Pi迁移了MySQL数据库,它现在在NAS设备上的容器中运行。
- 我添加了一个灵活的三脚架,以实现最佳的摄像机角度。
- 我重新编译了USB WiFi模块以禁用板载闪烁的LED,这是升级到Raspberry Pi 3的主要优点之一。
- 从那以后,我为第二个孩子制造了另一台显示器。
- 由于时间紧迫,我为第三个孩子购买了定制的夜视摄像机。
想了解更多? 所有代码都可以在我的GitHub页面上找到 。
您有一个要共享的Raspberry Pi项目吗? 将您的故事想法发送给我们 。
翻译自: https://opensource.com/article/18/3/build-baby-monitor-raspberry-pi
raspberry pi