基于TCP/IP协议的家电远程控制系统设计
摘要:利用STC89S52 单片机与ENC28J60网卡芯片设计了一种家电远程控制系
统。该系统采用精
简的TCP/IP协议(有线和无线)实现单片机与网络通信,单片机用网络通信的方法来同时控制多个家电。
接收多个用户请求,网络程序处理与对应单片机之间的通信,从而提供一种多用户远程控制多个家电
关键词:TCP/IP协议;远程控制;家电;STC89S52
前言:从20 世纪90年代末期开始智能小区智能家庭这两个新概念逐步走入人们的生活。随着一些智能化家居产品的问世,人们享受智能化的家庭生活已不再是梦想中的难事我国的智能家居技术与欧美国家相比大概要滞后2~3 年, 国外的智能家居产品占据着国内高端产品市场例如美国海益智能家居系统在安防保护温度控制和灯光自动控制方面提供了简捷可靠安全的操作但是没有提供远程控制方面的功能目前,国内的中低端产品在功能实现方面还比较简单, 一般只实现了家庭安防和部分控制功能, 而具有远程控制和管理功能的智能家居产品则是在一定的中高端市场中出现。例如, 2006年海尔公司推出的短信宝, 可以通过手机短信来远程控制家里的各种电器虽然海尔短信宝的价格适中面向大众消费体但是它只适用于带有网络接口和基于  e 家佳协议的家电产品, 在应用方面还存在一定的局限性。而其他具有远程控制功能的高档智能家
居产品, 由于其价格昂贵, 又使得普通百姓望部而却步因我们此在增加智能家居系统的远程控制功能的同时求一种性价比较高的技术方案而努力
互联网的迅猛发展使得我国的上网人数显著增加,手机、笔记本等上网终端的使用率迅速攀升,其中手机增长率约为98.3%。互联网随身化、便携化的趋势明显…,同时随着3G 牌照的发放以及3G业务的推广,网民使用手机上网的频率将会进一步提高。后IP时代网络社会将向信息社会迈进,物联网将是后IP时代的核心技术。但是,多数家用电器仍然处于信息孤岛”状态。随着信息技术的蓬勃发展,家用电器接入互联网成为一种必然趋势,对此笔者设计了一种基于TCP/IP协议的家用电器远程控制系统,该系统分为两部分:一是采用STC89S52单片机为核心控制芯片,利用网卡芯片ENC28J60来实现网络通信接口与互联网服务器之间的通信;以此实现对家电的控制。
1.连接方式;有线连接方式包含了星型连接总线连接和电力线载波连接三种方式。无线连接方式包含了蓝牙连接红外连接和无线(RF) 连接三种方式。从稳定性角度来看, 有线连接方式要比无线连接方式的稳定可靠性高, 在传统的安防系统中采用的都是稳定性最好的星型连接方式。但是有线连接方式也同样存在一些缺点如布线时间长影响室内美观不便于改动难以满足防火要求等无线连接方式虽然在稳定性方面不如有线连接方式, 但可以弥补有线连接方式在其他方面的不足, 对于一些在稳定性要求方面不是很高的家电设备如空调电饭煲等的控制可采用无线连接方式。考虑到目前蓝牙的价格还比较高, 而红外连接又主要用于遥控, 因此本文采用的是智能家庭网关与家电设备之间的无线串口通信方
案。家庭网关是家庭网络的核心设备和集中控制中心, 对家庭网络中的电器设备进行集中的管理和控制家庭网关是家庭内网络与外部网络的连接接口, 主要实现网的接Internet GSM寻入远程控制以及连接家庭内部网络的功能可见家庭网关的设计是整个智能家庭系统设计的核心。
2.总体设计:
整体原理图为:
在利用互联网对家用电器进行远程控制时,参照物联网的模型将系统分为3层:感知层、网络层和应用层,每层执行其特定的任务。该系统的层次结构如感知层的功能是对终端电器进行状态监控,并将电器的实时监控数据传送到网络层。具体地说,该层是以AT89S52单片机作为微控芯片,用红外一体化的接收头接收来自网络层的红外载波信号,并对该信号给予解调以此来控制电器,同时将电器的状态信息调制后通过红外一体化的发送头传送给网络层;网络层处理来自应用层的TCP/IP数据包和来自感知层的红外数据包。该层采用
STC8952 单片机为核心处。如图所示:
方向为自动控制及网络技术理芯片,构建TCP/IP协议栈,并用网卡芯片ENC28J60 接收和发送来自网络层的TCP/IP数据包,最后将此网络层选用增强型的STC89S52单片机作为微控芯片,其速度比普通的89S51芯片快8~12倍,工作频率为0~35MHz,能够满足TCP/IP数据包发送速度的要求。该芯片具有32KBFlash的程序存储器,其EPROM 为8KB,用于保存IP地址、子网掩码、网关、客户账号及密码等需要断电保存的数据。STC89S52内部仅有1.28KB的存储空间,不能满足处理TCP/IP数据包所需的10KB左右的存储空问,因此使用数据存储器62256将其外部存储器外扩至32KB,这样也利于提高数据的接收与发送速度。设计类似,其不同点在于采用中断方式处理来自外部的红外信号使用STC89S52 的INT1引脚网卡芯片ENC28J60是由Microchip推出的以太网控制器,使用串行外设接口(SPI)的引脚(SO、SI、SCK、CS)和两个中断引脚(INT和WOL)与主控制器进行通信,最高速度可达到10Mb/s。该芯片内部有一个DMA模块,可以实现数据的快速吞吐和硬件支持IP校验和的计算。该芯片的两个引脚LEDA、LEDB 用于连接LED,以及显示连接、发送、接收、冲突和全/半双工等状态。STC89S52 内部不带SPI接口,使用4个I/O引脚模拟SPI输入输出时序与ENC28J60 进行通信。ENC28J60的SPI有7条指令集用以实现读控制寄存器、写控制寄存器、读缓冲器、写缓冲器、位域置位域清零和软件复位。ENC28J60中有3类存储器:控制寄存器、以太网缓冲器和PHY寄存器。SPI 接口是STC89S52 与ENC28J60的通信通道,由总线接口对其接收的数据和命令进行解析,可以直接对和状态获取。以太网缓冲器包含供以太网控制器使用的发送和接收存储器,该缓冲器大小为8KB,分成独立的接收和发送缓冲空间。PHY寄存器用于对PHY 模块进行配置、控制和状态获取。ENC28J60需要通过MCU的中断处
理来控制事件中断INT和LAN,触发断时会占用STC89S52 的外部中断口INTO。ENC28J60的差分输入、输出引脚(TPIN+/一和务器物理线路的连通。头HS0038,其工作频率为38kHz,能对接收到的信号进行放大、检波、整形和解调等,得到工作过程如图:
微控制器首先进行系统初始化,包括ARP初始化、TCP初始化、内存初始化、定时器初始化和网卡芯片初始化。初始化完成后,设置网卡芯片的IP地址、子网掩码、默认网关和本地监听的端口。接着就开启中断,以便主动连接服务器,其中外部中断0处理来自ENC28J60的请求,以便收发来互联网的数据包;外部中断1则处理来自HS0038的请求以便接收来自感知层的红外信号,若中断没有发生则进入节电模式。微控制器与服务器之间的通信需要在单片机内部实现TCP/IP协议,当8位MCU接入以太网时,由于系统资源的有限性,很难实现完整的TCP/IP协议。网络层微控制器的功能主要包括传输现场数据和接收远程控制命令,数据量较少且格式简单,故对TCP/IP协议进行裁减。精简协议栈时只保留链路层的地址解析协议、网络层的IP协议、差错报文控制协议和传输层的TCP协议,且对需要实现的协议只实现必需的算法部分。TCP/IP协议采用了4层结构:应用层、运输层网络层和链路层,反之则查看对方窗口是否能够接收IP协议J。ARP协议、ICMP 协议和IP协议相对简单,在MCU中为实现这3个协议而进行数据包的发送时,可直接按协议的封装格式添加相应的协议首部封网络层的单片机控制流程装成的IP数据包,最后添加以太网首部和以太网尾部构成一个完整的以太网数据帧,并通过ENC28J60发送到网络中去。在进行数据包的接收时,其过程与封包的过程相反:先去掉以太网数据帧的首部和尾部解析IP数据包,再逐层去掉相应的协议首部以获得用户数据TCP协议提供一种确保数据可靠传输的服务。为减少资源的占用和提高实时性,需要对TCP协议进行简化,其函数调用关系。当数据输出时,TCP层先查看unsend队列:若发现队列非空,则将数据包插入此队列;反之则查看对方窗口是否能够接收此数据包,然后填写TCP头部信息。IP层需要选择一个网络设备接口,即目的IP和该接口的子网掩码相与后等
于子网掩码,然后调用驱动程序来发送,同时P3.2向ENC28J60发出中断请求。经ENC28J60处理后的数据包传送到目的网络中去。数据输人时,Timer()函数的一个功能调用驱动函数ENC28j60PacketSend()函数。
它的另一个功能是调用TCPTimer(),用于处理TCP数据包的重发等功能。Timer()函数会在短时间(<20ms)内被调用一次,否则接收数据包和TCP定时等功能将停止。IP层判断IP版本、IP校验和,判断是否应该转发数据包,然后根据IP头部的protocol字段将包传给相应的高层处理。TCP层需要判断TCP校验和,并在现有的套接字中查,判断是否有套接字可以接收这个数据包判断TCP序号是否为希望的,并更新这个连接的状态(包括释放被应答的数据包和TCP状态机的转化等);然后调用套接字的回调函数recv(),如果接收的TCP序号不在我方滑动窗口内,那么应该马上发送一个TCP应答包,因为这很可能是我方发送的应答包丢失了,我方接收的数据包是对方重发的TCP包。通过精简后的TCP/IP协议栈对数据进行封包解包后,将此数据与ENC28J60相结合使之在网络中传输,从而单片机能够穿透IPv4下的NAT环境,并与广域网服务器实现互联
工作流程图为:
3 应用层的程序设计
在应用层,系统采用MVC模式进行系统设计。控制器的Servlet程序分为两部分:一部分与网站程序一起处理来自浏览器的业务逻辑,包括用户注册、登录和控制电器等操作;另外一部分构建一个独立的线程池以便监听到指定端口,等待来自网络层中各个设备的TCP连接,完成与网络层的会话。JSP页面是人
tcpip协议在设计时就考虑了如何解决安全问题机接口,完成显示任务,其数据由Servlet 和JavaBean程序产生。JavaBean程序是处理用户请求和电器控制的事务逻辑程序,读取数据库中的数据并给予存储和查询。
4 通信协议设计
考虑到无线通信的不稳定性,服务器和微控制器之间的通信数据采用自定义的特殊格式,以避免因数据丢失或冗余而造成的系统错误]。因此在对家电进行控制时,采用自定义协议对家电信息进行封包解包。此协议的设计包括两方面:电器设备数据包和通信会话流程。为了双方的信息同步,在数据包首部定义了会话序号,接收时对数据进行校验。电器序号由单片机根据电器类型产生,工作状态通过感知层的单片机查询并以统一定义的字符来发送,控制命令在服务器回发时由感知层的单片机来处理。电器设备数据