内容发布更新时间 : 2024/11/15 5:51:26星期一 下面是文章的全部内容请认真阅读。
第3章系统硬件设计
(2) 电源电路设计
在实际应用中,很多时候终端节点的工作位置不确定,无法使用电源供 电,所以使用电池供电。电源设计电路与图3-4相比,仅多了一个电池插槽。 电池供电电路设计如图3-10所示。
Q
一
1-1 | 丄丄
三 T _______ ___ T
图3-10电池供电电路原理图
^
^ 一
终端节点的主要用于采集温湿度数据并上传,不需要同PC机直接通信, 所以在设计过程中,去掉了 USB转串口电路。为了调试设备测试,仍然给 它配备了网络状态指示灯。核心电路、复位电路、Debug下载电路以及网络 指示灯电路参考协调器电路的设计。
3.5路由器电路设计
终端节点一般分布于监测环境中,相距协调器较远,需要路由器作为数 据传输的中继。
路由器不需要和上位机通信,在电路设计时,省去了 USB转串口电路。 由于路由器本身也可以充当终端节点采集数据,只是带有路由功能的采集节 点。所以为路由器也加上传感器应用电路。复位电路、Debug下载电路、网 络指示灯电路以及传感器应用电路参考协调器电路的设计。
3.6本章小结
本章首先介绍了系统的整体方案,接下来对硬件平台的不同解决方案进 行比较、选择,确定了系统硬件平台,给出了系统的总体设计方案。最后分 别对协调器、路由器和终端节点的核心电路和外围电路原理图进行了设计。 外围电路主要设计了电源电路、复位电路、USB转串口电路、Debug下载 电路以及网络指示灯电路等。硬件总体设计图见附录1。
17
燕山大学本科毕业设计(论文)
第4章系统软件设计
本文设计的基于ZigBee无线网络的温湿度采集系统,用由协调器、路 由器和终端节点构成无线网络。协调器是整个网络的核心,负责收集网络中 传感器节点发来的数据,然后通过串口发送给PC机,上位机软件进行数据 处理显示并存储。系统软件设计主要包括:ZigBee协议栈的配置、网状网 程序设计、数据的收发、温湿度数据采集和上位机界面设计。
4.1系统软件平台概述
(1) ZigBee协议栈的选择
结合本文设计的系统,对现存的各种主流ZigBee协议栈进行了充分的 比较。当前比较主流的ZigBee协议栈主要有:1) TI的Z-Stack协议栈,它 是半开源的,网络层以下对于用户来说是透明的,只提供相应的API函数, 目前免费,功能强大;2) Ember的EmberZNet协议栈,需要付费才能使用; 3) Freescale的BEE KIT协议栈,需要付费才能使用。
考虑到开发成本、难易程度以及协议栈功能的大小等多种因素,本文选 择TI的最新的Z-Stack2007协议栈,它支持协调器、路由器以及终端节点三 种设备。
ZStack被ZigBee测试机构国家技术服务公司评为ZigBee联盟最高 业内水平,为
全球众多的ZigBee开发人员广泛使用。
(2) ZigBee设备开发软件的软件
本文米用 IAR Embedded Workbench for MCS-8051 V8.10 Evaluation (IAR-EW)作为系统的软件开发平台,该平台是一款集编译与调试于一体的 集成开发环境,它支持多种以8051为内核的芯片编程;编译的可执行代码 高效而紧凑;采用精简优化技术,生成的代码量;集成开发工具较为完整, 易于操作。IAR-EW还提供了 CC2530等SoC芯片的相关配置文件,可省去 相当一部分工作量。同时,它还支持CC2530开发套件的USB接口,方便 程序下载与调试。
(3) 上位机开发软件的选择
本文上位机显示存储界面使用LabVIEW2010设计。LabVIEW是由美国 国家仪器(NI)公司研制开发一种程序开发环境,它使用图形化编辑G语言编 写程序,产生的程序的是框图,编程简便,可读性强,方便了编程人员的设 计开发[19]。
18
第4章系统软件设计
4.2 ZigBee设备通信设计
要想实现ZigBee设备间的通信,首先要对ZigBee协议栈进行一些基本 的配置,了解协议栈的执行过程,然后选择ZigBee协议栈提供的网络间传 输模式构建相应的网络拓扑结构,接下来在设备应用层里编写自己的调用函 数,实现温湿度数据的采集与设备间数据的收发。
4.2.1 ZigBee协议栈配置
ZigBee网络中的各种操作需要利用协议栈各层所提供的原语操作来共 同完成。TI在推出CC2530开发平台时,向用户提供了自己的ZigBee协议 栈软件Z-StacLZ-Stack协议栈中提供了操作系统抽象层(OSAL)的协议栈调 度程序[2〇]。用
户在进行具体的应用开发时,只能够通过调用API接口来进行, 而无权知道
ZigBee协议栈实现的具体细节。本文使用
ZStack-CC2530-2.3.0-1.4.0 协议栈的 SampleApp 进行设计开发。
Z-Stack由main()函数开始执行,main()函数共做了 2件事:一是系统初 始化,
另外一件是开始执行轮转查询式操作系统,如图4-1所示。
图4-1 Z-Stack协议栈工作流程
如上图所示,用户自己添加的应用任务程序在Zstack中的调用过程为:
19
燕山大学本科毕业设计(论文)
main()-->osal_init_system()-->osalInitTasks()-->SampleApp_Init()
(1) Z-Stack 入口
main()函数是OSAL操作系统执行的入口,从main()函数开始介绍。 int
{ osal_int_disable( INTS_ALL );
HAL_BOARD_INIT(); zmain_vdd_check(); InitBoard( OB_COLD ); HalDriverInit(); osal_nv_init( NULL ); ZMacInit(); zmain_ext_addr(); zgInit();
#ifndef NONWK afInit(); #endif
osal_init_system();
osal_int_enable( INTS_ALL ); InitBoard( OB_READY ); zmain_dev_info(); #ifdef LCD_SUPPORTED zmain_lcd_init(); #endif
#ifdef WDT_IN_PM1 WatchDogEnable( WDTIMX ); #endif
osal_start_system(); return 0;
}//main()
20
//关闭所有中断
//初始化系统时钟 //检查芯
片电压是否正常 //初始化 I/O,
LED、Timer 等 //初始化芯片各硬
件模块 //初始化Flash存储器 //初始化MAC层 //确定IEEE 64位地址 //初始化非易失变量
//让端点列表指针指向NULL //初始化操作系统 //使能全部中断 //最终板载初始化 //显示设备信息 //初始化LCD
//初始化WDT
//执行操作系统,不会返回 //不执行这里
第4章系统软件设计
main( void ) //文件目录 ZMain\\ZMain.c
21