手机端
or

欢迎您加入我爱方案网QQ群

1.智能产品外包服务群(311606115)
2.嵌入式项目开发群(491609563)

嵌入式智能家居系统网关设计

唐伟; 周祖德| 无线通信,网关,射频,ARM| 2010-11-29
1359 收藏
分享到: 
每日精选
热门推荐

【中心议题】

  • 研究设计了一种基于ARM处理器S3C44B0uCOS的无线家庭网关的软硬件系统
  • 通过浏览网页并进行相关操作实现对家电的远程控制

【解决方案】

  • 硬件上使用CC2500射频模块,在家庭内部实现自组织无线通信
  • uCOS上成功移植lwip网络协议栈

随着社会信息化和家庭网络化的飞速发展,越来越多的家庭开始追求远程控制家电的高质量生活,家庭网关是整个家庭网络的核心,主要实现Internet接入、远程控制,以及实现协议转换连接家庭内部异构网络的功能。目前基于PC方案的家庭网关不仅成本高,而且要求计算机一直处于开机可通信的状态,因此,对于普通用户,家庭网关应采用廉价的嵌入式CPU,但若采用8位或16位单片机,由于速度慢且资源有限,不能实现复杂的控制,效果不理想。

因此,S3C44B0作为硬件平台,家庭内部通过CC2500射频自组织无线网络,通过移植嵌入式操作系统uCOS和嵌入式TCPIP嵌入式栈lwip,并开发相应驱动程序和网络通信程序,通过浏览网页并进行相关操作实现对家电的远程控制。

1 系统硬件结构

1.1 系统硬件整体结构

采用S3C44B0作为主芯片,以太网卡控制器采用流行的RTL8019,通过SPI接口的CC2500射频芯片与家庭无线自组织网络进行射频通信,网关完成从外网的TCPIP协议到内网的自组织网络协议的相互转换。系统硬件结构如图1所示,图中, 1, 2,n均为无线节点。

 

1. 2 CC2500芯片

CC2500是一种低成本真正单片的2. 4 GHz收发器,S3C44B0采用四线制的SPI通信,硬件连接非常简单。CC2500提供64 B的先进先出FIFO硬堆栈,GDO0引脚在有数据到来和发送数据时会有电平变化,于是将它与S3C44B0的外部中断引脚连接,来产生外部中断。CPU收到中断信号后就可以通过SPI去读CC2500的接收FIFO,完成无线数据的接收。当要发送无线数据时,将要发送的数据通过SPI口写到CC2500的发送FIFO,并通过SPI口向CC2500发送一个发送命令,这时CC2500便完成无线数据的发送。

1.3 以太网卡芯片

系统使用了RTL8019AS 10M ISA网卡芯片接入以太网。RTL8019AS是一款性价比很高的网卡芯片:NE2000兼容,软件移植性好;接口简单,不用转换芯片,PCI-ISA; S3C44B0RTL8019的电路设计相对来说比较简单,只需要连接数据线、地址选通和中断等信号线。

2 系统软件设计

2.1 软件的整体结构

该设计采用流行的免费开源嵌入式实时操作系统uCOS和嵌入式TCPIP协议栈lwip作为应用程序开发和运行平台。嵌入式无线网关接收浏览器客户端的请求信息,对协议进行转换,把这些控制信息加工成无线自组网络的数据帧格式,然后通过CC2500射频模块把控制信息通过自组织网络传递到目标家电,完成对家电的远程控制。家电状态变化时会把状态信息通过自组织网络反馈到网关,如当浏览器客户端请求查询咖啡机状态时,网关把状态信息传递给浏览器客户端。

网关上运行两个任务,一个是HTTP网络通信任务,它用来与外网通信,其软件流程图如图2所示;另一个是无线射频收发任务,其软件流程图如图3所示,它负责与内部自组织网络通信。

 

2.2 操作系统的移植

在嵌入式平台的构建中,操作系统移植是关键的一步。该设计用ADS1. 2集成开发环境在ARM7上移植uCOS操作系统。根据uCOS的内部结构处理器的细节,只需要修改与硬件相关的3个文件OS_CPU.HOS_CPU. COS_CPU.ASM,来实现与处理器相关数据类型的处理,如中断处理、堆栈处理、任务调度和异常处理等。

2.3 嵌入式TCP/IP协议lwipuCOS上的实现

2. 3. 1 操作系统抽象层

操作系统抽象层的实现是改写sys_arch. c, uCOS平台上实现信号量邮箱的相关操作,具体实现步骤如下:

(1)void sys_init(void)。初始化sys_arch层。

(2)sys_sem_t sys_sem_new(u8_t count)。建立并返回一个新的信号量。

(3)void sys_sem_free(sys_sem_t sem)。释放信号量。

(4)void sys_sem_signal(sys_sem_st sem)。发送一个信号。

 

(5)U32 sys_arch_sem_wait(sys_sem_t sem,u32_t timeout)。等待指定的信号并阻塞。

邮箱相关操作参照上述信号量的实现方法。

2. 3. 2 硬件抽象层

硬件抽象层的实现是改写etherneti.f c文件,具体实现步骤如下:

(1)ethernetif_init()。初始化底层函数。

(2)low_level_output()。链路层发送函数。

(3)low_level_init()。网卡初始化函数。

(4)EMACinit()。网卡初始化的实际完成者。

(5)ethernetif_input()。实现接收进程。

(6)low_level_input()。得到一整帧数据[3]

2. 4 嵌入式W eb的实现

Web服务器首先创建一个基于TCPSocke,t然后绑定自己的IP和端口到这个Socke,t监听

80端口,阻塞式接受连接,当接收浏览器请求时,对其进行分析,通过GET请求若没有从客户端传来参数,则调用http_sever()函数,取得设备的当前参数值显示给客户端浏览器,用户可以通过界面设置家电的新参数,发回给Web服务器。具体的实现过程为:网页采用HTML格式存放在数组中,当浏览器请求网关时,网关处理这个请求然后把HTML格式的数组发送到浏览器,于是浏览器开始解析这段HTML并生成一个页面,这个页面上含有浏览器所有允许的操作。

2.5 网关协议转换过程

无线自组织网络的帧格式如图4所示。

0xAA0x55是无线自组织网络的帧头,源地址标识数据帧的源头,目的地址标识数据帧的去向,无线节点收到数据帧后对数据帧中的目的地址信息进行校验,若是目的地址即为此无线节点地址,则接收该数据帧并处理,否则转发该无线数据帧。CRC采用数据帧所有字节相加取低八位的方式。

 

网关的最大功能之一是进行协议转换,无线网关连接的是两种不同的异构网络,对外是互联网,对内是无线自组织网络。要想用浏览网页并进行相关操作的方式控制家电,则需要将这些控制信息的帧转换成无线自组织网络的帧格式,同样,要想家电的状态能通过网页显示给用户,则需要把无线帧格式转换成IP帧格式。这就是网关的协议转换功能。

3 系统调试

3.1 动态刷新的实现

由于HTTP协议是一个浏览器发送请求服务器才响应的协议,这样当人们需要实时显示家电的状态时就是难点了,因为需要浏览器去主动请求,服务器才被动响应。笔者采取的做法是:当客户端需要实时显示家电的状态时,就发送一个参数到网关,网关判断这个参数后通过lwip协议发送一段Java代码给浏览器,这段Java代码的功能就是让浏览器每隔1 s就主动请求一次网关,于是浏览器与网关之间建立了一个Socket套接字,它们就可以通过这个套接字进行通信了,例如,当网关有咖啡机的新状态时就会把此状态发送给浏览器,至此状态刷新问题得以解决。

3.2 多个浏览器同时操控同一设备的问题

如何处理同一时刻有多个远程客户端要求控制同一家电的情况,显然此时不能赋给每个客户端控制的权限,因为这样的话对家电的控制就会出现混乱。对于这种情况,笔者采用两种方式来处理:一是在客户端部分设置观看和操作两种权限,对只有观看权限的用户,不允许对家电操作;二是在ARM,对同一时刻有多个具有操作权限的远程客户端要求控制同一家电的情况,采取先访问权限最高的原则,只赋给最先连接上的用户可操作的权限,其他用户只给观看的权限,防止操作上的冲突。

4 结论

笔者给出了一个基于ARM处理器S3C44B0XuCOS的无线家电网关的软硬件设计。硬件上引入了CC2500射频模块,符合信息家电的发展趋势,还可以随时随地通过浏览网页并进行相关操作的方式对家电进行远程控制,该网关结构简单,造价低廉,已在广东亿龙家电信息平台试用。

深圳市中电网络技术有限公司 Copyright© www.52solution.com 粤ICP备10202284号