基于ZigBee和LabVIEW的无线温度采集系统.docx
- 文档编号:9098727
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:47
- 大小:2.33MB
基于ZigBee和LabVIEW的无线温度采集系统.docx
《基于ZigBee和LabVIEW的无线温度采集系统.docx》由会员分享,可在线阅读,更多相关《基于ZigBee和LabVIEW的无线温度采集系统.docx(47页珍藏版)》请在冰豆网上搜索。
基于ZigBee和LabVIEW的无线温度采集系统
山东科技大学
电子技术综合实践报告
基于ZigBee和LabVIEW的无线温度采集系统
专业:
电子信息科学与技术
班级学号:
10级1班1001050934
学生姓名:
周文凯
指导教师:
设计时间:
2013-6
基于ZigBee和LabVIEW的无线温度采集系统
一、设计任务与要求
1、完成双机通信;
2、从机采集信息发送主机接收并且显示;
3、(发挥)上传PC显示控制;
4、(发挥)PC建立服务器网络发布;
5、(发挥)客户端通过网络访问、控制。
二、方案设计与论证
2.总体方案设计
温度检测系统有许多共同的特点环境复杂、测量点多、布线分散、现场离监控地点很远等等。
如果使用一般温度传感器采集温度数据就必须设计信号A/D转换电路、调理电路以及对应的接口电路,才能将传感器输出的模拟信号转换成数字信号。
再将数字信号送到单片机去处理。
这样,由于外围电路过多会使整个检测系统稳定性不高,系统收集最终数据偏差较大,又由于检测环境的复杂、测量点又多、信号传输距离较远及各种其他干扰的影响,随着时间的推移,检测系统的稳定性和可靠性逐日下降。
所以温度采集系统的设计的关键在于下面三部分:
主控单元的设计和温度传感器的选择以及无线模块的选择。
2.1系统方案比较与选择
为了更好的实现系统的可靠性与高性价比,我针对以上这些模块分别提出几种方案以供选择。
2.1.1控制器模块比较与论证
单片机是本系统的控制核心,其性能的优劣将从根本上影响整个系统的性能。
针对本系统特提出以下二种方案以供选择。
方案一采用STC89C52八位单片机。
STC89C52单片机的软件编程自由度比较大,可通过编程实现各种算法以及逻辑控制。
并且体积较小、引脚不多、方便安装使用。
可以单独对数字温度传感器DS18B20进行控制,另外STC89C52在工农业控制上也有着比较广泛的应用,编程技术和外围电路的配合使用都相当成熟。
但是使用51或者52单片机该系统的外围电路较多,实际操作比较麻烦,一次只能处理八位数据,计算比较繁琐。
方案二采用TI公司cc2430单片机。
CC2430是一颗真正的系统芯片(SoC)CMOS解决方案。
这种解决方案能够提高性能并满足以ZigBee为基础的2.4GHzISM波段应用,及对低成本,低功耗的要求。
它结合一个高性能2.4GHzDSSS(直接序列扩频)射频收发器核心和一颗工业级小巧高效的8051控制器。
CC2430的设计结合了8Kbyte的RAM及强大的外围模块,并且有3种不同的版本,他们是根据不同的闪存空间32,64和128kByte来优化复杂度与成本的组合。
CC2430包含一个DMA控制器。
8k字节静态RAM,其中的4k字节是超低功耗SRAM。
32k,64k或128k字节的片内Flash块提供在电路可编程非易失性存储器。
CC2430集成了4个振荡器用于系统时钟和定时操作:
一个32MHz晶体振荡器,一个16MHzRC-振荡器,一个可选的32.768kHz晶体振荡器和一个可选的32.768kHzRC振荡器。
综合对比之后选择方案二。
2.1.2温度传感器模块比较与论证
温度传感器用来进行温度采集,我们把采集到的数据送到单片机上,单片机处理后把数据通过一个无线模块发送到另一个无线模块。
所以在这个系统中温度传感器的作用是至关重要的。
我们需要做到数据采集的准确,并且能够保持系统的稳定。
有以下几个方案可以供选择。
方案一采用热敏电阻,可满足40摄氏度至90摄氏度测量范围。
但热敏电阻精度、重复性、可靠性较差。
对于检测1摄氏度的信号是不适用的。
方案二采用单片模拟量的温度传感器,比如AD590,LM35等。
但这些芯片输出的都是模拟信号,必须经过A/D转换后才能送给单片机,这样就使得测温装置的结构较复杂。
另外,这种测温装置的一根线上只能挂一个传感器,不能进行多点测量。
即使能实现,也要用到复杂的算法,一定程度上也增加了软件实现的难度。
方案三采用DS18B20来测量待测电的温度,数字温度传感器DS18B20输出的信号全数字化。
方便单片机处理及控制,省去传统的测温系统的很多外围电路。
且该芯片的物理化学性都很稳定,它能作为工业测温元件。
此元件线性度好,在0℃到100℃时,最大线形偏差小于1℃。
DS18B20的最大特点是单总线的数据传输,由数字温度计DS18B20和微控制器构成的温度采集系统,它可以直接输出温度的数字信号。
因此该温度采集系统的结构就比较简单,体积也较小。
综合对比之后选择方案三。
2.1.3无线模块的比较与论证
无线传输模块主要是用于主机和从机之间的数据传输,从机给主机发送温度数据。
方案一采用红外收发芯片NB9148、NB9149。
NB9148是通用红外遥控发射器集成芯片,该器件与NB9149配合使用可完成10个功能控制。
NB9148采用CMOS工艺制造,功耗极低,工作电压可在2.5-5.5V之间变化。
NB9148的集成度高工作时所需外围元件少,其振荡电路只需外接LC或陶瓷震荡器即可起振,并支持多键组合。
方案二采用nRF2401无线模块。
无线芯片nRF2401是单片射频收发芯片工作于2.4GHz、ISM频段,芯片内嵌晶体振荡器、地址解码器、时钟处理器、调制器、低噪声放大器、GFSK滤波器、功率放大器和频率合成器等功能模块,通信频道和输出功率可通过程序进行调配。
芯片能耗相当低,以-5dBm的功率发射的时侯,工作的电流只有10.5mA,接收的时侯工作电流只有18mA。
该无线模块有多种低功率工作模式,设计节能而且使用更为方便。
方案三采用ZigBee无线自组织网模块。
Zigbee是基于IEEE802.15.4标准的低功耗个域网协议。
根据这个协议规定的技术是一种短距离、低功耗的无线通信技术。
这一名称来源于蜜蜂的八字舞,由于蜜蜂(bee)是靠飞翔和“嗡嗡”(zig)地抖动翅膀的“舞蹈”来与同伴传递花粉所在方位信息,也就是说蜜蜂依靠这样的方式构成了群体中的通信网络。
其特点是近距离、低复杂度、自组织、低功耗、低数据速率、低成本。
主要适合用于自动控制和远程控制领域,可以嵌入各种设备。
简而言之,ZigBee就是一种便宜的,低功耗的近距离无线组网通讯技术。
ZigBee模块是已经包含了所有外围电路和完整协议栈的能够立即投入使用的产品,已经经过了厂家的优化设计,和老化测试,有一定的质量保证。
优秀可靠的zigBee应用“模块”具有在硬件上设计紧凑,体积小,贴片式焊盘设计,可以内置Chip或外置SMA天线,通讯距离从100米到1200米不等,还包含了ADC,DAC,比较器,多个IO,I2C等接口和用户的产品相对接。
软件上包含了完整的ZigBee协议栈,并有自己的PC上的配置工具,采用串口和用户产品进行通讯,并可以对模块进行发射功率,信道等网络拓扑参数的配置,使用起来简单快捷。
Zigbee自身的技术优势:
①.功耗:
在低耗电待机模式下,2节5号干电池可支持1个节点工作6~24个月,甚至更长。
这是Zigbee的突出优势。
相比较,蓝牙能工作数周、WiFi可工作数小时。
②.低成本:
通过大幅简化协议(不到蓝牙的1/10),降低了对通信控制器的要求,按预测分析,以8051的8位微控制器测算,全功能的主节点需要32KB代码,子功能节点少至4KB代码,而且Zigbee免协议专利费。
每块芯片的价格大约为2美元。
③.低速率:
Zigbee工作在20~250kbps的较低速率,分别提供250kbps(2.4GHz)、40kbps(915MHz)和20kbps(868MHz)的原始数据吞吐率,满足低速率传输数据的应用需求。
④.近距离:
传输范围一般介于10~100m之间,在增加RF发射功率后,亦可增加到1~3km。
这指的是相邻节点间的距离。
如果通过路由和节点间通信的接力,传输距离将可以更远。
⑤.短时延:
Zigbee的响应速度较快,一般从睡眠转入工作状态只需15ms,节点连接进入网络只需30ms,进一步节省了电能。
相比较,蓝牙需要3~10s、WiFi需要3s。
⑥.高容量:
Zigbee可采用星状、片状和网状网络结构,由一个主节点管理若干子节点,最多一个主节点可管理254个子节点;同时主节点还可由上一层网络节点管理,最多可组成65000个节点的大网。
⑦.高安全:
Zigbee提供了三级安全模式,包括无安全设定、使用接入控制清单(ACL)防止非法获取数据以及采用高级加密标准(AES128)的对称密码,以灵活确定其安全属性。
⑧.免执照频段:
采用直接序列扩频在工业科学医疗(ISM)频段,2.4GHz(全球)、915MHz(美国)和868MHz(欧洲)。
Zigbee性能分析:
①.数据速率比较低:
在2.4GHZ的频段只有250KB/S,而且只是链路上的速率,除掉帧头开销,信道竞争应答和重传,真正能被应用所利用的速率可能不足100KB/S,并且余下的速率可能要被邻近多个节点和同一个节点的多个应用所瓜分.因此不适合做视频之类事情。
②.可靠性:
在可靠性方面,zigbee有很多方面进行保证.物理层采用了扩频技术,能够在一定程度上抵抗干扰MAC曾,应用层(APS部分)有应答重传功能。
MAC层的CSMA机制使节点发送前先监听信道,可以起到避开干扰的作用。
当zigbee网络受到外界干扰,无法正常工作时,整个网络可以动态的切换到另一个工作信道上。
③.时延:
由于zigbee采用随机接入MAC层,且不支持时分复用的信道接入方式,因此不能很好的支持一些实时的业务。
④.能耗特性:
能耗特性是zigbee的一个技术优势,通常zigbee节点所承载的应用数据速率都比较低,在不需要通信是,节点可以进入很低功耗的休眠状态,此时能耗可能只有正常工作状态下的千分之一。
由于一般情况下,休眠时间占总运行时间的大部分,有时正常工作的时间还不到百分之一,因此达到很高的节能效果。
⑤.网络层特性:
zigbee大规模的组网能力强,因为zigbee底层采用了直扩技术,如果采用非信标模式,网络可以扩展得很大,为不需同步而且节点加入网络和重新加入网络的过程很快,一般可以做到1秒以内,甚至更快。
bluetooth通常需要3秒,在路由方面,zigbee支持可靠性很高的网状网的路由,所以可以布置范围很广的网络,并支持多播和广播特性,能够给丰富的应用带来有力的支持。
图4.2为zigbee的一个简单的网络架构,其中红色的为协调器,黄色节点为路由器,绿色节点为专用端设备
综合考虑后选择方案三。
2.1.4控制显示比较与论证
方案一采用LCD12864显示。
LCD12864为一块128X64点阵的LCD显示模块,模块上的LCM采用COG技术将控制(包括显存)、驱动器集成在LCM的玻璃上,接口简单、操作方便。
方案二采用LabVIEW显示控制。
LabVIEW是一种程序开发环境,由美国国家仪器(NI)公司研制开发的,类似于C和BASIC开发环境,但是LabVIEW与其他计算机语言的显著区别是:
其他计算机语言都是采用基于文本的语言产生代码,而LabVIEW使用的是图形化编辑语言G编写程序,产生的程序是框图的形式。
LabVIEW(LaboratoryVirtualinstrumentEngineeringWorkbench)是一种图形化的编程语言的开发环境,它广泛地被工业界、学术界和研究实验室所接受,视为一个标准的数据采集和仪器控制软件。
LabVIEW 集成了与满足GPIB、VXI、RS-232和RS-485协议的硬件及数据采集卡通讯的全部功能。
它还内置了便于应用TCP/IP、ActivX等软件标准的库函数。
这是一个功能强大且灵活的软件。
利用它可以方便地建立自己的虚拟仪器,其图形化的界面使得编程及使用过程都生动有趣。
图形化的程序语言,又称为“G”语言。
使用这种语言编程时,基本上不写程序代码,取而代之的是流程图或框图。
它尽可能利用了技术人员、科学家、工程师所熟悉的术语、图标和概念,因此,LabVIEW是一个面向最终用户的工具。
它可以增强你构建自己的科学和工程系统的能力,提供了实现仪器编程和数据采集系统的便捷途径。
使用它进行原理研究、设计、测试并实现仪器系统时,可以大大提高工作效率。
利用LabVIEW,可产生独立运行的可执行文件,它是一个真正的32位/64位编译器。
像许多重要的软件一样,LabVIEW提供了Windows、UNIX、Linux、Macintosh的多种版本。
它主要的方便就是,一个硬件的情况下,可以通过改变软件,就可以实现不同的仪器仪表的功能,非常方便,是相当于软件即硬件!
2.2系统设计
1.EndDevice通过DS18B20采集集温度信息;
2.EndDevice将采集的集温度信息经过ZigBee网络上传给coordinator;
3.Coordinator通过串口将温度信息上传PC;
4.LabVIEW通过串口接收温度信息处理后显示在控制界面。
三、电路设计原理
3.1ZigBee模块设计原理图
ZigBee模块设计原理图1
ZigBee模块设计原理图2
3.2LabVIEW模块设计原理图
LabVIEW模块设计原理图前面板
LabVIEW模块前面板用来显示以及控制平台,可以控制程序开始、停止,改变温度的低限制、高限制,图形显示的更新周期。
配置串口部分可以调整串口号、波特率、数据位、校验位、停止位、流控制。
当温度高于设置温度高限制或低于温度低限制则在报警区产生相应的报警。
LabVIEW模块设计原理图后面板
LabVIEW模块设计后面板,LabVIEW设计的核心部分,也是代码编写部分。
学习LabVIEW也是主要学习该部分的程序编写,根据上传温度数据的不同格式及位数要编写不同的温度转换程序。
四、软件编程
本章节首先介绍工程流程图,然后分模块介绍功能及编程。
因ZigBeeEndDeviceCoordinator建立网络程序复杂,仅给出主要控制DS18B20部分。
4.1程序流程图
4.1.1ZigBee部分程序流程图
4.1.2LabVIEW部分程序流程图
4.2DS18B20芯片分析
4.2.1单线数字温度计DSl820介绍
DSl820数字温度计提供9位(二进制)温度读数,指示器件的温度。
信息经过单线接口送入DSl820或从DSl820送出,因此从主机CPU到DSl820仅需一条线(和地线)DSl820的电源可以由数据线本身提供而不需要外部电源。
因为每一个DSl820在出厂时已经给定了唯一的序号,因此任意多个DSl820可以存放在同一条单线总线上这允许在许多不同的地方放置温度敏感器件。
DSl820的测量范围从-55℃到+125℃增量值为0.5可在ls(典型值)内把温度变换成数字。
DS18B20的存储方式.
18B20采用12位存贮温度值,最高位为符号位,负温度S=1,正温度S=0。
如:
0550H=+85度,0191H=+25.0625度,FC90H=-55度.
4.2.2DSl820工作过程及时序
DSl820工作过程中的协议如下
初始化RoM操作命令存储器操作命令处理数据
1初始化
单总线上的所有处理均从初始化开始
2ROM操作品令
总线主机检测到DSl820的存在便可以发出ROM操作命令之一这些命令如
3存储器操作命令
4时序主机使用时间隙(timeslots)来读写DSl820的数据位和写命令字的位
初始化
初始化时序
单片机t0时刻发送一复位脉冲(最短为480us的低电平信号),接着在tl时刻释放总线并进入接收状态,DS18B20在检测到总线的上升沿之后,等待15-60us,接着DS18B20在t2时刻发出存在脉冲(低电平持续60-240us),如图中虚线所示。
换句话说如果t2~t3之间信号电平如果为低,则说明DS18B20复位成功;否则失败。
写0时序写1时序
当单片机将总线t0时刻从高拉至低电平时,就产生写时间隙。
见上图,从t0时刻开始15us之内应将所需写的位送到总线上。
DS18B20在t0后15-60us间对总线采样,若低电平写入的位是0;若高电平,写入的位是1。
连续写2位间的间隙应大于1us。
5.读时序.
读时序
当单片机将总线t0时刻从高拉至低电平时,总线只须保持低电平4us之后,在t1时刻将总线拉高,产生读时间隙,读时间在t1时刻后t2时刻前有效,t2距t0为15us,也就是说,t2时刻前主机必须完成读位并在t0后的60us~120us内释放总线。
6.启动温度转换
三个步骤:
1、复位DS18B20
2、发出SkipROM命令(CCH)
3、发出ConvertT命令(44H)
7.读取温度
五个步骤:
1、复位DS18B20
2、发出SkipROM命令(CCH)
3、发出Read命令(BEH)
4、读两字节的温度
5、温度格式转换
4.3.1Z-stack协议栈介绍
ZigBee联盟于2005年公布了第一份ZigBee规范“ZigBeeSpecificationV1.0”。
ZigBee协议规范使用了IEEE802.15.4定义的物理层(PHY)和媒体介质访问层(MAC),并在此基础上定义了网络层(NWK)和应用层(APL)架构。
4.2.1ZigBee协议的体系结构
ZigBee的体系结构由称为层的各模块组成。
每一层为其上层提供特定的服务:
即由数据服务实体提供数据传输服务;管理实体提供所有的其他管理服务。
每个服务实体通过相应的服务接入点(SAP)为其上层提供一个接口,每个服务接入点通过服务原语来完成所对应的功能。
ZigBee协议的体系结构如下图所示:
物理层(PHY)
物理层定义了物理无线信道和MAC子层之间的接口,提供物理层数据服务和物理层管理服务。
物理层内容:
1)ZigBee的激活;2)当前信道的能量检测;3)接收链路服务质量信息;4)ZigBee信道接入方式;5)信道频率选择;6)数据传输和接收。
Ø介质接入控制子层(MAC)
MAC层负责处理所有的物理无线信道访问,并产生网络信号、同步信号;支持PAN连接和分离,提供两个对等MAC实体之间可靠的链路。
MAC层功能:
1)网络协调器产生信标;
2)与信标同步;
3)支持PAN(个域网)链路的建立和断开;
4)为设备的安全性提供支持;
5)信道接入方式采用免冲突载波检测多址接入(CSMA-CA)机制;
6)处理和维护保护时隙(GTS)机制;
7)在两个对等的MAC实体之间提供一个可靠的通信链路。
网络层(NWK)
ZigBee协议栈的核心部分在网络层。
网络层主要实现节点加入或离开网络、接收或抛弃其他节点、路由查找及传送数据等功能。
网络层功能:
1)网络发现;
2)网络形成;
3)允许设备连接;
4)路由器初始化;
5)设备同网络连接;
6)直接将设备同网络连接;
7)断开网络连接;
8)重新复位设备;
9)接收机同步;
10)信息库维护。
应用层(APL)
ZigBee应用层框架包括应用支持层(APS)、ZigBee设备对象(ZDO)和制造商所定义的应用对象。
应用支持层的功能包括:
维持绑定表、在绑定的设备之间传送消息。
ZigBee设备对象的功能包括:
定义设备在网络中的角色(如ZigBee协调器和终端设备),发起和响应绑定请求,在网络设备之间建立安全机制。
ZigBee设备对象还负责发现网络中的设备,并且决定向他们提供何种应用服务。
ZigBee应用层除了提供一些必要函数以及为网络层提供合适的服务接口外,一个重要的功能是应用者可在这层定义自己的应用对象。
应用程序框架(AF):
运行在ZigBee协议栈上的应用程序实际上就是厂商自定义的应用对象,并且遵循规范(profile)运行在端点1~240上。
在ZigBee应用中,提供2种标准服务类型:
键值对(KVP)或报文(MSG)
ZigBee设备对象(ZDO):
远程设备通过ZDO请求描述符信息,接收到这些请求时,ZDO会调用配置
对象获取相应描述符值。
另外,ZDO提供绑定服务。
协议栈体系分层架构与协议栈代码文件夹对应表如下:
栈体系分层架构
协议栈代码件
物理层(PHY)
硬件层目录(HAL)
介质接入控制子层(MAC)
链路层目录(MAC和Zmac)
网络层(NWK)
网络层目录(NWK)
应用支持层(APS)
网络层目录(NWK)
应用程序框架(AF)
配置文件目录(Profile)和应用程序(sapi)
ZigBee设备对象(ZDO)
设备对象目录(ZDO)
4.3.2Z-Stack体系架构(采用Z-stack1.4.31.2.1)
1Z-Stack软件架构
Z-Stack由main()函数开始执行,main()函数共做了2件事:
一是系统初始化,另外一件是开始执行轮转查询式操作系统,如下图所示:
Zstack\ZMain.c
ZSEGintmain(void)
{
osal_int_disable(INTS_ALL);//关闭所有中断
HAL_BOARD_INIT();//初始化系统时钟
zmain_vdd_check();//检查芯片电压是否正常
zmain_ram_init();//初始化堆栈
InitBoard(OB_COLD);//初始化I/O,LED、Timer等
HalDriverInit();//初始化芯片各硬件模块
osal_nv_init(NULL);//初始化Flash存储器
zmain_ext_addr();//确定IEEE地址
zgInit();//初始化非易失变量
ZMacInit();//初始化MAC层
osal_init_system();//初始化操作系统
osal_int_enable(INTS_ALL);//使能全部中断
InitBoard(OB_READY);//初始化按键
zmain_dev_info();//显示设备信息
osal_start_system();//执行操作系统
}
Z-Stack操作系统初始化
OSAL.c
byteosal_init_system(void)
{
osal_mem_init();//InitializetheMemoryAllocationSystem
osal_qHead=NULL;//Initializethemessagequeue
osalTimerInit();//Initiaizethetimers
osal_pwrmgr_init();//InitializethePowerManagementSystem
osalInitTasks();//初始化系统的任务
osal_mem_kick();//Setupefficientsearchforthefirstfreeblockofheap.
return(ZSUCCESS);
}
sapi.c
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 ZigBee LabVIEW 无线 温度 采集 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)