Microsoft   CSIP    WindowsMobile    MEDC    合作伙伴    联合实验室
设为首页    |    加到收藏夹          
欢迎光临

移动设备中ZigBee接口的实现

第1楼
2006-04-21
男
职务:版主
积分:8933
等级: 系统架构师
金钱: 0
精华: 12
帖子数:822
发帖数前10位(8)

移动设备中ZigBee接口的实现

引言

ZigBee是一种短距离、低速率无线网络技术,是一种介于RFIDBluetooth之间的技术提案。ZigBee一般采用IEEE 802.15.4收发器与ZigBee协议栈的组合,在数千个微小的节点之间相互协调实现通信。这些节点只需要很少的能量,以接力的方式通过无线电波将数据从一个传感器传到另一个节点,所以它们的通信效率非常高。因此,ZigBee在传感器网络、智能家居、工业自动化等领域有广泛的应用。市场研究公司NSR曾发布报告指出,首批具备ZigBee功能的产品将于2006年第一季在北美、欧洲和亚太地区展开,该机构并预估,到2010年,全球将可望部署5.8亿个ZigBee组件,成长非常快速。同样,市调机构In-Stat也曾在2005年发布新闻指出,五年内,ZigBee成长将超过200%但是,由于各家使用ZigBee技术的设备商采用的应用协议不同,所以目前市场上很少通用的测试设备,执行包括信道检测,数据监听,发送功率等功能。本文介绍了一种在移动设备中实现ZigBee接口的方法,以windows mobile 6.0 Professional为平台,在仿真器中给出了演示,同时,在HP iPaq rx3700的真机下测试通过。

 

1.      系统组成及功能

如图1所示,按照功能,系统可以分成ZigBee模块和移动设备这两个部分,它们通过串口进行通信。ZigBee模块负责IEEE 802.15.4信号的发送和接收,移动设备负责数据的处理,并向用户提供有好的UI

1系统组成框图

系统的功能如下:

1.      信道检测。通过扫描,完成ZigBee技术2.4GHz频段16个信道的状态检测,并返回给UI进行显示。

2.      发送/接收信道设置。用户通过UIZigBee模块发送指令,使之通过设定的信道来发送和接收数据。

3.      发送/接收数据。用户可以用文本方式或者HEX方式发送数据,并且可以用一定间隔进行连续发送。

4.      发送功率设置。用户发送数据时,通过UIZigBee模块发送指令,可以设定发送的功率大小。

 

2.      结构模型

2.1硬件结构模型

如图1所示,ZigBee模块选用FreescaleHCS08GB60MCUMC13192IEEE 802.15.4收发器,它们之间通过SPI接口进行通信。移动设备通过串口和ZigBee模块中的HCS08GB60进行通信。

2.2网络结构模型

ZigBee网络可以使用StarMeshMesh-Tree这三种拓扑结构,具体可以参考图2.

2 ZigBee网络拓扑结构模型

从成本上来考虑,无线部分采用了Freescale免费提供的SMACSimple MAC)。SMAC给出了物理层和MAC层的API函数,包括工作状态转换、信道选择、发送功率选择、时钟选择、信道能量和接收信号能量指示(RSSI)等等。该工程文件以Source的方式给出,而不是lib,且可以直接从Freescale网站上下载得到。

 

3.      软硬件设计平台

硬件设计软件采用经典的Protel99se,主要涉及ZigBee模块的设计。设计输出原理图和PCB图如下图3所示:

3 硬件设计输出图

嵌入式开发环境采用CodeWarrior for HCS08 V3.1,使用C语言和汇编语言进行开发。

移动设备使用windows mobile设备。具体开发环境为:Microsoft Visual Studio 2005+SP1+Windows Mobile 6 professional SDK+ .Net Compact Framework 2.0 SP2

 

4.      ZigBee模块程序流程

目前,嵌入式系统有三种主流架构解决方案:基于中断的多任务模拟、前后台系统和实时多任务操作系统。“中断模拟多任务”会导致系统丢失中断信息,大大破坏系统的稳定性,所以这种方法是不建议使用的。

多任务实时操作系统是目前最成熟而且最合理的解决方案,但是实时操作系统一般为第三方提供,需要付费,而且就像uCOS-II这样的开源系统也不再免费,若在没有获得许可的情况之下使用,可能会涉及到版权纠纷。

而自己开发实时操作系统,研发开销太大,另外,一些功能简单或者对实时性要求不高的系统,根本没有必要上实时操作系统。因此,在实际开发中,很有可能会采用简单的前后台系统。

前后台系统的基本概念是“前台中断,后台循环”。

前后台系统的基本思想是:硬件中断函数中只做非常少量而且是绝对必须的操作:如设置中断寄存器、保存数据寄存器等,然后置后台标志位,随即退出中断。这些操作称为“前台操作”。

而后台操作是一个开放中断的无限循环。在循环中检查各后台标志位,如果某一标志位被置位,则说明有中断发生,立即调用相应的中断服务任务,这些任务被称为“后台操作”。

ZigBee模块的嵌入式软件开发中,我们使用“前台中断,后台循环”的架构。主程序流程如下图4所示:

4主程序流程图

TargetInit()执行系统初始化操作主要包括HCS08IOUARTTimer等模块的初始化。ConfigInit()执行配置初始化操作,主要包括SMAC协议和串口通信协议配置。

ScheduleLoop()为主调度循环,根据状态来执行不同的任务,如下图5所示。其中的SYS_FEED_DOG()是指喂看门狗操作。

5 主调度循环流程图

5.      移动设备应用程序流程

在移动设备上运行的用户应用程序,主要执行信息交互和显示功能。进一步说,用户要通过UI将命令发送给ZigBee模块,同时,移动设备将ZigBee模块的情况通过UI呈现给用户。考虑到移动端开发的便捷性,windows mobile平台是一个不错的选择。在Microsoft Visual Studio 2005IDE下,安装一个最新的Windows Mobile 6 professional SDK,配合自带的Emulator就可以进行开发和调试。由于本人比较熟悉C++,所以我选用了native code进行开发,建立一个基于对话框的MFC工程,将需要的控件加入对话框,包括Edit Control, Static Text, ButtonCheck box等等。具体流程如下图6所示。

    6 移动设备应用程序流程图

其中的对话框初始化包括了界面的初始化,要强调的是串口的初始化。我们这里采用的串口参数如下:速率9600bps1个停止位,无奇偶校验。

 

6.      模拟器调试

测试时,采用windows mobile 6 professional emulator。同时,将PC机上的COM1口映射到emulator上,来进行串口通信。配置方法是,在emulator中,选择”File”下的”Configure”菜单,在”Peripherals””Serial port 0”的下拉条中,选择”COM1”。如图7所示:

7模拟器的串口映射

程序主界面如下图8所示:

 8 程序主界面

程序主界面的左上方是接收数据显示区,左下方是发送数据输入区。Receive Enable是接收允许操作,如果不选中的话,即使有数据接收到,也不会显示在界面上。Hex Format是指十六进制显示选项,考虑到某些发送数据或者接收数据采用十六进制形式,而非ASC码格式,所以提供了这个选项。界面的右方有”CH Scan””CH Set””Power Set””Data Send”四个按钮,分别执行信道扫描信道选择发送功率设置数据发送功能。界面下方的彩色滚动条是程序正常运行的指示。

 

7.      实物调试

由于本人手头没有windows mobile 6的设备,只有一个HP iPaq rx3700windows mobile2003se设备,因此无法将生成的可执行文件直接在设备上调试。好在VS2005下,我们可以方便地进行平台转换。虽然本工程是建立在windows mobile 6 professional SDKplatform之上的,但是也可以通过”change target platform”来改变调试目标平台。因此,我只要选择”Pocket PC 2003(ARMV4)”平台和”Pocket PC 2003 Device”就可以将程序下载到真机上进行调试了。实物测试如下图9所示,HP iPaq rx3700通过黑色的串口转接线和ZigBee模块相连。右边的ZigBee模块通过电池供电。

9实物测试图

目前,具备串口的windows mobile设备还是比较少的,但是,具备CF卡接口的windows mobile设备还是可以找到的。因此,我还做了一个CF卡接口的ZigBee模块,具体如下图10所示:

      10 CF卡接口的ZigBee模块

 

结束语

ZigBee是一种短距离、低速率无线网络技术,并且在无线传感器网络(WSN)等领域的应用越来越广泛。本文介绍了一种在移动设备中实现ZigBee接口的方法,以windows mobile 6.0 Professional为平台,在仿真器中给出了演示,同时,在HP iPaq rx3700的真机下测试通过。

 

Keep Rebuilding
2008-07-30 16:57 回复 | 引用 | 编辑 | Top

Re: 移动设备中ZigBee接口的实现

第2楼
2006-07-31
男
微软徽标认证服务
职务:管理员
积分:15859
等级: 技术总监
金钱: 4940
精华: 65
帖子数:2041
发帖数前10位(2)

我必须得支持一下这第一篇!dearsj加油!
 

我还是喜欢挑战!
2008-07-30 21:33 回复 | 引用 | 编辑 | Top

Re: 移动设备中ZigBee接口的实现

第3楼
2007-01-12
职务:超级版主
积分:13345
等级: 技术总监
金钱: 0
精华: 4
帖子数:762
发帖数前10位(9)

喜欢这种图文并茂的~ 支持!
 

Freesc Huang - .Net Micro Framework

MII-MS embedded lab AT CSIP

blog:http://fox23.cnblogs.com

website: microframework.cn
2008-07-31 01:06 回复 | 引用 | 编辑 | Top

Re: 移动设备中ZigBee接口的实现

第4楼
2006-04-21
男
职务:版主
积分:8933
等级: 系统架构师
金钱: 0
精华: 12
帖子数:823
发帖数前10位(8)

感谢楼上两位版主的支持,继续加油,呵呵!
 

Keep Rebuilding
2008-07-31 08:41 回复 | 引用 | 编辑 | Top

Re: 移动设备中ZigBee接口的实现

第5楼
2006-06-06
职务:普通用户
积分:13370
等级: 技术总监
金钱: 0
精华: 38
帖子数:903
发帖数前10位(6)

强烈支持!
支持蓝牙的移动设备还是很多的,而且大都支持串口的Profile。而且蓝牙转串口的模块成本应该和CF转串口的差不多。可以将你的模块通过蓝牙连接到移动设备,呵呵,这样对移动设备的适应面要广一些。在一个小模块上集成两个rf,对制版要求要高一些了。
 
2008-07-31 08:48 回复 | 引用 | 编辑 | Top

Re: 移动设备中ZigBee接口的实现

第6楼
2006-04-21
男
职务:版主
积分:8933
等级: 系统架构师
金钱: 0
精华: 12
帖子数:823
发帖数前10位(8)

感谢偶像MacintoshM的支持!

你的建议不错,目前移动设备中支持Bluetooth的很常见,但是外留串口、CF口的移动设备越来越少。

做两个RF模块的话,实现的成本增加了,而且还需要做通信协议栈。
 

Keep Rebuilding
2008-07-31 09:11 回复 | 引用 | 编辑 | Top

Re: 移动设备中ZigBee接口的实现

第7楼
2008-02-26
男
职务:普通用户
积分:235
等级: 普通用户
金钱: 0
精华: 0
帖子数:100
发帖数前75位(53)

如此高深~~
 
2008-07-31 17:27 回复 | 引用 | 编辑 | Top

Re: 移动设备中ZigBee接口的实现

第8楼
2007-07-10
女
职务:版主
积分:2075
等级: 高级程序员三级
金钱: 0
精华: 4
帖子数:365
发帖数前25位(20)

不懂,看看
 
2008-08-01 11:02 回复 | 引用 | 编辑 | Top

Re: 移动设备中ZigBee接口的实现

第9楼
2008-10-02
男
职务:普通
积分:11
等级: 初级程序员一级
金钱: 0
精华: 0
帖子数:2
无等级(0)

对学些WM 也是一次机会啊。
 
2008-10-02 07:56 回复 | 引用 | 编辑 | Top



Copy Right© CSIP 信息产业部软件与集成电路促进中心 All Rights Reserved 版权所有 Winbile v2.0 (Debug Build: 0.18848) 京ICP备06020771号
© 2010
. 页面执行: 0.625秒. 内存使用: 224.7MB. 32 次数据库查询.