【《农业灾害监测系统的软件设计实现及调试分析案例》4600字】_第1页
【《农业灾害监测系统的软件设计实现及调试分析案例》4600字】_第2页
【《农业灾害监测系统的软件设计实现及调试分析案例》4600字】_第3页
【《农业灾害监测系统的软件设计实现及调试分析案例》4600字】_第4页
【《农业灾害监测系统的软件设计实现及调试分析案例》4600字】_第5页
已阅读5页,还剩11页未读, 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第第页农业灾害监测系统的软件设计实现及调试分析案例目录TOC\o"1-3"\h\u21621农业灾害监测系统的软件设计实现及调试分析案例 1151601.1下位机软件设计 1223511.1.1ZigBee通信协议 1279931.1.2.Zigbee节点开发环境 366511.1.3.Zigbee节点的设计 3324511.1.4温湿度模块的程序程序设计 4111571.1.4土壤温湿度模块与雨水模块的程序设计 75321.1.5数字光照模块的程序设计 9236541.2上位机软件设计 1256171.3系统演示 13107481.4实物功能测试 14该章主要是本系统软件部分的设计及系统的调试,其中包含了各个模块的代码编写及代码的整合,也详细介绍了该系统的调试过程及结果实物图。1.1下位机软件设计1.1.1ZigBee通信协议(1)Zigbee协议的实现ZigBee协议栈建立在PHY层和MAC子层之上,实现了网络层(networklayer,NWK)和应用层(applicationlayer,APL)。应用层提供应用支持子层(应用支持子层,APS)和ZigBee设备对象(ZigBee设备对象,ZDO)。在协议栈中,上层实现的功能对于下层来说是未知的,上层可以调用下层提供的函数来实现一定的功能。Zigbee协议栈的构成如图1.1所示。图1.1:Zigbee协议栈的构成在Zigbee网络中,一共分为4层结构,如图2。1)物理层(PHYLayer)由IEEE802.15.4规范定义,物理层定义了物理无线信道和MAC子层之间的接口,提供物理层数据服务和物理层管理服务。PHY数据服务负责在无线信道上接收发送数据,PHY管理服务维护一个由物理层相关数据组成的数据库。2)介质访问控制层(MediaAccessControlLayer)由IEEE802.15.4规范定义,MAC层负责处理所有的物理无线信道的访问,同时产生网络信号、同步信号;提供点对点通信数据确认(Per-hopAcknowledgements)。3)网络层(NetworkLayer)Zigbee协议的核心在于网络层(NWK)。网络层主要实现的是节点加入或者离开网络、接收或者抛弃其他节点、路由查找以及数据传送等功能,支持多种路由的算法,同时也支持网格、树形等多种拓扑结构。4)应用层(ApplicationLayer)应用层主要由Zigbee设备对象、应用支持子层以及制造商定义的应用对象组成。设备对象主要功能是定义网络设备角色、提供设备安全机制、发现设备并提供应用服务、发起或者响应绑定请求。应用支持子层主要功能包括绑定表维持、绑定设备间数据互传。 除了4层结构以外,还有应用程序框架(AF)。 应用程序框架(AF) 应用对象驻留环境,通过APSDE-SAP接发数据的同时通过ZD0接口实现应用对象管理。当Zigbee协议栈运行时,设备发起通讯,数据自上而下传递,依次经过应用层、网络层、MAC层、物理层。当数据在物理层被处理过后,通过硬件设备的无线模块调制发送出去,在接收时解调信息,然后再按照自下而上的顺序分别通过4层结构向上传递并对信息进行分解。1.1.2.Zigbee节点开发环境首先需要下载并安装IAREmbeddedWorkbench,然后安装SmartRFFlashProgrammer和仿真器的驱动,在IAR中ZigBee编写程序代码并编译调试。1.1.3.Zigbee节点的设计因为ZigBee有着多层模型,每一层都需要执行大量的代码,为了处理这些产生的许多并发源码,需要每一层都要一个事件处理函数来专门处理当前层面的程序和事件,这个时候便需要ZigBee协议栈中的OSAL系统来完成这个操作。OSAL是一个程序实时操作系统,它每一层都有相对应的任务处理函数能够管理每个不同层的任务事件,当某个层发生了事件或是产生了改动,当前层的任务处理函数便会对这些事件进行处理,能够让整个ZigBee协议栈稳定有序的运行,节省资源和减少问题的出现。OSAL系统是一条任务处理链表,每个链表节点都用来存放不同层需要处理的事件,根据层之间的优先级来对不同层发生的事件进行排序然后插入到任务链表当中,链表会从链表头开始执行,所以高优先级的事件会排在链表头,低一级的排在其次,以此类推,优先级低的事件会排在链表末尾。链表会在系统启动时便生成,因为链表是整个系统的工作核心,所以不能够销毁破坏或者手动关闭,只能够在系统关闭时自动释放。本次设计是在单独的农业生产区域,不需要太多节点来连接传感器或覆盖太大的范围,所以我们使用最简易的星型拓扑来建立系统网络,星型拓扑中有协调器和终端节点,以协调器作为信息传递的唯一通道。图1.2IAR中选择节点类型图在workspace中选择协调器或者终端节点对不同.c文件进行编译可以得到不同的可执行文件。在编写出的sampleapp.c中运行SampleApp_Init()初始化函数 用SampleApp_Init()函数用来对我们使用的传感器的引脚、UART、LED灯等进行初始化,设定好数值初始化后才能够使用传感器。进入SampleApp_ProccessEvent()函数来判断处理触发事件进入SampleApp_ProccessEvent()函数后调用osal_msg_receive()函数判断是哪一种事件被触发,然后通过switch语句选择执行功能。在SampleApp_MessageMSGCB()里面的switch判断语句中通过接受发送过来的数据包来判断是三种通讯模式中的哪一种,然后在case中使用对应的方法处理数据包。广播发送函数为SampleApp_SendPeriodicMessage(),组播发送函数为SampleApp_SendFlashMessage(),点播发送函数为SampleApp_Send_P2P_Message(),三个通讯函数都是通过AF层的AF_DataRequest()函数设定不同的参数来对无线传输模式进行改动。1.1.4温湿度模块的程序程序设计数据传送正确时校验和数据等于8bit湿度整数数据+8bit湿度小数数据+8bit温度整数数据+8bit温度小数数据所得结果的末8位。DHT11是单总线通信特点,既要输出也要输入。图1.3DHT11数据传输的全过程时序图图1.4温湿度采集过程主机发送信号和DHT11相应信号时序图通信分成3部分:开始信号(MCU>DHT11)响应信号(DHT11>MCU)数据信号(DHT11>MCU)图1.5数字0信号的图示图1.6数字1信号的图示要读取温湿度,首先要修改GPIO为输出模式,初始电平为高电平,模式为输出模式,然后初始化GPIO口。将初始电平设为高电平,等待用户MCU发送开始信号,电平拉低延时20ms,再将电平拉高延时30us等待DHT响应输出。然后修改GPIO为输入模式并初始化,while循环等待电平被拉低,表示有响应,再继续while循环等待被重新拉高准备接受数据,最后一个while循环等待重新被拉低代表开始接受数据。每次接受40bit(5字节)数据0或1,将每8个位组合为一个字符,把接受到的数据存储在数组当中。通过5次for循环来完成接受数据,分别接受湿度整数数据、湿度小数数据、温度整数数据、温度小数数据和校验和。这在5次for循环中每次要接受8个位组成一个字节,所以在内部需要一个循环7次的for循环来读取8次信息。首先设置一个变量data来存放数据,初始等于0,然后在子for循环中while循环等待50us低电平结束然后开始延时40~60us,接下来判断数据是0或1,if判断如果是数据1则进行移位操作,每次for循环都增加一位位移,数据传送结束上啦电阻拉高总线,while等待剩余高电平持续完毕。在5次for循环中,每次循环都将数据添加到数组中,以便计算校验和。for循环全部结束后开始计算校验和,将湿度整数数据+湿度小数数据+温度整数数据+温度小数数据和校验和做笔记,如果相等则函数正常结束功能能够正常运行。因为系统时钟精度的问题所以,使用while循环来替代粗略延时,来避免采集信号时因为延时太短或者延时太长而出错。图1.7温湿度模块数据采集分析流程图1.1.4土壤温湿度模块与雨水模块的程序设计土壤湿度模块与雨水模块和温湿度检测模块工作原理相似,但是他们都有这不相同的阻值,我们通过ADC模式转换来将采集到的环境模拟电压信息转换成数字信号来方便我们观察和处理。ADC能够将模拟信号转换为数字信号,模拟信号是通过模块采集到的环境信息,模拟信号有正弦波、三角波和噪声波等,在数值上是连续的,数量可以无限多。数字信号以二进制为代表,数值是离散的不连续,所以数值的数量是有限的,像高清数字电视、MP3、JPA和PNG等文件都是数字信号。图1.8CC2530的I/O引脚的设置寄存器将IO口模式设置为模拟外设IO。图1.9CC2530的ADC数据位寄存器数据位寄存器用来确保数据的准确性。图1.10CC2530的ADC转换完成标志位寄存器ADC转换完成标志位寄存器用来判断ADC是否已经转换完成。因为ADC的函数需要在#defineHAL_ADC==TRUE下才能编译,所以需要设置ADC的宏定义编译预处理来添加HAL_ADC。图1.11CC2530的ADC读取函数条件编译图1.12设置ADC的宏定义添加完成之后,ADC采样函数便可以正常编译运行功能。图1.13通过ADC的过程代码ADC模数转换后的数据信息通过ZigBee协议栈通过函数传送给协调器。1.1.5数字光照模块的程序设计BH1750传感器用于检测光照强度生产于日本罗姆(ROHM)半导体,因为光敏电阻不精确,所以我们选择BH1750FVI来作为光照模块。BH1750FVI是数字式环境光传感IC,有着I2C数字接口采用的是总线通信模式,具有低功耗的特点,而且能够屏蔽50/60Hz频率的光照变化干扰。图1.14I2C的通信的开始与结束的时序图图1.15I2C通信开始与结束封装函数根据i2c时序图来编写代码。图1.16I2C通信的发送信号时序图与代码实现的封装函数信息采集和温湿度有一些类似,首先设置引脚输出模式,初始化电平为高电平,CC2530等待BH1750的响应,和温湿度采集相似的这种应答方式能够保证程序的正常运行。然后改变引脚输入,CC2530读取到BH1750发送的数据,通过for循环8次将8个bit数据变成一个字节来完成数据测传输。可以从时序图中知道数据是否接收成功,当电平被拉低表示有响应,当电平被拉高表示准备接受数据,电平重新被拉低表示开始接受数据,低电平接受后开始判断并保存信息。功能函数编写完成后,便可以发送采集命令来读取转换和写入数据,来获得光照强度数据。图1.17BH1750FVI的部分采集模式指令H分辨率能够在采集的时候有效降低噪点,有着优秀的测量精度。图1.18I2C接口的BH1750FVI通讯流程图图1.19光照模块工作流程图1.2上位机软件设计打开电脑,协调器会将数据上传到电脑,测得的数据就会在zigbeeapp.exe上显示出来,显示实时数据。可以在上位机手动设定阙值,当所测得数值超过阙值时,报警系统就会启动,蜂鸣器和报警等就会以一定频率的响起和闪烁。其流程图如图4-2所示图4-26上位机流程图1.3系统演示物联网农业灾害监测系统系统是由监测节点,协调器以及上位机三个方面组成。其中监测节点和协调器之间的通信方式是ZigBee通信。而上位机和协调器之间则是采用的串口通信通信。具体的系统构成和界面如5-1图所示。5-1图农业灾害环境信息检测硬件构成图(1)节点工作流程节点开始工作后,根据协调器输入的数据和信号进行确定报警状态,然后节点的CC2530模块向气体检测电路和报警电路发出命令,来检测农业生产区域内的环境信息和报警状态。当检测节点CC2530检测完成后,再将结果发送给协调器,然后就会显示出农业大棚的环境信息,若发生报警命令,则蜂鸣器和LED灯开始工作,执行完以上操作之后,至此一个工作周期结束,其他工作周期重复执行以上工作,直至断电后结束。(2)协调器工作流程协调器开始工作后,当接收到节点发送的数据之后,CC2530模块会控制串口模块,传输到上位机显示界面。通知上位机显示端更新一次界面,当收到上位机的命令后,CC2530将会利用ZigBee通信发生给检测节点更新一次农业生产区域内的环境信息,协调器将会对节点发送的数据进行判断是否有超标,如果有报警状态,则蜂鸣器和LED开始工作,协调器的一个工作周期结束,其他工作周期重复执行以上工作,直至断电后结束。(3)上位机显示界面工作流程上位机显示界面工作时会根据协调器发送的数据,通过通信协议协调出农业生产区域的环境信息和报警状态,然后解析出的数据会显示到上位机显示界面。会显示出农业生产区域的温度、湿度、光照度和土壤湿度,并且还会显示历史数据。以上操作完成后,协调器的一个工作周期结束,3秒更新一次数据,直至电脑端断电结束。1.4实物功能测试(1)物联网农业灾害监测系统功能测试测试开始时农业生产区域内环境信息的数值分别是:温度26℃、湿度78%、土壤湿度05%、光线90%。设置的范围分别是:温度13-33℃、湿度30-80%、土壤湿度02-20%、光线30-96%。入5-3图所示。5-3图

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论