基于单片机的WiFi家电开关控制系统设计
基于单片机的WiFi家电开关控制系统设计
本文介绍了一种基于51单片机和ESP8266WiFi模块的家电开关控制系统设计。该系统通过手机APP实现对家电的无线遥控,具有成本低、结构简单、性能稳定等特点,适合在中职单片机课程教学中推广使用。
0 引言
单片机课程的学习,设计与实践对学生知识的理解与掌握至关重要,贴切生活的实训项目设计能使学生从被动的接受枯燥的理论知识转到主动的理论探究,可极大地调动学生学习的积极性和主动性,更重要的是学生动手能力、发现问题和解决问题的能力可以得到质的提升。现代社会,人们生活质量不断提高,家庭中的家用电器不断增多,人们对于操控家用电器的便利性也要求越来越高。在物联网概念下,基于单片机与无线通信技术的WiFi无线家电开关控制系统,在居住空间内可通过手机随时随地地开关电器,为人们的生活提供极大的便利。而目前中职的单片机教材中,WiFi技术的内容基本没涉及,为了使学生在学习单片机技术时,激发学生的学习兴趣,初步掌握WiFi技术跟单片机技术的结合,特设计这个基于单片机的WiFi家电开关控制系统。本系统可在实际生活中应用,也适合在单片机教学中推广。
1 WiFi家电开关控制系统的整体方案设计
自从ESP8266WiFi模块上市以来,由于其成本低,性能高而备受关注。根据设计和功能及教学方面的要求,本系统主要采用了51单片机技术、自动控制技术和无线通信技术,通过手机APP控制用电设备。
整个系统主要由五大部分组成,分别是智能手机APP、电源管理部分、51单片机最小系统、ESP8266WiFi模块通信部分、继电器开关控制及发光二极管指示部分。整个系统结构简单、性能稳定可靠、可操作性强,并且成本低廉。系统的设计框图如图1所示。
2 WiFi家电开关控制系统硬件设计
2.1 电源管理系统设计
电源部分设计的质量对整个系统设计至关重要,由于系统单片机和ESP8266WiFi模块需要的电压不同,51单片机的工作电压为5V,单片机电源供电由外接5V电源提供,而8266WiFi模块的工作电压为3.3V,因此8266WiFi模块3.3V电压由AMS1117-3.3V稳压输出提供。
2.2 ESP8266WiFi通信系统设计
本设计通信模块使用业界主流8266WiFi模块。ESP8266硬件接口丰富,适用于各种物联网应用场合,其作为一个透传模块使用,URXD、UTXD分别连接51单片机的TXD和RXD,VCC和CH_PD管脚接3.3V电压,GND接地(8266WiFi模块要和单片机共地才能正常工作),只需要连接这些管脚,ESP8266模块就可以正常工作了。本设计单片机与ESP8266通信方式采用AT命令方式,首先由单片机对ESP8266模块进行初始化,ESP8266通过WiFi接收到手机发送的命令后传入单片机,单片机再进行相应的操作。
2.3 单片机最小系统设计
单片机最小系统是中职生学习单片机的必学内容,也是基于单片机的系统设计的最基础的部分,是系统的控制核心。相对来说,最小系统的构建比较简单,只涉及到了晶振电路、复位电路以及EA/VPP端的高电平。设计单片机最小系统,选择合适的单片机非常重要。由于本系统功能相对较少,8位单片机就可以实现设计的功能要求,且价格较低,因此本设计选择STM公司出品的STC89C51单片机。这款单片机可以直接从RXD和TXD引脚直接进行通信,非常方便。完成最小系统电路设计后,对其测试。第一步,检测晶振是否能正常起震,第二步,把相应的IO口控制程序置入单片机,可通过控制一个发光二极管的发光情况来测试。最后是测试复位电路功能是否正常。
2.4 家电控制电路设计
本设计家电控制电路部分采用3路继电器实现控制,单片机通过IO口输出高低电平控制继电器的通断,从而控制外部家电电源的通断。为了方便操作和观察继电器的吸合和断开,在继电器端接一个LED灯,通过观察LED灯的亮灭来了解继电器的状态,当LED灯亮时,说明相应的继电器吸合,当LED灯不亮时,说明相应的继电器吸合。整个系统设计原理图如图2所示。
3 WiFi家电开关控制系统软件设计
系统软件设计,编程使用C语言,编译环境为Keil。单片机软件主要是串口初始化、ESP8266模块的初始化(如设置模块WiFi模式为AP模式,并设置WiFi名称和密码等)、接收模块转发的数据、根据收到的数据处理串口中断来完成对继电器的控制。部分程序如下:
Uart_Init();
ms_delay(2000);
ESP8266_Set("AT+CWMODE=2"); // 设置路由器模式2(AP模式)
ms_delay(2000);
ESP8266_Set("AT+RST"); // 重新启动WiFi模块
ms_delay(2000);
ESP8266_Set("AT+CWSAP=\"wifi_yuan\",\"123456789\",11,4"); // 设置WiFi名称和密码
ms_delay(2000);
ESP8266_Set("AT+CIPMUX=1"); // 开启多连接模式,允许多个客户端接入
ms_delay(2000);
ESP8266_Set("AT+CIPSERVER=1,5000"); // 启动TCP/IP实现基于网络控制
ms_delay(2000);
ESP8266_Set("AT+CIPSTO=0"); // 永远不超时
ES = 1; // 允许串口中断
4 系统的调试
在本设计中,单片机的串口中断的波特率设为9600,在将ESP8266模块与单片机硬件连接之前,先通过电脑用USB-TTL模块连接好ESP8266模块,将ESP8266模块的波特率改为单片机能使用的9600bps,再将模块插到系统中。在手机上安装手机端控制软件,手机接入到ESP8266模块发射的无线WiFi网络,打开控制软件设置好IP和端口就可以连接单片机开关控制系统了,按对应的按键就可以控制继电器吸合或断开,从而控制家电的开关。
通过实际测试,系统成功完成了设计的功能,通过点击手机上的按键能成功地让对应的继电器吸合或断开(对应的LED灯亮或灭),从而控制接到继电器上的家电电源的通和断。
5 结束语
这次设计的系统能够实现利用WiFi,通过操控手机遥控家用电器的开关。因为本设计只是一个非常入门的设计,使用到的无线网络也仅仅是局域网,操作指令也很简单,传输的数据量也很小,比较适合中职学生的学习水平,可以在中职单片机教学中推广。
因系统没有涉及到手机接收单片机发来的信息的功能,也没涉及到利用互联网进行连接控制的功能。下一步,我们计划对系统进行完善,加入以上两个功能,同时对软件进行优化。