基SPCE061A单片机的网络家电系统设计Word格式文档下载.docx
《基SPCE061A单片机的网络家电系统设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基SPCE061A单片机的网络家电系统设计Word格式文档下载.docx(15页珍藏版)》请在冰豆网上搜索。
![基SPCE061A单片机的网络家电系统设计Word格式文档下载.docx](https://file1.bdocx.com/fileroot1/2022-11/25/588e3afb-fed9-4cbb-9273-375721bbcaef/588e3afb-fed9-4cbb-9273-375721bbcaef1.gif)
该设计分为硬件和软件设计两部分。
硬件设计主要有SPCE061A和DM9000A以太网模组电路。
软件设计主要是实现一个能与PC端的浏览器通信,接受浏览器的页面请求并回传网页给浏览器显示的WebServer,同时,可以根据客户端发送的信息对家电进行控制。
2.2网络家电系统的设计要求
利用61板作为控制板,配合DM9000以太网模组,完成一个Web服务器,并具有控制功能,其功能主要为:
1.SPCE061A做为主控制器对DM9000以太网控制芯片进行控制,完成以太网数据包的收发;
2.SPCE061A与DM9000构成的网络终端可以做为Web服务器,对局域网提供网页浏览服务;
3.用户可以通过网页上的按钮模拟实现对“空调”、“灯光”、“音乐”三个家电的控制;
4.对家电的控制通过播报语音或点亮LED模拟代替;
3总体设计
本系统由SPCE061A精简开发板、以太网模组构成,结构如图1所示:
图1网络家电系统框图
实现功能的方法为:
系统通过交叉网线与PC机的网卡直接相连,或通过直通网线与局域网交换机或Hub相连。
以太网模组在SPCE061A的控制下进行以太网数据包的收发,完成与局域网内的其他网络设备的通讯。
在运行于SPCE061A平台的TCP/IP协议的基础上,搭建应用层HTTP服务器协议,实现Web服务器的功能,并向局域网提供网络浏览服务。
同时,通过分析客户端提交的请求信息,实现对家电的控制。
4硬件设计说明
4.161板最小系统
61板包括SPCE061A芯片及其外围的基本模块,外围模块包括:
晶振输入模块(OSC)、锁相环外围电路(PLL)、复位电路(RESET)、指示灯(LED)等,如图2所示:
图2SPCE061A最小系统
4.2以太网模组电路
包括DM9000的工作电路、SPR4096电路、电源电路三部分在本系统中,没有用到SPR4096。
DM9000的工作电路如图3所示。
图3DM9000工作电路
4.3太网模组的电源电路
以太网模组的电源电路如图4所示由一颗LD1117将接入的5V电源变换为3.3V为整个模组供电。
图4以太网模组电源电路
5软件设计
5.1软件设计思想
此设计中用户需要做的是实现一个能与PC端的浏览器通信,接受浏览器的页面请求并回传网页给浏览器显示的WebServer,同时,可以根据客户端发送的信息对家电进行控制。
其整体框图如图5所示:
图5系统软件模块层次关系
其各部分实现的功能为:
●DM9000驱动需要实现与以太网链路的数据交换;
●TCP/IP协议实现与PC端应用程序的平等交互;
●HTTP协议处理经过TCP/IP协议传输的PC端浏览器发过来的HTTP请求,并将网页数据通过TCP/IP协议送至PC端的浏览器显示;
●客户端请求处理部分是根据客户端提交HTTP请求选择回传页面,并实现对SPCE061A的控制。
5.2功能模块设计
5.2.1TCP/IP协议
unI是运行在凌阳公司μ'
nS系列单片机上的一个精简TCP/IP协议栈。
协议栈的初始版本由LwIP移植而来,之所以不沿用LwIP的名字是因为移植工作不仅仅只是LwIP说明的arch目录下的改动,core部分也做了不少的修改以适应μ'
nSP的16bit的特性(μ'
nSP并不具有8bit的数据类型,地址也是以16bit为单位),因此unIP与LwIP并不兼容,此外,增加了DNSClien域名解析客户端)到协议栈中,以及部分应用实例,例如WEBSERVER等等,综合以上原因,给本协议栈重新命名为unIP,特指是运行于μ'
nSP系列单片机之上的网络协议栈。
unIPStac从资源消耗来说是一个精简的协议栈,而协议栈的实现却是是非常的完整。
表1所示就是本协议栈所具有的所有特性。
表1TCP/IP协议栈的特性
特性
unIPStack
多网络接口(ethernet,ship)
支持
ARP
IP(不支持IP分片与重组)
ICMP(包括ECHO,和destinationunreach)
UDP(包括UDPChecksum的计算)
支持,可选(已精简)
TCP选项(只支持最大报文段长度MSS)
TCP滑动窗口
TCP慢启动、拥塞避免
TCP快速重传、快速恢复
TCP错序数据重组
支持,可选
TCP紧急数据(urgentdata)
往返时间估计(RTT)
DHCP客户端(可自动获取网络设置)
支持,可选(已精简)
DNS客户端(可解析普通域名以及邮件地址mx记录)
模式化以及非模式化缓冲区存管理
动态内存管理
原始API(网络编程)
目前,unIP是以库的形式提供给用户,通过对各个部分API的调用,即可编写自己的应用层协议。
API总共7部分,包括网络接口层(netif开头)、动态内存管理模块(mem开头)、缓冲区管理模块(pbuf)、UDP层(已精简)、TCP层、DHCP模块(已精简)和DNS模块。
TCP/IP协议栈使得用户在设计嵌入式网络系统时无需处理以太网底层协议的数据包,而直接处理运输层送给应用层的数据包即可。
在本系统中,需要利用unIP协议栈中提供的运输层TCP协议,建立应用层HTTP协议,以便完成Web服务器的功能。
5.2.2基于TCP的服务器的实现
HTTP协议是基于TCP协议的一个常见应用层协议。
依靠unIP提供的TCP/IP协议的一些接口函数API,用户可以方便的实现这个应用层协议。
使用unIP协议栈创建基于TCP协议的服务器的流程如下。
如图6所示是创建TCP服务器的主循环流程。
首先初始化unIP协议栈,然后使用DM9000创建一个网络接口,添加至unIP协议栈内,并将其设置为unIP协议栈的默认网络接口。
然后申请创建一个TCP协议控制块,并将其配置为监听本机80端口(Web服务的默认端口),同时设置好TCP协议接受连接的回调函数。
回调函数在这里是指用户将自己定义的函数的函数指针通过某种方式告诉协议栈,使得协议栈在适当的时候可以通过这个函数指针调用该函数,从而达到执行用户操作的目的。
图6主程序流程
此后,程序在主循环中不断检测DM9000是否有新的数据输入,并将接收到的数据包送至协议栈处理。
处理过程是协议栈内部完成的,用户无需关心。
当TCP的三次握手完成之后,协议栈会自动调用用户设置好的接受连接回调函数,交由应用层处理连接建立后的事宜。
协议栈对接收到的remote数据的处理流程如图7所示。
这个流程的大部分是在unIP这个精简TCP/IP协议栈中实现的,只有红色的部分是用户直接接触的。
图7WebServer协议栈处理流程
用户需要注意的地方是其中几个关键的回调函数:
http_accept():
该函数执行客户端与服务器端三次握手之后服务器程序对该连接的确认工作。
http_send():
当服务器端发送的数据被Remote端确认,服务器收到确认信号之后就会调用该函数以处理没有发送完毕的数据。
即文件的续传发生在这里。
http_recv():
当服务器端接收到来自于Remote端的数据,会引发该函数的调用。
http_poll():
当某个连接长期处于空闲状态时,此函数将被协议栈调用。
即所谓的超时处理。
send_data():
此函数用于服务器端向remote端发送数据。
做为服务器,发送数据一般都是在接收到客户端的请求之后根据需要才执行的。
整个过程可以用图8所示的流程大致表示。
图8HTTP协议处理流程
至此,一个基于TCP协议的服务器即被建立。
它不断监听某个特定端口流入的数据,并对数据做出响应。
在本系统中,以上回调函数均定义在httpd.c文件中,用来处理客户端与Web服务器之间建立连接过程中发生的不同事件。
5.2.3应用层处理
HTTP协议是一个简单的应用层协议。
客户进程建立一条同服务器进程的TCP连接,然后发出请求并读取服务器进程的响应。
同时,HTTP协议是一种无状态的协议。
即是说,当一个客户端向服务器端发出请求,然后Web服务器返回响应(response),连接就被关闭了,在服务器端不保留连接的有关信息。
HTTP遵循请求(Request)/应答(Response)模型。
Web浏览器向Web服务器发送请求,Web服务器处理请求并返回适当的应答。
所有HTTP连接都被构造成一套请求和应答。
在本系统中,当TCP层接收到客户端发送的请求数据,将自动调用http_recv函数,通知HTTP应用层处理。
http_recv函数处理流程如图9所示。
本系统中只对HTTP协议中的GET方法进行处理。
其中,“客户端请求分析程序”主要完成对客户端发送的数据的分析,并获取网页数据用以回传给客户端。
这部分也是实现家电控制的程序。
程序从客户端的请求数据中的URL字符串中提取按钮信息,并根据按钮的不同判断被控制的家电类型。
代码如下:
//上面省略URL分析程序
fs_open("
/opt.html"
&
file);
//打开网页文件,准备回传给客户端显示
retweb=Web_Init(&
file,1);
//
tempstr+=strlen(tempstr)+1;
opt=StrToInt(tempstr);
//将按钮名称转换为数字
switch(opt){case10:
//“空调打开”按钮
case11:
//“空调关闭”按钮device=AIR;
break;
case12:
//“灯光打开”按钮
case13:
//“灯光关闭”按钮device=LIGHT;
case14:
//“音乐打开”按钮case15:
//“音乐关闭”按钮
device=MUSIC;
}
PlaySnd(device,WAIT_OTHER_END);
//播放家电名称
if(opt%2){oprate=(u16_t)s_close[0];
//“关闭”按钮
*P_IOB_Buffer&
=~(0x0001<
<
device);
//对应IO口输出低电平
PlaySnd(CLOSE,WAIT_OTHER_END);
//播放“已关闭”}
else{oprate=(u16_t)s_open[0];
//“打开”按钮
*P_IOB_Buffer|=(0x0001<
//对应IO口输出高电平
PlaySnd(OPEN,WAIT_OTHER_END);
//播放“已打开”}
status[device]=oprate;
图9HTTP应用层数据处理流程
5.2.4服务器端网页文件的制作
对应于客户端向服务器发起的每一个请求,一般情况下服务器都会回传一个网页。
这些网页是事先制作好,并转换为二进制形式存储在SPCE061A内部的Flash中的。
制作方法如下:
首先使用Dreamweaver或者其他网页制作工具制作自己需要的首页index.html,以及控制页面opt.html,如图10所示。
图10网页制作
接着,打开以太网通讯模组网页转换工具(\\网络家电礼包\Code\Web_Server\WebFile\以太网通讯模组网页转换工具.exe),点击“AddFiles”按钮。
如图11所示。
图11网页转换
选择制作好的需要转换的网页文件(如果有图片,则一同选择),添加进转换列表,如图12所示。
图12添加网页到转换列表
点击“Convert”按钮,为转换后的文件选择一个保存路径以及文件名(假设叫做fsdata.c):
图13保存转换后的文件
点击“保存”,程序将完成转换工作。
关闭转换工具即可。
将得到的fsdata.c文件拷贝至工程目录,然后修改fs.c文件中的代码:
#include"
config.h"
fs.h"
fsdata.h"
APP/fsdata_leejian.c"
将这里修改为引用用户自行转换的文件将“#include“APP/fsdata_leejian.c””中的“APP/fsdata_leejian.c”修改为用户自己转换之后的文件名(如,fsdata.c)。
重新RebuildAll工程,则网页文件被替换成用户自己制作的。
需要注意的是,修改网页之后,用户还需要修改“客户端请求分析程序”,以配合网页实现对设备的控制。
参考文献
[1].张培仁,张志坚,高修峰,十六位单片机微处理器原理及应用(凌阳SPCE061A)[M],北京,清华大学出版社,2005.4
[2].Thearchitectureandkerneltechnologyofnetworkhouseholdappliance[M].2004.
[3].TheSocketcommunicationtechenologyandTCP/IPprinciple.[M].2005.
[4].周正,余萍.网页制作设计教程[M],北京:
国防工业出版社,2002.
[5].Intelligentanalyzingtechenology[M],2008
[6].张春峰,邹新杰,余张国.基于ATMEGA16的智能控制器的开发研制[J],微计算机信息,2007,23(8):
123-124.
[7].张震宇,王华.基于凌阳单片机的语音识别技术及应用[J],微计算机信息,2007,8-2:
23.
[8].李玉贤,欧阳斌林.基于SPCE061A单片机的语音识别系统的研究
优秀硕士学位论文库.
[9].潘锋,基于DM9000以太网控制器的网络家电控制系统[J],微计算机信息,2007.9
[10].唐荣霞,智能家居控制系统的设计与实现
[J],黑龙江信息,2009.
TheDesignofNetworkApplianceSystemBasedonSPCE061AMCU
WuXiaoYan
Abstract:
AccordingtovariousadvantagesoftheSPCE061,thispaperchoseSPCE061asterraceofthedesignprojecttodesigninternetappliance.UsingaD9000ethernetnetworktofinishaWebserver.Thisdesignhasacontrolledfunction.
Keywords:
SPCE061A;
ethernetnetwork;
Webserver,;
TCP/IPAgreement;
DM9000functionmoduledesign