南京科技职业学院 电气与控制学院 薛 翔 王 琰
随着网络技术的迅猛发展,WIFI技术得到了广泛的应用。WIFI是一种可以将个人电脑、手持设备等终端以无线方式进行互连的技术,为用户提供了无线的宽带互联网访问。本文介绍了如何通过ESP8266芯片和STC单片机实现家用电器开关的无线远程控制,提出了一种基于ESP8266的智能开关控制系统方案,并从硬件和软件两个层面论述了系统方案的可行性。
本系统主要由WIFI模块和MCU模块两部分组成,通过WIFI模块ESP8266将单片机MCU链接上外网,由手机App发送信息WIFI模块接收到信息后,再向MCU发送信号,MCU经过对信息的处理,通过继电器的方式实现家电的通断控制或者灯的开关控制,形成了一个控制通信网络。硬件电路主要有STC89C51芯片、DHT11温湿度传感器采集电路、LCD液晶显示电路、继电器驱动电路、WIFI模块以及稳压电路等组成。系统的总体设计框图如图1所示。WIFI模块收发通讯数据,MCU完成数据的采集和外设的驱动。用户使用手机APP将系统的WIFI模块连接到指定的路由器后,通过UART串口传送和接收MCU的相关指令信息,继电器接负载并通过WIFI控制其通断。
图1 系统总体框图
MCU模块由以STC89C51芯片为核心的最小系统组成,STC89C51芯片在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C51在嵌入式控制应用系统中的得到了广泛应用。本设计使用TXD和RXD引脚实现与WIFI模块的串口通信,其他I/O引脚主要用于连接继电器控制信号、温湿度传感器输出信号以及LCD液晶显示数据及控制等信号。
WIFI模块选择乐鑫公司的基于UART接口的ESP8266-12芯片,该芯片内置32位CPU,能够独立运行,也可以作为从机搭载于其他主机MCU运行,可以广泛应用于智能家居、工业无线控制、无线传感器等领域。
图2 ESP8266-12接口及电源电路
图3 继电器驱动电路
ESP8266模块能够实现用户串口数据到无线网络之间的交换。有2种使用方案:一是直接使用内部自带的处理器,对芯片进行二次开发,通过I/O口控制设备,例如继电器、传感器等,此方案节省成本,但开发难度较大;二是ESP8266模块外接单片机,而其仅用来完成网络相关的任务,使用AT命令操作,通过串口和外接的单片机通信,此方案开发快,性能稳定,但成本相对较高。本文选用第二种方案。
图2为ESP8266-12与单片机串口通信接口及电源电路,TXD和RXD分别接单片机的P3.0和P3.1。ESP8266-12的9和11脚通过1K上拉电阻接3.3V电源。采用AMS1117 稳压芯片将5V电源转换成3.3V直流电压,给WIFI和继电器模块供电。二极管IN4148反向截止起到保护电路的作用。拨动开关S1正常运行时接通TXD接收模块发送的数据,下载程序时用S1断开WIFI模块,以防数据干扰。
控制系统通过继电器的方式实现开关的通断控制。继电器通过PNP型三极管驱动,当阀值超过设定时,单片机会由高电平跳变成低电平,三极管导通继电器吸合,继电器起开关作用,可以驱动负载。图3为单个继电器驱动电路,单片机P2.0引脚输出一个低电平时,PNP型三极管9012导通,电流从+5V电源经线圈再经9012回到GND形成回路,此时继电器线圈得电吸合,与线圈并联的LED灯点亮,2.2K分压电阻保证LED的3V工作电压,二极管用于消除继电器吸合时产生的瞬间反相电动势,接线端子CON2可外接负载电源线,驱动负载的通断相当于一个智能开关。
采用DHT11温湿度传感器用于检测室内温湿度并发送给单片机进行处理和显示,DHT11与STC89C51单片机连接相对简单。如图4所示,DHT11为 4 针单排引脚封装。单片机的P2.7口用来发收串行数据,即data数据口。DATA 用于微处理器与 DHT11之间的通讯和同步,采用单总线串行数据格式,一次通讯时间4ms左右。上拉电阻10K起到信号稳定的作用。传感器的电源端口Pin1和Pin4分别接单片机的VDD和GND端。传感器的第三脚悬浮放置。
图4 DHT11接口电路
图5 LCD接口电路
LCD1602能够同时显示16x02即32个字符,采用LCD1602液晶显示器显示网络连接情况、室内温湿度值以及开关状态等信息,LCD与单片机接口连接如图5所示。1脚接地,2脚接+5v电源,3脚为液晶显示器对比度调整端,通过一个10K电位器调整对比度。4脚RS接P2.7用于寄存器的选择。5脚R/W接P2.6用于读写信号的控制,6脚EN为使能端接P2.5用于液晶模块的使能控制。7~14脚即D0~D7为8位双向数据线接P0口,用于数据的读写。
智能手机APP为网络调试助手安卓版。网络调试助手集成了TCP/UDP客户端服务器,服务器端支持透明传输方式、自动反馈方式和手动发送方式。采用TCP客户端模式,通过配置IP地址和COM端口号实现APP与ESP8266通信。
采用ESP8266实现远程控制基本流程:ESP8266进行初始化,将手机连上ESP8266的WIFI,然后再通过手机端发送指令,ESP8266接收到命令发给单片机,单片机根据执行相应的操作。STC单片机每2秒钟从DHT11温湿度传感器中读入温度和湿度,在液晶屏上显示并通过ESP8266将采集的温湿度数据发送到手机APP显示。控制流程如图6所示。
控制系统软件部分主要分为WIFI配置与通信、温湿度读取、继电器驱动、LCD液晶显示四部分。系统上电后进入初始化阶段读取系统参数,温湿度传感模块启用,APP配网设置后,ESP8266配网成功直连数据服务器,传送相应的控制指令到MCU驱动继电器动作,同时实时回传数据到服务器,APP可以即时查看相关的数据。主程序流程如图7所示。
设置WIFI 的工作模式,ESP8266 支持softAP 模式、station 模式、softAP+station 共存模式三种模式。本文采用SoftAP模式,即无线接入点模式,ESP8266发射一个WIFI热
点将手机或电脑等终端设备接入热点组建一个局域网。STC89C51单片机通过AT指令对ESP8266进行是初始化配置。
配置指令为:
AT+CWMODE=2,设置SoftAP模式。
AT+CWSAP=“NAME”,“password”,设置WIFI名称和密码。
AT+CIPSTART=“TCP”,“ X1.X2.X3.X4”,9999;让模块连上服务器X1.X2.X3.X4 为IP 地址,9999为端口。
AT+CWJAP=“ssid”,“pwd”;连接路由器,在程序中输入路由器名称ssid和密码pwd;此时,WIFI 模块就必须重启,发送指令“AT+RST”给WIFI 模块。
图6 控制流程
图7 主程序流程图
void main() ;//主函数,完成系统初始化,温湿度读取调用和显示,开关的WIFI控制。
void uart_RX(void) interrupt 4;//串口中断处理函数,如果串口接收到数据,执行相应的操作,控制继电器的动作,直到收到下一个数据指令。
void Timer0 (void) interrupt 1 using 0;//定时中断函数,单片机每2秒钟从DHT11温湿度传感器中读入温度和湿度,用于MCU与DHT11的通讯。
void Uart_init( );// 单片机串口初始化函数,波特率9600,设置T0和T1工作方式,允许串口接收数据,开中断,启动定时器。T0用于定时器,T1用于波特率发生器。
uchar DHT11(void);// 温湿度读取子程序,采用单总线数据格式。
void LCDdisplay();// 液晶显示子函数,包括初始化、写指令、写数据、显示字符串和数据等。
本文设计了一种基于ESP8266 WIFI芯片的智能开关系统,以STC单片机为主控制器,从软件和硬件两个层面论述了该方案的可行性。在该系统基础之上,还可以增设家用电器定时开关、灯光的自动调节等其他智能控制功能。通过后期的不断改进和完善,该控制器的功能将更加多样化,市场前景也会更加广阔。