基于51单片机物联网智能家居手机Wi-Fi控制开关系统

2019-11-30 12:14史旭丹
科技资讯 2019年25期
关键词:调用指示灯串口

史旭丹

摘  要:该设计核心内容为通过8051单片机与ESP8266-01模块的串口通信,实现基于51单片机物联网智能家居手机Wi-Fi控制开关系统。主要需要将物联网技术与传统的单片机技术相结合,以较低的成本实现物联网技术的核心部分:无线通信与远程控制,通过ESP8266-01串口Wi-Fi通信模块与STC89C52-RC单片机,实现手机通过Wi-Fi通信协议操作单片机的指示灯模块灯的亮灭。

关键词:ESP8266-01  STC89C52-RC  Wi-Fi通信

中图分类号:TN925    文献标识码:A 文章编号:1672-3791(2019)09(a)-0022-02

1  项目概述

1.1 项目研究目的与意义

传统家电的控制模式逐渐无法满足现有的生活节奏,传统的按钮/红外控制式的半自动控制已不适合现代的快节奏与生活水平的提升,人们逐渐开始追求家电的智能化,主要体现在家电的自动控制、远程控制、家电控制的整合等。该项目旨在设计一个与传统技术相结合的智能网关,实现物联网的核心部分——网关通信与远程控制。

1.2 项目的研究现状

智能家居是物联网的一种典型应用,在物联网的短暂发展史中,其协议、通信技术等依赖技术都已经历过多次更新换代,但在国内却少有实例或产品。在市场上也可以找到少量的通过手机与Wi-Fi协议控制的物联网智能家居系统,但往往存在着价格过高、不易使用或维护困难等或多或少的问题,该设计旨在依托现有的理论,创造更高性价比的实际应用方案。

2  系统概述

2.1 系统方案概述

基于STC89C52RC单片机、ESP8266-01串口Wi-Fi通信模块与指示灯显示电路为主设计一款基于Wi-Fi协议通信的智能网关。系统启动时,单片机进行初始化,并通过串口向ESP8266-01串口Wi-Fi通信模块发送初始化信息,初始化時指示灯全亮,初始化结束后指示灯全灭。此时可通过手机连接ESP8266-01模块建立的无线局域网,并与ESP8266-01通信模块的预设IP与端口建立TCP通信,发送指定信息完成数个指示灯的开关操作。

2.2 主要功能

单片机通电后指示灯全亮,通过串口与ESP8266-01模块进行通信,使用ESP8266-01模块的AT指令集对模块初始化,初始化过程为:设置为多连接模式,建立TCP服务器。初始化完成后指示灯全灭。此时可用有Wi-Fi功能的手机或个人计算机连接Wi-Fi“ESP8266-01”,密码为“12345678”(预设,可通过串口连接电脑修改)。连接成功后,与ESP8266-01模块建立TCP连接,模块的默认IP为”192.168.4.1”,预设端口号为”8080”,建立成功后,可通过发送信息控制指示灯模块。具体表现为:发送“1”时,L1亮起;发送“2”时,L2亮起;发送“3”时,L3亮起;发送“4”时,L4亮起;发送“5”时,L1、L2、L3、L4亮起。

3  软件概述

3.1 程序入口函数逻辑

开始程序后,首先打开总中断开关(EA=1),执行串口9600波特率的初始化,通过AT指令集执行ESP8266的TCP服务初始化后,进入空循环等待中断。

3.2 串口通信实现

3.2.1 串口初始化实现

串口初始化的实现调用了ConfigUART函数,此参数是一个有参函数,调用方法通常为ConfigUART(baud值),需要引入一个baud值(即初始化使用的频段)后,可实现对STC89C52RC单片机的串口通信0进行初始化。

3.2.2 串口发送数据的实现

串口发送分为两部分;一部分为实现单字节发送的Sent_UART函数;另一部分为多字节发送的Uart_Send_String函数。Sent_UART函数是一个有参函数,调用时需要引入一个dat值(即自定义数据)后,可实现单字节的发送。

Uart_Send_String函数是一个有参函数,调用时需要引入一个*string值(即字符串),可实现多字节的发送。

3.2.3 串口接收数据实现

串口接收的实现主要使用了中断函数InterruptUART,中断源为4(串口中断)。此函数执行过程为,首先根据串口接收标志位(RI)判断是否接收到字节,如接收到,则手动将RI设置为0,将接收到的数据保存到变量中。然后判断是否为有效数据,如是则执行相应操作。数据接收执行结束后,判断是否为字节发送完毕,如是则手动清零中断标志位,接收结束。

3.3 ESP8266-01 Wi-Fi模块的控制

3.3.1 AT指令

在该项目的ESP8266-01模块初始化中,分为了一次性初始化与每次单片机启动时的初始化,一次性的初始化使用CH340G芯片(USB转TTL)将模块与计算机之间连接。一次性初始化包括:将ESP8266-01初始的波特率从默认出厂的115200修改为9600,调用的方法为:AT+UART=9600,8,1,0,0。将模块设置为AP模式,调用的方法为:AT+CWMODE=2。

3.3.2 单片机控制下的初始化

单片机初始化主要包括ESP8266_Init函数。此函数是一个无参函数,主要实现ESP8266-01串口Wi-Fi通信模块的初始化。主要过程为:将ESP8266-01设置为多连接模式,调用方法为:AT+CIPMUX=1,在ESP8266-01模块的8080端口上建立TCP服务,调用方法为:AT+CIPSERVER=1,8080。

3.3.3 单片机与模块之间的通信

单片机与ESP8266-01Wi-Fi通信模块的通信主要通过串口中断处理程序来完成。单片机的RxD与模块的TX连接,单片机的TxD与模块的RX连接。详见上文3.2.2与3.2.3串口的接收与串口的发送部分。

参考文献

[1] 陈海宴.单片机原理及应用[M].北京:北京航空航天大学出版社,2010.

[2] 刘文涛.C51程序设计[M].北京:原子能出版社,2004.

[3] 贺思婷,马铭,许晓容.无线温度采集预警系统设计[J]. 智能建筑,2017(11):62-64.

猜你喜欢
调用指示灯串口
一闪一闪亮晶晶浅析笔记本身上的指示灯
“软”指示灯同时监控键盘磁盘网络
基于Android Broadcast的短信安全监听系统的设计和实现
MCS—51单片机中的多串口通讯技术的应用
一种矩阵键盘的MCU实现
全国计算机等级考试机房准备工作探讨
微机串口的测试诊断
利用RFC技术实现SAP系统接口通信
C++语言中函数参数传递方式剖析
基于VC串口通信的实现