1. 引言
互联网已经成为世界各国着重发展的重要产业,并已成为衡量一个国家综合国力发展的标志。物联网作为其衍生产业,也得到了迅猛的发展。物联网中最具代表性的产业便是智能家居 [1] [2] [3] [4] ,本文所设计的基于WIFI的智能手机遥控灯光系统即智能家居中的一部分。
本文重点研究内容为ESP8266 WIFI模块的通信及STC15L204EA单片机控制功能的实现过程,以及智能手机上的APP应用开发。硬件电路主要由四个部分组成:WIFI无线模块ESP8266、STC15L204EA单片机、继电器、实体开关。最后,应用易安卓开发环境实现可视化的操作界面与相应程序功能,完成手机客户端APP的开发。
2. 系统通信端的设计
系统终端和手机客户端之间的通信是由手机客户端安装的APP和串口WIFI模块ESP8266实现的,具体实现过程如图1所示。

Figure 1. Communication system structure
图1. 通信系统结构
整个通信过程由以下两个部分组成:无线WIFI网络,它是用来实现手机客户端和系统控制终端之间的通信,整个网络由串口WIFI模块发起;异步串口通信,用来实现串口WIFI模块与STC单片机之间的数据有效传递,该过程是通过ESP8266自带的串口和STC15L204EA单片机编程实现的模拟串口来实现的。
串口WIFI模块ESP8266的集成度非常高,运行是完全靠自身功能来实现的,并且提供了完整的WIFI网络独立运行模式,同样也可以当做slave为其他的Host服务 [5] [6] ,具体结构如图2所示。
WIFI模块ESP8266串口的工作模式有两种,数据透传和AT指令,在对模块进行控制实现通信过程中主要是使用这两种模式。数据透传模式的实现过程是当WIFI模块接收到手机客户端发送的数据后,直接将数据复制到ESP8266的外部内存缓存区中。当数据接收工作结束时,缓冲区中的数据被复制到UART串口缓存区中以便触发串口来发送中断。而中断指令的函数会把接收到的数据发送到控制系统以便实行整体控制。其流程如图3所示。AT指令模式是专门用来实现对模块参数配置,AT指令的接收过程和数据透传模式时接收数据的过程是相同的。

Figure 3. Data transparent mode flow chart
图3. 数据透传模式流程图
3. 系统控制端的设计
系统控制端的功能实现是通过STC15L204EA单片机来完成的,系统硬件框架如图4所示。首先,STC单片机将接收到ESP8266WIFI模块通过串口转发过来的具体指令信息,然后对指令内容进行具体的解析。若符合控指命令则单片机将会输出相应的控制电平控制继电器的通断从而实现控制灯光开关的功能。

Figure 4. Control terminal communication structure
图4. 控制端通信结构
在本系统中,STC15L204EA主要用于串口数据的收和发并同时对从WIFI模块接收到的具体指令信息进行相应的处理,即解析数据中的相应指令并生成输出相应的控制信号。STC15L204EA实现系统控制的软件流程大致为以下如几个过程:发送WFI模块初始化指令;接收数据;解析数据并输出相应的控制;控制灯光、继电器、完成延时关闭功能。具体程序执行结构如图5所示:

Figure 5. Microcontroller program structure
图5. 单片机程序结构
STC单片机在本设计中有三个功能:发送初始化指令给WIFI模块、接收并解析指令数据、控制信号的产生。其中第三个功能控制信号的产生最关键的就是控制逻辑的设计。在本设计中不仅可以通过手机遥控灯具和插座的开关,还可以通过实体按键来同时实现开关的操作。要想实现手机与实体按键同时控制开关操作,具体为手机端使用开关控制逻辑,实体按键采用取反逻辑。将实体按键设置在STC单片机的I/O口处,编写程序判断按键是否被按压,被按压则进行开关指令的取反。实现了实体按键的软件取反操作。
4. 智能手机端应用程序的设计
手机应用程序主要实现可视化的操作界面,通过安卓软件编程实现用户通过手机发送相应的控制指令给系统的控制端。通过易语言来编写程序,开发环境为易安卓,该环境是对谷歌simple语言编程工具的一个国有化编程环境 [7] [8] ,利用Basic语法对安卓应用程序进行编写。
设计的应用程序有三个模块:引导界面、控制主界面、延时关闭服务。其中主界面是应用程序的主要功能模块,界面的结构如图6所示。

Figure 6. Control main interface design
图6. 控制主界面设计
设计完界面后,还需要编写按键事件的程序,其界面上不同按键被单机所实现的功能各不相同,程序事件可分为TCP连接事件的改变过程与按键开关控制改变过程,其中TCP连接事件负责发送连接指令并连接模块显示连接状态。
延时关闭程序采用在手机软件端用易语言编程实现,由于在编程时于主线程中添加延时程序便会导致在整个延时期间主线程界面无法响应任何操作。所以加入了后台服务程序,在服务中进行延时操作,然后利用广播将灯光关闭信息返回到主线程中实现延时关闭操作。延时服务与主线程中的广播具体易语言程序如图7所示。
5. 系统功能实现结果
系统终端实物如图8所示,整个终端由恒压电源模块、接收及控制电路板、继电器模块三个部分组成。其中,接收及控制模块是终端的核心,完成数据的收发解析及控制电平的产生。电源方面则有AC-DC 5 V恒压源和DC-DC 3.3 V稳压模块组成。5 V电源用于给单片机、继电器供电;3.3 V电源则用于给WIFI模块提供电源。经测试,无墙壁阻挡情况下的最远控制距离为100 m,有墙壁阻挡情况下的最远通信距离为60 m。

Figure 8. Single lighting control state diagram
图8. 单个照明设备控制状态图
图9为多个照明设备的控制结果,对于用户来说,智能照明系统光有单个灯光的控制是不能满足实用要求的,因此验证了两个电灯的情况。

Figure 9. Multiple lighting control state diagrams
图9. 多个照明设备控制状态图
6. 结论
本文设计的基于WIFI的智能手机遥控灯光系统是智能家居系统的一个典型案例,通过WIFI模块所创建的一个小型的局域网络,利用手机客户端及控制端设备同时加入到该局域网中实现数据的互传与控制功能。并最终实现了通过手机客户端对家庭内部的多盏照明设备以及插座进行无线管理控制,并且能够实现定时关闭功能。
NOTES
*第一作者。