基于TCPIP协议的家电远程控制系统设计_第1页
基于TCPIP协议的家电远程控制系统设计_第2页
基于TCPIP协议的家电远程控制系统设计_第3页
基于TCPIP协议的家电远程控制系统设计_第4页
基于TCPIP协议的家电远程控制系统设计_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于TCP/IP协议的家电远程控制系统设计李开国,康志亮,丁武伟,沈茂(四川农业大学信息与工程技术学院,四川雅安 )摘要:利用STC89C58RD+单片机与ENC28J60网卡芯片设计了一种家电远程控制系统。该系统采用精简的TCP/IP协议实现单片机与IPv4网络通信,单片机用红外通信的方法来同时控制多个家电。网站接受多个用户请求,网络程序处理与对应的单片机之间通信,从而提供一种多用户远程控制多个家电的方案。对电饭煲进行测试,结果显示该方案能够通过互联网远程控制电饭煲。关键词: TCP/IP协议;远程控制;家电;STC89C58RD+单片机中图分类号:TP273 文献标识码:AThe Desi

2、gn of Remote Control System in Household Appliances Based on TCP/IP ProtocolLi Kaiguo, Kang Zhiliang, Ding Wuwei,Shen Mao (School of Information & Engineering Technology, Sichuan Agricultural University,Yaan,Sichuan Province , China)Abstract: A new remote control system based on STC89C58RD+ and ENC2

3、8J60 is designed in the paper. The system applies the simplified TCP/IP protocol to communicate IPv4 network with microcontroller, and the microcontroller can control multiple home appliances simultaneously by using infrared communication. TheWebsite can accept a lot of requests from multiple users.

4、 The network programs process the communication between the network and the corresponding microcontroller with aim of providing a remote control method, among which the multi-user can control multiple home appliances successfully. Some experiments are carried out, and the experiment results show tha

5、t the rice cooker can be controlled remotely through internet.Keywords: TCP/IP Protocol;Remote Control;Household Appliances;MCU0 引言项目来源:国家级大学生创新实验项目(),四川省教育厅重点项目(08ZA067)李开国(1987),男,本科生,主要从事自动控制系统及网络技术研究 康志亮(1976),男,硕士,四川农业大学信息与工程技术学院,讲师,研究方向为自动控制及信号处理; 互联网的迅猛发展使得我国的上网人数显著增加,手机、笔记本等上网终端的使用率迅速攀升,其中手机

6、增长率约为98.3%。互联网随身化、便携化的趋势明显1,同时随着3G牌照的发放以及3G业务的推广,网民使用手机上网的频率将会进一步提高。后IP时代网络社会将向信息社会迈进,物联网将是后IP时代的核心技术2。但是,多数家用电器仍然处于信息“孤岛”状态。随着信息技术的蓬勃发展,家用电器接入互联网成为一种必然趋势,对此本文设计了一种基于TCP/IP协议的家用电器远程控制系统,该系统分为两部分:一是采用STC89C58RD+单片机为核心控制芯片,利用网卡芯片ENC28J60来实现网络通信接口与互联网服务器之间的通信;二是通过红外载波的发射、接收头与家用电器微控制器进行通信,以此实现对家电的控制。1总体

7、设计在利用互联网对家用电器进行远程控制时,参照物联网的模型将系统分为三层:感知层,网络层和应用层2,每层执行其特定的任务。该系统的层次结构见图1。图1 系统的层次结构感知层的功能是对终端电器进行状态监控,并将电器的实时监控数据传送到网络层。具体地说,该层是以AT89S52单片机作微控芯片,用红外一体化的接收头接收来自网络层的红外载波信号,并对该信号给予解调以此来控制电器,同时将电器的状态信息调制后通过红外一体化的发送头传送给网络层;网络层处理来自应用层的TCP/IP数据包和来自感知层的红外数据包。该层采用STC89C58RD+单片机为核心处理芯片,构建TCP/IP协议栈,并用网卡芯片ENC28

8、J60接收和发送来自网络层的TCP/IP数据包,最后将此数据进行调制解调;应用层包括网站应用程序和网络应用程序,其功能是接收用户请求,以实现对电器的直接控制。其中网站应用程序主要实现人机的接口,是用户进行帐户管理和家电控制的综合系统,按照JSP的MVC模式进行开发。网络应用程序则是使用线程池处理来自多个网络层通信芯片的TCP/IP数据包,同时将用户请求通过TCP协议发送给网络层的网卡芯片ENC28J60。这种分层结构将大量用户的控制请求转由服务器CPU进行处理,从而大大降低了网络层MCU的负荷。2 硬件电路设计2.1红外通信电路设计红外通信是利用950nm近红外作为传递信息的媒体,其发送端采用

9、脉时调制方式(PTM),即将二进制数字信号调制成某一频率的脉冲序列,并驱动红外发射管以光脉冲的形式发送出去;接收端则将接收到的光脉冲转换成电信号,电信号经放大、滤波后被解调,即可还原为数字信号后输出。本系统采用常见的NEC码3来实现网络层与感知层之间的通信。红外通信的发送端是利用AT89S52单片机将待发送的二进制信号编码调制为一系列的脉冲串信号,并经AT89S52的P3.4引脚将此信号发送至发送电路,实现信号的发送。接收端使用一体化的红外接收头HS0038,其工作频率为38 kHz,能对接收到的信号进行放大、检波、整形和解调等,得到TTL电平的编码信号。HS0038将此编码信号传送至AT89

10、S52的P3.2(INT0)引脚,经AT89S52解码后依据指令执行相关的控制程序。2.2接口电路设计网络层选用增强型的STC89C58RD+单片机作为微控芯片,其速度比普通的8051芯片快812倍,工作频率为035MHz,能够满足TCP/IP数据包发送速度的要求。该芯片具有32K FLASH的程序存储器,其E2PROM为8K,用于保存IP地址、子网掩码、网关、客户账号及密码等需要断电保存的数据。STC89C58RD+内部仅有1.28K的存储空间,不能满足处理TCP/IP数据包所需的10K左右的存储空间,因此使用数据存储器62256将其外部存储器外扩至32K,这样也利于提高数据的接收与发送速度

11、。在网络层中,红外信号的接收与发送与感知层的设计类似,其不同点在于采用中断方式处理来自外部的红外信号使用STC89C58RD+的INT1引脚,见图2。网卡芯片ENC28J60是由Microchip推出的以太网控制器,使用串行外设接口(SPI)的引脚(SO、SI、SCK、CS)和两个中断引脚(INT和WOL)与主控制器进行通信,最高速度可达到10Mb/s。该芯片内部有一个DMA模块,可以实现数据的快速吞吐和硬件支持IP校验和的计算。该芯片的两个引脚LEDA、LEAB用于连接LED,用于显示连接、发送、接收、冲突和全/半双工等状态。STC89C58RD+内部不带SPI接口,使用4个I/O引脚模拟S

12、PI输入输出时序与ENC28J60进行通信,如图2所示。ENC28J60的SPI有7条指令集用以实现读控制寄存器、写控制寄存器、读缓冲器、写缓冲器、位域置1、位域清零和软件复位。ENC28J60中有三类存储器:控制寄存器、以太网缓冲器和PHY寄存器。SPI接口是STC89C58RD+与的通信通道,由总线接口对其接收的数据和命令进行解析,图2 网络层接口电路可以直接对控制寄存器进行读写,并对ENC28J60进行配置、控制和状态获取。以太网缓冲器包含供以太网控制器使用的发送和接收存储器,该缓冲器大小为 8 KB,分成独立的接收和发送缓冲空间。PHY 寄存器用于对 PHY 模块进行配置、控制和状态获

13、取。ENC28J60需要通过MCU的中断处理来控制事件中断INT和LAN, 触发中断时会占用STC89C58RD+的外部中断口INT0。ENC28J60的差分输入、输出引脚(TPIN+/-和TPOUT+/-)在以太网变压器作用下经RJ45接口与互联网通信,以实现网络层以太网控制器与应用层服务器物理线路的联通。3软件设计系统软件设计包括感知层的红外收发程序和电器控制程序、网络层的TCP/IP数据包收发程序和红外多机通信程序以及应用层的网站程序和网络序。3.1 感知层的程序设计初始化时设置T0定时器和开启外部中断0,初始化完成后对电器工作状态进行查询;若电器工作状态改变,则电器的工作状态按照自定义

14、协议格式发送到网络层;若是第一次查询则与默认初始状态进行比较,否则与上一次记录的电器工作状态比较。当外部中断0接收到来自网络层的控制命令时,微控制器解包后对电器进行控制。3.2 网络层的程序设计微控制器首先进行系统初始化,包括ARP初始化、TCP初始化、内存初始化、定时器初始化和网卡芯片初始化。初始化完成后,设置网卡芯片的IP地址、子网掩码、默认网关和本地监听的端口。接着就开启中断,以便主动连接服务器,其中外部中断0处理来自ENC28J60的请求以便收发来互联网的数据包;外部中断1则处理来自HS0038的请求以便接收来自感知层的红外信号,若中断没有发生则进入节电模式。网络层的单片机控制流程如图

15、3所示。图3 网络层的单片机控制流程微控制器与服务器之间的通信需要在单片机内部实现TCP/IP协议,当8位MCU接入以太网时,由于系统资源的有限性很难实现完整的TCPIP协议。网络层微控制器的功能主要包括传输现场数据和接收远程控制命令,数据量较少且格式简单,故对TCPIP协议进行裁减。精简协议栈时只保留链路层的地址解析协议、网络层的IP协议、差错报文控制协议和传输层的TCP协议,且对需要实现的协议只实现必需的算法部分。TCP/IP协议采用了4层结构:应用层、运输层、网络层和链路层4。图4 精简的TCP/IP栈图4描述了输入输出数据包流程和精简的TCP/IP协议5。ARP协议、ICMP协议和IP

16、协议相对简单,在MCU中为实现这三个协议而进行数据包的发送时,可直接按协议的封装格式添加响应的协议首部封装成的IP数据包,最后添加以太网首部和以太网尾部构成的一个完整的以太网数据帧,并通过ENC28J60发送到网络中去。在进行数据包的接收时,过程与封包的过程相反:先去掉以太网数据帧的首部和尾部解析数IP数据包,再逐层去掉相应的协议首部以获得用户数据。TCP协议提供一种确保数据可靠传输的服务。为减少资源的占用和提高实时性,需要对TCP协议进行简化,其函数调用关系如图4所示。当数据输出时,TCP层先查看unsend队列:若发现队列非空,则将数据包插入此队列;反之则查看对方窗口是否能够接收此数据包,

17、然后填写TCP头部信息。IP层需要选择一个网络设备接口,即目的IP和该接口的子网掩码相与后等于子网掩码,然后调用驱动程序来发送,同时P3.2向ENC28J60发出中断请求。经ENC28J60处理后的数据包传送到目的网络中去。数据输入时,Timer()函数的一个功能调用驱动函数ENC28j60PacketSend()函数。它另一个功能是调用TCPTimer(),用于处理TCP数据包的重发等功能。Timer()函数会在短时间 (20 ms) 内被调用一次,否则接收数据包和TCP定时等功能将停止。IP层判断IP版本、IP校验和,判断是否应该转发数据包,然后根据IP头部的protocol字段将包传给相

18、应的高层处理。TCP层,需要判断TCP校验和然后在现有的套接字中查找,判断是否有套接字可以接收这个数据包判断TCP序号是否为希望的,然后更新这个连接的状态(包括释放被应答的数据包和TCP状态机的转化等)。然后调用套接字的回调函数recv()。如果接收的TCP序号不在我方滑动窗口内,那么应该马上发送一个TCP应答包,因为这很可能是我方发送的应答包丢失了,我方接收的数据包是对方重发的TCP包。通过精简后的TCP/IP协议栈对数据进行封包解包后,将此数据与ENC28J60相结合使之在网络中传输,从而单片机能够穿透IPv4下的NAT环境,并与广域网服务器实现互联。3.3应用层的程序设计在应用层,系统采

19、用MVC模式6进行系统设计。控制器的Servlet程序分为两部分:一部分与网站程序一起处理来自浏览器的业务逻辑,包括用户注册、登录和控制电器等操作;另外一部分构建一个独立的线程池,以便监听到指定端口,等待来自网络层中各个设备的TCP连接,完成与网络层的会话。JSP页面是人机接口,完成显示任务,其数据由Servlet和JavaBean程序产生。JavaBean程序是处理用户请求和电器控制的事务逻辑程序,读取数据库中的数据并给予存储和查询。4 通信协议设计考虑到无线通信的不稳定性, 服务器和微控制器之间的通信数据采用自定义的特殊格式,以避免因数据丢失或冗余而造成的系统错误7。因此在对家电进行控制时

20、,采用自定义协议对家电信息进行封包解包。此协议的设计包括两方面:电器设备数据包和通信会话流程。 为了双方的信息同步,在数据包首部定义了会话序号,接收时对数据进行校验。电器序号由单片机根据电器类型产生,工作状态通过感知层的单片机查询并以统一定义的字符来发送,控制命令在服务器回发时由感知层的单片机来处理。电器设备数据包如表1所示。表1 通信数据包网络层的单片机在与互联网上服务器进行一次完整通信过程需要进行六次会话,详细的通信会话流程如图5所示。设备设置完成后,网络层的通信MCU会定时主动连接目的服务器,以建立一个基于TCP协议的Socket连接来进行会话,并发送自身设备的序列号和密码。服务器监听到

21、来自网络层通信MCU的请求后,验证序列号和密码是否在数据库中存在,并将验证后的状态返回给通信MCU,若验证通过后将进行第三次会话。网络层通过红外传感器向感知层的控制MCU发出请求,以便查询感知层的电器工作状态。当感知层接到外部中断后,则会接收请求向网络层通信MCU报告电器目前的工作状态。通信MCU再将工作状态报告给服务器,服务器将工作状态与用户请求比对:若状态相同则报告处理完毕,反之则将不同工作状态发送给网络层通信MCU。网络层通信MCU再将信号发送给感知层控制MCU,感知层处理后回发工作状态,经通信MCU转发到服务器处理。服务器端断开此条TCP连接,则一次通信完成,即用户可在远端通过手机或者

22、电脑上网登陆自己的客户端,就可以完成对家电的远程控制。图5 通信会话流程5 系统测试5.1测试环境 首先,网络层与互联网连通性测试使用个人电脑进行测试。网络层ENC28J60芯片的RJ45接口通过网线与路由器连接。网络层网卡设置IP为192.168.1.101,子网掩码为255.255.255.0,网关为192.168.1.1,本地端口1001。个人电脑使用网线与路由器连接,设置为自动获取IP,保证网络层设备IP与个人电脑IP处于同一网段。其次,路由器设置WAN端口连接类型设置为动态IP,LAN端口IP设置为192.168.1.1。最后,目的服务器设置B类IP为202.115.176.195,

23、用SocketTest对端口1000进行监听。目的服务器为Windows Server 2003服务器操作系统。感知层的被控对象为经过改造的全自动电饭煲。5.2远程控制系统测试1) 连通性测试。在网络设备端,采用WINDOWS XP系统的Ping命令对网络设备进行连通性测试。网络层精简的TCP/IP协议中同时实现了ARP和TCP协议,所以也可以使用APR、TELNET或PathPing命令进行测试网络层设备的连通性。网络层设备能够被Ping通,说明设备协议实现正确。通过以上各种方法进行测试都表明网络层设备与互联网连通性良好,能够稳定进行局域网通信。2) 监听测试。在服务器端使用SocketTest工具软件监听服务器1000端口,开启接收数据提示。网络层微控制器STC89C58RD+主动向广域网服务器1000端口发起TCP连接请求,并将此设备的ID和Password封包发送给服务器。能够将数据包准确发送到服务器,说明网络层设备与互联网连通性良好,能够与广域网通信。3) 参数测试。微控制器STC89C58RD+在使用12MHz晶振时,用Sniffer抓包软件测得其与服务器最高通信速度可达25KB/s。使用ping命令,向192.168.1.101发送500个包,无丢包现象。这500个数据包当中,返回速度最快41m

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论