基于WiFi的照明控制系统设计与实现
扫描二维码
随时随地手机看文章
引 言
随着网络技术、软件技术、控制技术的发展,智能化应用技术得到了不断进步。智能照明就是一种典型的智能化应用。随着社会需求的不断变化,传统的照明控制方式由于需要使用者近距离操作照明设备开关,给使用者带来诸多不便,因此已无法满足人们日益增长的需求。人们更希望通过现在广泛应用的WiFi无线网络,利用随身携带的手机、平板电脑等移动终端来对家用电灯等照明设备进行开关操作。本文基于这项需求,设计了一款在 WiFi 环境下可使用智能手机等移动终端设备进行开关灯操作的照明控制系统。
1 系统总体设计
本系统的设计主要包含WiFi 局域网接入节点、WiFi 灯光控制节点和移动终端软件设计。其中 WiFi 通信部分由ESP8266 模块实现。ESP8266 采用乐鑫智能互联平台提供的ESP8266 无线WiFi 模块,拥有高性能无线 SOC,使无线平台的开发设计变得实用、方便。ESP8266 为系统提供了一个完整且自成体系的WiFi 网络解决方案,能够独立运行、处理相关指令。作为控制系统的主要芯片,ESP8266 还具有透明传输功能,可通过无线网络接收数据,却不修改数据,直接传送到下一端,使得接收方接到数据内容和长度一致的数据,在传输过程中保证了数据的准确性 [1]。ESP8266 模块可配置成Station( 客户端)、AP( 接入节点)、Station + AP 三种模式, 即ESP8266 模块可作为一个设备(Client)连接区域网内的路由,也可设置成一个路由(Sever),既作为局域网里的 Client 同时又是其他Client 的Sever。系统的总体工作过程如图 1 所示。
(1) WiFi局域网接入节点。接入节点是控制信号进行传输的载体,接入节点使各系统之间建立稳定、良好的信道。本文将一个ESP8266模块设置为AP工作模式,作为局域网的接入节点。
(2) WiFi灯光控制节点。该节点主要由ESP8266模块构成。本文将每一个控制灯的ESP8266模块设置为Station工作模式,用以接受用户的目标指令,并向所控灯传输开、关控制信号。
(3) 移动终端软件。基于 Eclipse软件环境进行Android 应用软件的开发,该软件在用户使用过程中相当于照明灯的遥控器。
2 WiFi接入节点的实现
通过串口调试助手等软件工具向ESP8266 模块发送AT指令,将模块设置为 AP 工作模式。具体分为如下几步:
(1) 发送命令 AT+RST使模块重新启动,等待模块响应 OK后,再进行下一步设置。
(2) 指令AT+CWMODE=<MODE>用 于 设置ESP8266模块的工作模式,其中MODE=1表示Station模式; MODE=2 表示AP模式;MODE=3表示AP兼Station模式。此处,需要发送命令AT+CWMODE=2 将模块设置为AP 模式。等待模块响应OK 之后,再发送命令AT+RST 使得模块重启后设置生效。等待模块再次响 应OK后,模块的AP模式已经开启,然后进行下一步设置。
(3) 指 令 AT+CWSAP=<SSID>,<PWD>,<CHL>,<ECN> 用于设置AP 模式下的参数,其中SSID 为字符串参数, 用于表示接入点的名称;PWD 为字符串参数,用于表示密码, 密码限制在 64 字节以内;CHL 表示通道号,ECN 的取值及功能见表 1 所列。
发送命令 AT+CWSAP= LampControl,123456,11,0,待模块响应 OK 后,就可在手机、平板电脑或计算机中通过无线网卡连接到接入节点,之后再进行下一步设置。
(4) 指令 AT+ CIPMUX=MODE用于启动连接,其中, MODE=0 为单路连接模式;MODE=1为多路连接模式。指令AT+CIPSERVER=MODE,PORT用于设置服务器,其中MODE=0为关闭服务器模式;MODE=1为开启服务器模式, PORT为端口号,缺省值为 333。只有在开启多连接模式时才能开启服务器模式。
发送命令 AT+CIPMUX=1 ,待模块响应 OK后再发送命令 AT+CIPSERVER=1,8080 ,待模块再次响应 OK 后就可通过网络调试助手在 TCP Client 模式下添加 IP: 192.168.4.1(模块默认 IP),端口 8080。至此,WiFi 接入节点已设置成功。
6 WiFi灯控节点的实现
通过串口调试助手等软件工具,向ESP8266 模块发送AT 指令,将模块设置为 Station工作模式。
(1) 发送命令 AT+RST使得模块重新启动,待模块响应 OK之后,进行下一步设置。
(2) 发 送 命令 AT+CWMODE=1, 将 模 块设 置 为Station模式。待模块响应 OK后,再发送命令 AT+RST 使得模块重启后设置生效。当模块再次响应 OK,则模块的Station模式已经开启,可发送命令 AT+CWLAP查看当前可用的网络接入点。
(3) 指令 AT+CWJAP=<SSID>,<PWD> 用于加入网络,其中SSID为要加入的网络名称,PWD为密码。
发送命令AT+CWJAP=LampControl , 123456 连接到网络中。待模块响应OK后,发送命令AT+CIFSR 可查看本机的IP地址,若能查看到IP地址则表示本节点已经正确和AP节点相连。
(4) 发送命令 AT+CIPMUX=1打开多路连接。
(5) 指令 AT+CIPSTART=<ID>,<TYPE>,<ADDR>,<PORT> 用于建立 TCP连接或注册 UDP端口号,其中 ID 为 0~4的连接编号,TYPE为字符串参数,设为 TCP时表示建立 TCP连接, 设为 UDP时表示建立UDP连接, ADDR为字符串参数,表示远程服务器的IP 地址,PORT为远程服务器的端口号。
发送命令 AT+CIPSTART=0, TCP , 192.168.4.1 ,8080 建立灯控节点和接入节点之间的TCP 连接。待响应 OK后则表示连接成功。
(6) 指令 AT+CIPSEND=<ID>,<LENGTH> 用于向指定ID 发送指定长度的数据。模块收到此命令后先换行返回> ,然后开始接收串口数据,当数据长度满足LENGTH 时发送数据,如果数据发送成功则返回 SEND OK 。
发送命令 AT+CIPSEND=0,8 并发送数据 12345678给接入节点。
4 Android移动终端软件设计
使用Android SDK、JDK、ADT、Eclipse 等工具开发手机客户端控制软件[2]。手机客户端控制软件的界面设计主要使用ToggleButton 控件或 RadioButton 控件以方便用户对灯进行开关操作。为控件添加事件响应,当用户操作软件时,将开、关灯的信息发送给WiFi 接入节点 [3]。核心代码如下:
Socket socket = new Socker("192.168.4.1",8080);
OutputStream os = socket.getOutputStream();
os.write("LampOn");
os.close(); socket.close();
5 系统测试
连通灯的控制电源,将灯控节点接入预定的WiFi 网络, 将手机也接入同一WiFi 网络,操作手机中的控制软件,成功实现对灯的开、关操作。
6 结 语
本文设计了一种在 WiFi 环境下,可在装有 Android 系统的移动终端上通过软件操作,实现对灯的开关操作的无线照明控制系统。文中详细介绍了系统设计思路、实现方法,并通过测试证明了系统的有效性。