陆飞歌
很多人都希望当自己不在家的时候,能有一个小助手帮忙打理阳台:自动浇花、自动开关窗户、自动晾收衣服以及安防报警等。可现在市场上并没有完善的、高集成度的阳台管理解决方案,若使用多种设备管理阳台,易出现操作烦琐的弊端。因此,我希望能研究出一套智能阳台管理解决方案,让人们可以乐享生活。这就是智能阳台管家制作的初衷。
在设计阶段,我只在系统上设置了智能浇花和智能开关灯功能,但在查阅资料的过程中我发现,同时具备这两类功能的产品已经有很多了,同质化严重,所以我打算在功能方面进行创新,打造一个真正的多功能阳台小管家。
我列举出人们在阳台上普遍需要完成的事和人们出差旅行在外时希望机器完成的事,如防盗、开关窗、开关灯等。这些功能的实现均不需要大型设备或结构,于是我决定将这几个功能整合在一个装置内。
如何实现通讯是智能阳台管家面临的首要问题。这个系统要实现可远程控制的功能,就需要装备合适的通讯模块。经过测试,传统的蓝牙通讯方式或红外传输方案支持的距离十分有限,无法实现远距离控制系统的需求,且连接很不稳定,容易出现数据丢失的情况,不符合项目的要求,所以我决定使用ESP8266模块作为智能阳台管家的通讯芯片,并通过WLAN联网与云端交换数据。然而在后来的实践过程中,我发现ESP8266模块性能不足,导致连接Wi-Fi速度过慢,数据交换时间长;此外,ESP8266模块的IO口数量较少,无法连接阳台管家,且闪存空间太小,无法刷入大型固件,需要使用大量的传感器和执行器。这些问题增大了项目的制作难度。于是我改用性能更为强大的ESP32开发板,它有更多管脚和高达240MHz的核心主频,完美弥补了ESP8266模块的缺陷。
如何进行人机交互,也就是选择怎样的操作平台对硬件进行控制,是智能阳台管家面临的第二个问题。我的原计划是将项目接入blinker平台,通过该平台远程操控阳台管家。但是在对目标用户的调查中我发现,不少用户认为blinker操作麻烦,技术门槛高,对用户不太友好,所以我尝试自建服务器并自己研发app,使用websocket方式和云端通信方式操控阳台管家。
在使用过程中,我又发现一个问题:webscoket方式需使用大量的流量,且易导致主板出现严重发热,十分影响阳台管家的稳定性,于是我换用HTTP请求方法中的 GET请求(即从指定的资源请求数据)来发送数据到云端。开发云端时我在前端使用HTML配合Javascript,便于多端适配和快速迭代更新;后端使用当下流行的php语言建构,ESP32发送的包含数据的HTTP请求将被php程序接收并存入MySQL数据库或写入Json,同时ESP32也可以通过HTTP请求获取云端的参数和指令。这样的架构,让使用者在任何有互联网的地方都能使用智能阳台管家。
项目若想实现用户远程实时查看阳台情况和操控阳台管家的功能,其搭载的开发板就必须能随时向云端发送大量数据,这对智能阳台管家app的运转提出了极高的要求。为此,我抛弃了Python,改使用Arduino Ide,以C++语言开发并编译固件,从而提高阳台管家的性能和稳定性。
通讯和控制方案确定以后,就要开始逐一考虑智能阳台管家的各项功能。首先是智能浇花功能。由于人们在阳台种植的植物品种不一,习性也各不相同,一刀切的定时浇水功能并不实用。于是我为智能阳台管家装备了土壤湿度传感器,用户可在控制面板自定义浇水的土壤湿度阈值和温度阈值,智能阳台管家会通过比对传感器的数据与用户设置的数据,自主判断是否应该给植物浇水,实现精准、个性化的浇水服务。但在测试中效果并不理想,比如一些喜暖植物在寒冬不宜浇水,因此完全根据土壤湿度浇水仍然不够智能。在经过思考后,我又添加了DHT11温湿度传感模块,让智能陽台管家根据当前温度和用户定义的温度判断是否应该给植物浇水,判断为“是”后,主板就启动继电器控制水泵浇水,这样一来,浇水功能被优化得更为智能和人性化。
第二个功能是智能开关窗功能。保持室内空气流通对身体健康十分重要,因此开窗透气是很多人每天必做的事。用户可通过app在云端设置自动开窗的温度阈值和时间,阳台管家通过红外测障传感器判断窗户的开启状况,并在指定的时间开窗或关窗。开关窗的传动结构由L298N直流电机驱动板连接直流电机,配合同步带组成,这样的设计能实现电机的正反转,保证传动结构的稳定,达到开关窗的目的。
第三个功能是智能提醒功能。一场暴雨可能会打湿晾晒在阳台的衣物。为了解决这个问题,我设计了提醒收衣功能。智能阳台管家配备了雨水传感器,当检测到降雨,便会通过蜂鸣器报警,并发送通知到app,提醒用户收衣服,同时关闭窗户防止阳台被打湿。这个功能还设计了免打扰选项,可勾选以避免在夜深人静时打扰用户休息。
第四个功能是智能防盗功能。通过红外热释电传感器,阳台管家能够监测到从阳台进入的人或动物,并通过蜂鸣器报警和发送通知到app,提醒用户阳台有异常情况。
最后一个功能是智能开关灯功能。不同于传统智能灯具中的“光敏—灯泡”或“光敏—声敏—灯泡”的设计,阳台管家可以通过IP地址或自定义的经纬度来计算当地的日出日落时间,并据此进行开关灯操作。此外,用户还可以通过app自行设定开关灯的时间或者手动开关灯。
完成了智能阳台管家的主体功能和服务端搭建后,接下来要开发手机app。App聚合了阳台管家各项功能的设置,用户还可在其上查看阳台管家的日志和警示记录。这个app同样以前端作为基础进行封装,体积小,且能够更新升级,降低用户的使用成本。
在功能的实现完成后,我将各传感器和执行器重新按顺序连接到ESP32开发板上,并使用雪弗板制作了主机的外壳。但因为板载设备太多,供电十分不稳定,所以我又重新焊接了自定义的扩展板,将直流电源的供电口拉出两条线,其中一条专门为电机、水泵等功率大的设备单独供电,解决了电流问题。最后我用木条、亚克力板等制作了一个模拟阳台,将开关窗的同步带驱动结构安装好,将阳台管家放置在模拟阳台上进行测试。测试结果显示,各功能运行正常,符合预期目标。
(本作品获桂林市第一届创客马拉松最佳技术奖、第五届“互联网+”青少年创新创业大赛全国入围奖、2021年桂林市青少年科技创新大赛一等奖、2021年宋庆龄少年儿童发明奖广西一等奖 指导老师:李玉华、黄义强、马玉桥、毛瑞华)