1. 引言
本近年来随着科技的迅速发展,智能家居这个概念逐步被大众接受并熟知,并在市场中逐渐占据重要位置。智能家居是以居住建筑为平台将家居生活有关的设施通过相关技术控制,来创造一种居家日常事务管理与高效的住宅环境的系统。它给人们带来了高效、方便的生活方式的同时,也大大提升了人们日常生活的舒适感和幸福感。对于市面上的智能家居来说,大部分注重了技术层面的创新 [1] [2],而不能很好地从用户的角度出发升产品的使用感。因此,用户不能很好的根据需求自定义智能家具场景,实现智能家居的个性化需求。同时,区别于WEB端的智能家具 [3],移动端的使用更加方便。本文根据相关背景和需求,并考虑到技术、成本等一系列因素,设计了一款基于安卓平台的全屋智能控制系统移动端。
2. 国内外现状分析
目前,智能家居系统技术在国外已基本成熟,超过一半数量的新居民住所中已具备一部分智能型家居系统。近几年,包括美国以及部分欧洲国家在内,智能家居系统研发处于国际领先位置 [4]。近年来,国内也迎来了智能家居的发展高峰,华为等众多高科技企业也推出了各类全屋智能的解决方案 [5]。
如今,在各类国际博览会照明展会或是照明类产品展会中,众多企业发布了智能家具产品,其中智能照明产品占很大一部分的比重,智能灯具出现的频率与往年相比有了极大的提升 [6] [7],科技含量也明显进步。近年来,很多公共设施,如地铁照明技术 [7] 等智能照明产品的技术优点开始逐渐被人们意识到。高效节能和便捷安全成为了人们关注的重点。目前,智能照明仅在商务领域和公共设施领域的应用较多,这说明我国智能照明还尚未形成成熟的市场。随着我国智能照明领域研发产品的大力推广和相关技术的逐步发展,在不久的将来,智能照明应用有望得以普及。
我国倡导半导体照明开发中的创新,举个例子来说,LED封装技术的开发不仅极大提升了照明设备的发光效率,并且促进了节能减排 [8] [9]。二次光学技术、防静电技术等一系列创新技术的应用到了产品中,例如汽车车灯、矿灯等半导体照明产品,数量超过一百四十多种。半导体照明应用前景在液晶显示屏上展现了良好的发展趋势。具体来说,通过LED灯管的使用,显示器的图像更加清晰,也符合节能减排的理念。另外,在汽车行业,LED汽车灯也具有良好的应用前景。相比于传统灯具,LED汽车灯亮度更高,所以提高了车辆行驶的安全性,减少了事故发生。现在,LED已经发展为普通日常照明,人们对LED的使用习以为常。
在展开绿色照明工程的同时,加入智能照明系统显得尤为重要,这可以为住所营建更良好的照明环境。随着智能家居理念的逐步推广,智能照明系统是最先收到人们关注的领域。我国绿色照明工程逐渐兴起,通过开发高效照明产品,能够使节能效率大大提升。
基于物联网的智能家居系统已经在我国很多高档小区安装启动,在不远的将来,智能家居系统的应用将越来越普遍,深入人心。作为智能家居的一部分,智能照明系统的前景也不容忽视。从竞争日益激烈的灯具类市场我们就可以看出,智能照明的概念深入人心,需求也在不断加大。
3. 系统需求分析
3.1. 功能需求分析
本设计的核心目的在于让用户通过手机移动端的操作实现对家电设备的控制。系统设计需包含注册登录界面、管理和创建用户的房间,开关房间的灯以及定时等功能。具体功能描述见表1。

Table 1. Specific function description
表1. 具体功能描述
3.2. 技术需求分析
3.2.1. NodeMCU模块
NodeMCU是一个开源的可以运行脚本的微控制器物联网平台,它使用Lua脚本语言编程,直接支持Wi-Fi链接和GPIO,是最稳定好用的开发板之一。同时,此开发板造价低廉并且带有WIFI (ESP8266)模块,是开发人员选择物联网模块时一个不错的选择。NodeMCU的二次封装包括软件和硬件固件两个部分。在ESP8266的基础上,NodeMCU在硬件部分增加了一些外围的USB串口电路。NodeMCU在软件部分引入了Lua这个轻量化的脚本语言。Lua可以用C语言编写,它的优点是占用内存很小,因为编译后解释器所占空间小。因此,Lua适用于内存有很大局限性的嵌入式系统。另外,NodeMCU还提供交互命令行环境,相比于Arduino的开发时的编程调试环境,方便了开发人员进行相关开发。
3.2.2. Wi-Fi通信模块
智能照明设备以及其他家电设备通过Wi-Fi的方式介入短距离通信局域网。当用户处于居住场所附近时,可打开手机热点并连接移动数据打开AP频段的2.4 GHz频段。物联网是一种在传统互联网基础上发展延续出来的概念。用户端从传统的计算机变成了到了任意物品相互之间,这些物品通过各种数据传感器采集信息,然后再由计算机等设备进行网络信息交换与通讯。为了使网络环境得到保障和可靠性提升,IBM在经过一系列的研究探讨后提出了MQTT协议。
MQTT是一种针对客户端与服务器间发布订阅消息的传输协议,在低带宽和不稳定的网络环境下,仍可以为物联网设备提供可靠的网络传输服务。它的通信开销很小,最小的消息大小短至两字节。并且MQTT协议支持各种常用编程语言并且简单的客户端。MQTT可提供三种不同消息传递等级,从而根据需求选择不同的传递方式,以适应在不稳定情况下网络的传输需求。相比较于HTTP和MQ协议,MQTT有一点不同的特点和优势如表2所示。

Table 2. Comparison of the characteristics of MQTT, MQ and HTTP protocols
表2. MQTT、MQ、HTTP协议特点比较
从表2中,我们可以看出,相对比常见的其他协议,例如HTTP协议和MQ协议,MQTT应用于物联网的短距离传输具有较大优势。首先,MQTT协议开销低,两个字节便可以搞定每消息标题,且和MQ一样使用永久连接,而HTTP则需要为每个新请求消息重新建立连接,这往往会大幅提升协议的开销。MQTT和MQ能够从断开等故障中恢复,无需进一步的代码。但是,HTTP无法自动实现故障恢复,需要客户端重新尝试编码。与此同时,MQTT还具有低功耗、可推送通知、简单可靠等优点。MQTT协议流程示意图如图1。
设计本系统需要掌握安卓平台的开发,拟采用Android studio进行开发,使用的语言为Java语言。在硬件方面采用NodeMCU的V3版本模块与LED灯连接。短距离通信采用了无线技术以及MQTT协议。相比较于其他协议,例如基于TCP/IP之上的HTTP协议,MQTT协议具有低功耗、开放、简单、轻量级以及易于实现的特点,在资源受限的环境中也能得到很好的使用,更适合用于物联网领域的通信,在降低功耗和推送功能开发上具有非常明显的优势。本设计主要目标是完成一个智能照明系统的安卓客户端,让用户可以通过手机上的操作实现家电的控制。本设计可以手动添加住宅房间的载体进行设计。别墅的照明系统可以同时通过物理开关和手机端控制,在手机的应用程序中可以查询当前的灯光设备的开关情况和电量消耗情况。另外,还可以控制空调、电扇等辅助功能的设备的开关以及定时功能。
3.2.3. 系统数据库模块设计
本设计采用的数据库是Bmob第三方服务平台。Bmob是一个可提供实时数据与文件存储功能的快速开发后端的平台。数据存储不仅包括常规应用文本信息的存储,还包括了视频、音频、地理位置和图片等信息。此外数据服务有一些内置的用户系统,还有即时通讯和权限控制等等,方便开发人员实现快速集成。通过获取应用密钥和下载SDK并导入。
创建成功后,数据库界面如图2所示。
User表是用户注册后信息存储的表格,需要记录并保存用户的用户名、密码、ID等数据。其中,密码采用密文在数据库中显示。显示具体数据字段信息见表3。
RoomType表是用户在根据所需创建房间后,数据库记录储存信息并保存,主要信息有各个房间的类型以及其数量、创建房间的时间等等,具体内容见表4。
用户在使用手机移动端的时候可能会发现一些开发人员忽视的问题,所以增加意见反馈渠道非常重要。因此,我们设计了Feedback表来记录这些信息,从而供开发人员参考,具体内容见表5。
4. 系统功能模块详细设计与实现
4.1. 安卓移动端的设计与实现
本章中的图片为真实程序截图。
4.1.1. 登陆界面设计与实现
由于用户的隐私需求,我们首先设计了登陆界面。在此,我们采用的是单点登录。点击进入App后,首先可以看到一个登录界面,如图3,是一个相对布局的界面。同时还有注册新用户和记住密码的功能。输入相应的用户名密码后,我们可以进入到我的界面,如图4,左上角是一个可以设置的个性化头像,在相册里选择自己想要的图片点击完成,下方会出现一个绿色的提示框显示“更新头像成功”。
4.1.2. 控制界面设计与实现
从我的界面中点击“创建房间”可进入如图界面,用户可根据喜好选择房间的名称和封面图片,并根据需求修改房间数量和类型。然后可进入如图界面。房间的大小和位置可根据实际需求拖拽并保存。程序中使用了Canvas画布和Drawable 绘制组件帮助用户自定义界面。用户根据自己的户型图或者房间大小来设计平面图。在使用过程中,用户不需要通过记忆区分智能家居系统的位置和编号,只需要点击相应的房间进入控制界面进行操作。如图5、图6所示。
创建好之后,我们可以在首页看到自己的房子名称和及其对应图片。同时采用了网格式的布局方法,一目了然的布局使用户方便管理自己的住宅。点击我们需要控制的房子和所在的具体房间,便可以看见电器设备的操作以及定时功能了。点击相应按钮时,若满足相应的网络条件,且指令接受成功,通过mqtt协议,系统会有返回一个消息并显示在屏幕上,用户可以看见“发送命令成功”和相对应的灯及其其他电器的开关操作了。如图7、图8所示。
4.1.3. 监控界面设计
对于单一的开关操作,虽然方便了用户不需要控制实体开关,但仍有一些不足。因此,我们加入了监控界面的功能。在房间中我们可以看见电量统计按钮和显示按钮。为了保证用户的体验,本系统为房间各项数据预留了显示页面,在装上相应的传感器后,可实现这一拓展功能,操作过程与3.2小节类似,这里不进行详细说明。程序界面如图9、图10所示。
4.2. NodeMCU模块的设计
本设计采用的NodeMCU为ESP8266MOD的V3版本,引脚电路图如图11。
为了模拟全屋智能照明,本设计在模块的基础上增加了两个LED灯的连接,连接方式为:
引脚D0~3V:L1
引脚D1~3V:L2
本设计所用模块的实物图如图12。
硬件连接好以后,采用NODEMCU FIRMWARE PROGRAMMER烧录软件,设置固件目录以及ESP8266FLASH信息,如图13和图14。
然后选择串口进行烧录。烧录完成后,用ESPlorer上传写好的lua文件,如图15。
采用mqtt协议,订阅消息接受处理信息,主要Lua核心伪代码如表6所示。
5. 总结
本设计系统工作流程图总结如下,见图16。
总体来说,智能家居在市场中的需求量日益增加。近年来,人们也更倾向于在装修前就考虑到智能家居的设计布置方面。它给人们带来了高效、方便的生活方式的同时,也大大提升了人们日常生活的舒适感和幸福感。智能家居在一定程度上提高了居民们的日常生活质量,促进了社会发展。本设计以智能照明系统为核心,运用局域网无线传输技术,创造一个简单实用、节能便捷的智能家居系统。工作总结如下:
1) 针对私人家庭的家用智能照明设备控制设计全屋智能照明控制系统,在最基本的照明灯具控制的基础上增加了电扇和空调等家电的基本控制。详细设计界面以及功能,分析相关技术要求,通过局域网Wi-Fi实现物联网从而控制设备。
2) 利用android studio编写安卓平台手机移动端,实现简单易操作,便捷高效的智能照明控制系统,并保证系统的可靠性和合理性。
3) 软件与硬件NodeMCU模块和LED灯连接测试,分析相关传输协议后根据需求选择MQTT协议实现局域网短距离通讯,测试结果表明可以进行交互操作,实现控制并收集数据。
4) 运行程序并测试各项功能,让用户可以通过手机上的操作实现家电的控制。例如登录注册是否成功,是否能够按照设计创建房间并生成平面图,LED灯是否能被控制等等。测试结果表明程序基本功能已实现。