网箱养殖多参数无线监控系统的研究与设计_第1页
网箱养殖多参数无线监控系统的研究与设计_第2页
网箱养殖多参数无线监控系统的研究与设计_第3页
网箱养殖多参数无线监控系统的研究与设计_第4页
网箱养殖多参数无线监控系统的研究与设计_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

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

文档简介

硕 士 学 位 论 文Thesis中文论文题目: 网箱养殖多参数无线监控系统的研究与设计 英文论文题目: ResearchandDesignofMulti-parameter WirelessMonitoringSysteminCageCulture 学科专业: 控制理论与控制工程 摘 要中国是世界上最大的渔业生产国,然而由于对渔业资源的过度捕捞,国家渔业总产量增长率呈下降趋势,因此,发展水产养殖尤其是拥有诸多优点的网箱养殖就显得非常重要。然而传统的网箱养殖大多是凭养殖户的经验和频繁巡查,当大型养殖渔场网箱较多时,就很难使网箱维持在最佳状态,限制了养殖产出。基于此,本文针对网箱养殖现场分布的特点,利用各类传感器,结合无线网络技术、嵌入式与自动控制等技术,确立多层网络拓扑结构,优化网络传输,设计了基于无线传感网络的可对网箱内多种参数进行实时监测和控制的自动化控制系统,对加强渔场参数监控,提高喂养质量与养殖产量具有现实意义。本文主要完成的工作如下:1、综述了养殖水质检测和无线传感网络技术的发展现状,分析了网箱养殖的特点,提出了基于无线传感网络和Internet网络的网箱养殖多参数无线监控系统的总体设计方案。2、针对网箱养殖水温、溶解氧等参数检测与传输特性,分析了TI的Z-Stack协议栈,构建了传感器节点、汇集网关以及WEB服务器等可行的系统结构,完成了信号采集与调理、无线通信、SIM卡接口电路等硬件设计,搭建了网箱养殖多参数无线传感网络实验系统。3、针对网箱养殖特点与功能要求,建立了基于Protothread状态机的软件系统运行机制,研究了基于WinCE6.0嵌入式系统内核裁剪以及基于此内核的应用软件的编程方法,为多参数网络系统数据传输的实时可靠奠定了基础,并分析了STM32内部存储器结构及其与Cotex-M3内核的对应关系,设计了可应用于网箱养殖的传感器固件远程更新的方法。模块设计,制作了基于Django的WEB界面,设计了监控画面,并在搭建的系统上进行了实验测试。结果表明,本系统具有实时性强、可靠性高、操作简单等特点,可在多种智能终端上进行联网监测,具有较高的实用价值。关键词:网箱养殖;数据采集;无线传感网络;监控系统;远程固件无线更新IResearchandDesignofMulti-parameterWirelessMonitoringSysteminCageCultureABSTRACTChinaisthelargestproducerinfisheryallaroundtheworld.However,thegrowthrateofnationalfisheryoutputisonthedeclineduetooverfishingoffisheryresources.Therefore,itisveryimportanttodevelopaquacultureindustry,especiallycageculturewithmanyadvantages.However,traditionalcageculturemostlydependsontheexperienceandfrequentpatroloffarmers.Itisdifficulttokeepthecagesinthebestconditioninlarge-scaleaquafarmwithmanycages,whichlimitstheaquacultureoutput.Basedonthissituation,thispaperusesmultiplesensorsandcombineswiththewirelessnetworktechnology,embeddedandautomaticcontroltechnologytoestablishmulti-layernetworktopologystructureandoptimizethenetworktransmissionaccordingtothecharacteristicsofcagesdistribution,anddesignsanautomationcontrolsystembasedonwirelesssensornetwork,whichcanmonitorandcontrolmulti-parametersofcagesinrealtime.Inaword,ithaspracticalsignificancetostrengthenthemonitoringofaquafarmparametersandimprovefeedqualityandaquacultureoutput.Inthispaper,themainworkisasfollows:ThispaperreviewsthebackgroundanddevelopmentofwaterqualitydetectionandWSN.Thecharacteristicsofcagecultureisanalyzed.BasedonthewirelesssensornetworkandInternetnetwork,theoveralldesignofmulti-parameterwirelessmonitoringsystemincagecultureisproposed.Aimedatthedetectionandtransmissioncharacteristicsofparameterssuchastemperature,dissolvedoxygen,theTIZ-Stackprotocolstackisanalyzed.Thefeasiblesystemstructurewithsensornode,sensorgatewayandWEBserverisbuilt.Thehardwaredesign,includingsignalacquisitionandregulation,wirelesscommunication,SIMcardinterfacecircuitandothers,iscompleted.Multi-parameterexperimentsystembasedonwirelesssensornetworkincagecultureisset.Aimedatthecharacteristicsandfunctionrequirementsofcageculture,therunningIImechanismofsoftwaresystembasedontheprotothreadstatemachineisestablished.TheembeddedsystemkernelcuttingbasedonWinCE6.0andtheapplicationsoftwareprogrammingmethodbasedonthekernelarestudied,whichlaysthefoundationofreal-timeandreliabledatatransmissioninmultipleparametersnetworksystem.TheSTM32internalstoragestructureanditscorrespondingrelationshipwithCotex-M3kernelareanalyzed.Themethodofremotefirmwareupdatingwhichbeappliedtocagecultureisdesigned.Thefunctionmodulesincludingdataacquisition,serialcommunication,Ethernetcommunication,remotecontrolandremotefirmwareupdatingovertheairareimplemented.TheWEBinterfaceandmonitoringscreenbasedonDjangoaredesigned.Afterexperimentsonthebuiltsystem,theresultsshowthatthissystemhasthecharacteristicssuchasstrongreal-timeperformance,highreliabilityandsimpleoperation,andcanbemonitoredonavarietyofintelligentterminaloverthenetwork.Inaword,thissystemhaspracticalvalue.Keywords:CageCultue;DataAcquisition;WirelessSensorNetwork;MonitoringandControlSystem;RemoteFirmwareUpdateOverTheAirIII目 录摘 要 IABSTRACT II目 录 第一章 绪论 11.1 课题的背景与意义 11.2 国内外的研究现状 21.3 研究内容及章节内容安排 4第二章 系统总体方案设计 62.1 网箱养殖的需求分析 62.2 传感器节点设计 72.3 汇集网关设计 82.4 基于WEB的服务器软件设计 92.5 本章小结 9第三章 系统硬件设计 103.1 传感器节点硬件设计 103.1.1 无线通信模块设计 103.1.2 信号调理电路设计 123.2 汇集网关硬件设计 143.2.1 GPRS通信模块设计 153.2.2 供电电源模块设计 153.2.3 SIM卡接口电路设计 173.3 本章小结 17第四章 系统软件设计 184.1 无线传感网络的搭建 184.1.1 无线传感器网络相关概念 184.1.2 无线传感网络的体系架构 184.1.3 基于Z-Stack协议栈的无线传感网络搭建 19IV4.2 传感器节点软件设计 224.2.1 Protothread状态机 224.2.2 简易FIFO缓存机制 244.3 汇集网关软件设计 264.3.1 WinCE6.0开发平台 264.3.2 应用软件的开发与设计 304.4 WEB服务器的设计和开发 334.4.1 Django框架简介 334.4.2 Django开发环境搭建 334.4.3 后台管理界面开发 344.4.4 网箱数据上传和处理 364.4.5 前端界面开发 374.5 本章小结 39第五章 远程固件无线更新方法研究 405.1 远程固件无线更新的基础 405.1.1 协议简介 405.1.2 STM32内嵌bootloader的研究 415.2 远程固件无线更新方法设计与实现 435.2.1 通信协议研究和设计 435.2.2 协议移植 455.2.3 自定义bootloder程序设计 455.3 本章小结 53第六章 系统调试和实验结果分析 546.1 实验系统搭建 546.2 远程固件无线更新方法验证 566.3 本章小结 58第七章 总结和展望 59参 考 文 献 61攻读硕士学位期间研究成果 65致 谢 66V第一章绪论1.1课题的背景与意义中国是世界上最大的渔业生产国,渔业发展给中国国民经济带来很大的贡献,而且在全球整个渔业发展势头日渐趋于平缓的情况下,国内的渔业仍能保持一个较好的增长势头。同时,渔业发展还对改善国民生活、生态环境保护等方面有着重要深远的意义。得要增加捕捞规模不断地来摄取渔业资源,甚至超出了渔业资源自身更新的能力,因此在这样的情况下,发展水产养殖就显得非常重要,而且显而易见,水产养殖经济效益十分可观。水产养殖有很多种方式,而网箱养殖是其中一种重要的形式。该方式方便活、操作简便、起捕容易。传统的网箱养殖大多是凭靠养殖户的经验,往往容易出现误判,难以使网箱维持在24等经济价值较高,不少对养殖环境要求苛刻,一旦出现问题,养殖户损失较大,因此对养殖环境及时准确的监控就显得十分重要。不同于其他行业,网箱养殖的特点决定了现场环境复杂、分布广泛、数目众多的特点,难以采用普通的工业监控方式来设置。对网箱养殖信息的获取、分析处理、系统智能化等问题是各类研究机构关注的焦点,已成为国际上研究现代渔业的重要课题。现今在水产养殖业中信息快速采集技术方面的研究情况仍与其他领域的信息技术的水平有较大差距,制约了渔业养殖水平的进一步提高,成课题主要针对网箱养殖现场分布的特点,利用各类传感器,结合无线网络技术、嵌入式与自动控制等技术,确立多层网络拓扑结构,优化网络传输,对网箱内各种参数进行实时监测。该项目符合我国现阶段发展海洋经济的战略,且项目的实施有助于实现对渔业养殖过程中参数的实时检测,降低获取此类数据的难度,为相关的渔业研究水平、管理能力的提升提供了有力的保证;有利于渔业监测从室内走向室外,从单一环境转向1复杂环境;还有利于推进智能检测及自动化技术在渔业科研与生产监测中的应用,使网箱养殖的品质控制从产后管理向产中管理延伸,消除盲区,促进我省渔业养殖中科技改革,为渔业增收、区域经济的发展发挥重要作用。1.2国内外的研究现状养殖水体水质检测方法经历了三个阶段,分别是传统经验法、化学法和仪器法[1]。然而不管是用化学分析法还是仪表测试法,都需要要面对漫长的监测周期和高额的监测很大程序上制约了水产养殖监控系统进一步的发展。随着传感技术、通信技术、自动化控制技术等技术的不断发展和完善,养殖水质监控系统不断地被研究和更新。旧有的检测方式已满足不了日益发展的需要,此时更新一代的养殖水质监控系统应运而生,它能够利用各种水质检测相关的传感器来采集养殖水体的各种状态,并能够完成实时有效可靠监测养殖水环境的状态参数,是一个运用先进存储以及查看等功能的完整系统[4]。现今已有的以串行总线、现场总线等有线的方式为基础的水质自动监测系统,主要采用了分散管理,集中控制的有线控制方式。虽然这类有线系统可以满足一定的生产需求,但整个系统很难适应水产养殖环境的高湿度、高盐度和高酸碱度,而且复杂的养殖环境使得现场布线施工困难,线路容易受腐蚀,维护成本高,因此在一定程度上也是制约了水产养殖监控系统的发展[5,6]。目前,国内外已在无线传感器网络在水产养殖监控相关方面做了一定的应用研究。欧美国家在水质监测系统方面发展比较快,设施很先进,将自动监测技术应用于水产养养殖监控系统提出了一套软件仿真框架,该软件框架由过滤和数据集成模块、状态建模建了一个渔场养殖自动化监控系统,搭建了可以实时监控渔场水环境的监控网络,具有低成本、低功耗和易操作等特点,同时又研究设计了一个可持续供电的供电系统,可在设计并详细介绍了以传感器数据记录为核心的水环境状态监控系统,并且可以在任何地方通过Internet网络或者移动网络接入监控系统来查看监控数据。而相较国外来说,国内在无线传感网络方面所做的研究工作总体来说还是比较缺乏的,尤其是在基于无线传2感网络所做的水产养殖监控系统方面的研究和应用,目前看来仍是处于起步阶段[10],然而尽管如此,国内近期在这方面还是做了不少的探索研究。以下就是本文所做的一些总结,文献[11]提出将无线传感网络应用到水产养殖中,并构建了一个无线监控系统,同时研究优化了LEACH路由协议,经验证其能够满足规模化水产养殖大量数据传输的需要以及保证通信安全可靠。文献[12]对路由协议进行研究比较,且在以自适应分群分层路由协议为研究基础,研究了可根据节点电池剩余能量动态地进行数据传输方式切换的方法,从达到了节能和延长网络生命周期的目的。文献[13]提出了基于无线传感器网络的参数测量和节能型变频增氧控制,进一步优化通信网络,达到各节点供电电池剩余PI-PID控制算法对溶解氧含量进行自动变频控制,实现了对养殖水环境最重要的溶解氧因子的闭环控制。文献[14]构建了基于无线传感器网络的水产养殖水质监测系统,研究了设计PH值传感器、溶解氧传感器等传感器信号采集和标定,使得水质参数检测小型化成为可能,经验证系统运行稳定、测量准确可靠。文献[15]基于物联网技术设计了多功能水产养殖监控系统,可通过无线传感技术、射频识别等技术方法,全面地管理和监测养殖环境,并结合实际项目进行验证其具有高数据采集准确性和高数据传输稳定性。可见随着无线传感网络技术的不断发展,给水产养殖水体监控带来很大的发展。有了无线传感网络的帮助,对于养殖户来说,可以更加方便地进行管理养殖生产;可以实时查看水环境状态,对异常情况可以第一时间做出处理;可以减少饲料浪费,减少环境污染等;为能生产出安全,绿色,高质量的水产品提供了保障[16,17]。可见其有美好的发如生产过程缺乏病害预警机制与预防策略、水质实时监测与报警比较落后,相关技术还不够成熟以及系统设备的高成本等问题,这些问题同样也会限制养鱼规模的扩大和产量的提高,进而制约整个行业的发展[18,19]。综上所述,基于水产养殖监控系统和无线传感网络技术的发展现状,本论文针对网箱养殖监控系统存在的如下两方面的问题开展研究和设计:但是设备早已发给客户,此时如果挨家挨户的取下设备做升级,显然是不太现实;运行在PC机上的监控软件来查看,这就在空间和时间上带来很大的局限,如果可以接入多种终端,如手机、PAD等,系统监控将更加方便。31.3研究内容及章节内容安排针对上述不足,本文基于无线传感网络、移动网络以及Internet网络等网络技术,汇集和上传,同时可实现对水环境参数随时随地查看等功能的网箱养殖多参数无线监控系统。在系统中,以无线通信模块和微控制器双核结构为基础的传感器节点与以嵌入式系统平台为基础的汇集网关进行自组网,之后传感器节点通过外设资源和信号调理电路等进行网箱水环境参数的采集、处理和发送,汇集网关接收各个传感器节点所采集的参数并打包转发到系统所设计的WEB服务器进行数据存储,用户可通过多种智能设备打开WEB界面进行网箱养殖水环境状态监控。同时,系统具有远程控制和传感器固件无线远程更新的功能。论文各章节安排内容如下:第一章:详细介绍了在网箱养殖监控系统方面所做研究的背景和意义,基于无线传感网络技术的水产养殖监控系统的国内外研究现状,并总结现有系统的不足,提出本论文主要研究内容,最后介绍各章节内容安排。第二章:详细分析了网箱养殖的特点和需求,系统所开发设计的传感器节点和汇集网关的主要功能和节点结构以及系统所开发设计的WEB服务器软件的优势和主要功能。第三章:详细介绍了传感器节点和汇集网关这两个系统关键组成部分的相关硬件设计,传感器节点硬件设计涉及到对无线通信模块的天线设计,各水质传感器调理电路的设计等方面;汇集网关硬件设计主要包括对GPRS通信模块的主电路,供电电源电路和SIM卡接口电路等方面。第四章:详细介绍了系统软件设计部分,主要包括传感器节点软件设计,汇集网关软件设计和WEB服务器软件的设计。其中传感器节点软件设计主要包括对protothread状态机的研究和应用、FIFO缓存机制的研究设计与应用等方面;嵌入式系统WinCE软件设计主要包括对WinCE6.0系统的裁剪与移植,应用软件的设计与开发等方面;WEB服务器软件设计主要包括对Django框架的研究和应用等方面。bootloader和协议的远程固件无线更新的方法,设计研究了用于汇集网关与无线通信模块和传感器节点与无线通信模块之间通信的自定义协议,研究改进了文件传输协议使其更适合论文所设计的系统,提出了远程固件无线更新的思路,并据此研究了STM32启动过程和中断方式,设计开发了自定义bootloader程序,并研究设计了软件程序与自定义bootloader程序之间的跳4转代码。第六章:详细介绍系统实物整体运行情况,包括软件和硬件,以及记录和分析相关数据,并验证系统设计的远程固件无线更新方法的有效性。第七章:总结课题所做的工作以及所取得的成果,提出论文的不足点,且对下一步的工作进行展望。5第二章系统总体方案设计2.1网箱养殖的需求分析网箱养殖是近几年来发展起来的一项具备高科技水平的养殖项目,它是利用人造的网状箱体,放入水体中,形成一个适宜鱼类生活的活水环境,能以较高的效益获得较高的产出。网箱养鱼之所以能高产,很大程序上是因为网箱养殖是利用大自然自动调节能进而可以加速鱼体的增长;另外,网箱的网状结构本身就有保护鱼少受其他生物危害的作用。除此之外,网箱养鱼方法具有机动、灵活、简便、高产、水域适应性广等诸多特点,在我国海、淡水养殖业中有广阔的发展前途[20-22]。在实际的网箱养殖过程中,选择合适的养殖环境非常重要。一般而言,设置网箱的的水流,不易过大过小,一般0.05-0.2米/秒为宜;③选择富含丰富的浮游生物,且不仅适合鱼体生长,又适合富有生物生长的水域。网箱培育鱼种是高密度的养殖,需要根据网箱中水的更新速度,水体中浮游生物含量和饲养管理技术水平等来确定放养密度。密度跟成活率密切相关,衡量网箱养殖的水平高低的重要一条就是产量和成活率。此外还速度、水质透明度等参数,同时网箱培育鱼种必须科学投喂,做到定质、定量、定时、定位地进行投饵。为做到科学养殖,养殖户需要针对不同情况进行多方案投饵,根据不同的季节和不同的水温进行动态调整投饵量。具体投饵量还需要视天气和鱼的吃食情况来灵活掌握,因此投饵过程也需要智能控制。整个网箱养殖系统在地域上往往处于边远郊区,而且都是露天环境,现场环境极其复杂,对此利用普通工业现场总线联网的方案往往难以实现,因此课题提出基于无线监控的方案。系统主要以Zigbee无线传感网络、GPRS移动网络以及Internet网络等网络技术为基础,以嵌入式系统和web服务器为载体,并结合传感、信号变换等技术,实现了网箱养殖水环境的实时远程监测与控制。系统总体框图如下图2-1所示。图中一个传感器节点对应一个网箱,汇集网关将n个传感器节点将数据汇集起来,6再通过移动网络发往因特网。一般而言,一个汇聚节点对应一个养殖场。若是多个养殖场的监控就需要多个汇集网关。这一过程中汇聚节点通过ZigBee无线传感网络利用协议与采集节点连接,将养殖场中各个网箱的水环境参数信息并整合,通过GPRS移动网络中转上传到web服务器,储存到相应的数据库中。最终养殖户可以用PC机等设备访问web服务器,通过课题设计开发的基于WEB的服务器端软件实现各个网箱的水环境参数的监测,同时还可以远程操纵网箱各执行机构的运行状态。对应上述系统总体结构,课题在工作上主要也就上述三大部分展开,即:传感器节点设计、汇聚节点设计和基于WEB的服务器端软件设计。图2-1系统总体结构2.2传感器节点设计传感器节点主要具备采集网箱水环境参数,打包和发送数据以及响应远程控制指令等功能,并能对执行机构进行控制。节点采用由STM32F103RBT6微控制器和TI(德州仪器)的CC2530微控制器组合使用的双核方案来实现节点功能。其中STM32F103RBT6微控制器主要负责水环境各参数的采集,电池电压的检测和充氧泵等执行机构的控制,CC2530微控制器主要负责进行组网以及传输数据和控制指令,传感器节点结构图如图2-2所示。7执行机构模块执行机构模块SM32F103RC6单片机控制模块传感器模块CC2530无线通信模块电源模块太阳能充电模块UART图2-2传感器节点结构图2.3汇集网关设计汇集网关结构图如图2-3所示。服务器801GGPRS通信模块CC2530无线通信模块电源模块以太网接口UARTsyARMMX283嵌入式系统平台UART图2-3汇集网关结构图汇集网关主要具备汇集和上传各传感器节点数据、转发远程控制指令等功能。本文采用广州周立功单片机科技有限公司的EasyARM-iMX283嵌入式系统平台来完成节点功能,平台以Freescale公司的基于ARM9内核的i.MX283多媒体应用处理器为核心,其主频为DDR2和NAND3路路路SPI、4路12bitADC、1路10/100M以太网接口、1路SDIO、1路I2S接口、1路USBOTG接口、1路USBHost接口、支持TFT液晶屏和电阻式触摸。平台的资源丰富,同时其资源基本都以接口或者排针的形式引出,可方便外接其他功能模块来扩展平台功能。系统通过一路接口与CC2530无线通信模块相连,通过无线协议进行组网,利用无线网络将整个无线传感网络中的各个网箱的水环境参数进行汇集,并加以处8理;通过一路以太网接口或者GPRS接口可将平台与Internet网络进行绑定,将已汇聚的各节点数据上传到web服务器的数据库中。2.4基于WEB的服务器软件设计服务器端信息综合管理系统软件需要具备对现场众多节点监测和部分执行器件控制的功能,主要体现两种优势:a)强大的数据处理与功能;b)灵活的接入方式,支持手机、Pad等多种终端;基于以上两点考虑,系统软件将会选择可利用计算机、Pad或者手机随时访问,并可以根据需要加入信息推送功能,将监控状态直接推送到用户手中,比如报警信息,以便客户在第一时间进行应对。PythonMySQL5.5Django框架的进行前端界面的开发。软件功能部分需要设计包含:数据采集存储、多参数数据曲线显示、数据查询等各部分功能。2.5本章小结本章首先对网箱养殖的相关知识及其特点进行介绍,之后对传感器节点和汇集网关的节点结构以及主要功能进行详细介绍,最后分析了WEB服务器软件的优势并系统所设计的WEB服务器的主要功能。9第三章系统硬件设计网箱养殖监控系统中涉及到众多检测水参数的传感器,而不同的传感器信号需要进行不同的调理输出,数据的采集需要微控制器的支持,数据的传输需要通信模块支持,整个系统功能的实现需要有硬件平台作为基础支持,因此课题开展了相应的硬件设计工作。对于传感器节点而言,硬件设计的主要内容包含无线通信模块设计、信号处理单元设计、ARM处理器控制模块设计等。对于汇聚网关而言,硬件设计的主要内容包含无通信模块设计等。3.1传感器节点硬件设计3.1.1无线通信模块设计课题采用MAC和物理层网络规范国际标准的2.4G射频收发器2400~2483.6MHz16个免许可证的频段通道,数据传输率可最高达250kbps[24],具有成本低,组网速度快,网络稳定等特点,是一款广泛应用于智能家居、智能农业、安全监控等行业的片上系统解决方案。图3-1CC2530应用电路如上图3-1所示是CC2530的应用电路,从图中可以看出CC2530的最小系统有电10源,时钟电路,复位电路和天线电路等组成,而天线电路是设计的关键部分,其一般采用2种设计方案:一种是SMA天线,一种是PCB天线,在距离稍远的实际应用中,一般采用SMA天线,如果需要还可以在天线前端增加功率放大模块,来进一步增加发射功率从而提高传播距离。课题采用SMA方案。课题对阻抗匹配的基本原理做了一些研究。一般来说,阻抗匹配主要是通过负载阻抗与激励源内部阻抗进行互相适配来实现,目的是为了获得最大功率输出。下图3-2所示的电源负载电路,其中E为电压源,r为电源E的内阻,R为负载电阻。由于r的存R很小时趋于短路状态;而当R很大时,电路趋于开路状态[25]。根据公式3-(1),负载在开路或者短路状态下都不能获得最大功率。p=I2R=E R+r

2 E2R=Rr24r+

只有当

4r+

E2Rr2R

R分母中的r2的值取最小值0时负载才能获得最大输出功率。因此,得出当要向负载输出最大功率,就要满足负载电阻等于电源内阻时。同理,在设计天线电路时,为了输出最大的天线发射功率,就需要做到天线线路的输出阻抗与天线阻抗等大。ErR图3-2电源负载电路从上图3-1所示的天线电路可以看出CC2530输出的射频信号是差分信号。差分电路具有高增益、抗电磁干扰、抗电源噪声、抗地噪声能力很高、抑制偶次谐波等优点,如今在RF电路和低频电路中,差分电路的使用越来越广泛。如果将芯片的两路射频信系统设计包括课题所设计的系统一般选用的天线是同轴电缆,是不平衡传输,为了不影响天线信号的发射,就要避免在天线的屏蔽层,也就是外皮,出现高频电流。因此,就需要要在天线和电缆之间加入平衡不平衡转换器,将本将流入天线外皮的高频信号截断为实现上述转换,可直接选用价格较贵的集成的巴伦模块,但如果对带宽和频率要{求不高,完全可用分立元件实现。为了更直接的了解和掌握天线设计的流程,课题采用分立元件来完成巴伦电路的设计。如下图3-3所示是巴伦结构。{}RI L}CC平衡端输入不平衡端输出L图3-3巴伦结构取值计算公式RI和RL分别为单端和输出端口的阻抗。=2fZC=RIRLL=ZCC=1 ZC

3.1.2信号调理电路设计由于网箱养殖所涉及的参数众多,需要不同的传感器,有些是模拟输出的,有些是数字输出,不同的传感器往往又涉及到不同信号处理和获取的方法。课题选取其中两个传感器信号来加以描述,限于篇幅,其他传感器设计部分不再赘述。1、PH传感器信号调理模块课题采用的PH传感器是基于复合电极制成的PH3-4所示是PH传感器的调理电路,传感器接到图中所示的P1座子上。系统选用的PH传感器是采用PH玻璃电极和参比电极组合而成的结构,其输出信号即为两个电极的相对电压。传感器在酸碱性不同溶液中会输出正负变化的电压值,当参比电极处于中性溶液中时,酸性溶液输出正压,碱性溶液输出负压[28]。然而负压对于所选STM32F103RC微控制器的AD(模数转换)来说是不可接受的,所以就利用其输出信号时相对于参比电极的电压差值这个特性,给参比电极,也就是传感器的PH-端,加上一个合适的电压值,保证信号电极电压恒为正值。此电压通过TL431基准源产生,再通过电压跟随器平稳输出,再配合放大器12放大输出得到在控制器AD工作电压范围内的电压。在实际调试过程中,需根据控制器AD的工作电压范围来调节滑动变阻器W1来调整输出,保证其在一定范围内。TL431提供的基准电压计算公式3-(3)如下:(1W1/R4),

)传感器信号经由下图3-43-(4)计算得出:_(PH)/测量出的电压信号到最后的使用,还需进行校准标定。尽管pH计尽管种类很多,但其pH值与传感器输出的电压信号是成线性关系,一般校准方法是采用两点校准法,即选择两种标准缓冲液:一种pH7标准缓冲液,第二种是pH9标准缓冲液或pH4缓冲液。课题选用雷磁的邻苯二甲酸氢钾溶液(pH=4.00,25℃)和混合磷酸盐溶液图3-4PH传感器的调理电路2、溶解氧传感器信号调理模块阴0.1M氯化钾(KCl)溶液作为电解液,采用用硅橡胶渗透膜作透气膜。根据透过渗透膜的氧量与水中溶解氧浓度成正比,可得电极间的极限扩散电流与水中溶解氧浓度成正比[29],因此,只需用检测此扩散电流,再经转换运算就可得到溶液中的氧含量。图3-5所示是溶解氧传感器的调理电路,主要完13成将传感器输出的4-20ma的电流信号转成STM32F103RC微控制器可接受的电压信号,电路中R7电阻选型比较讲究,要求精度高,温漂小,其作用是将输入的电流信号转变成相应的电压值,之后利用运算放大器输入高阻的特性,将上述转换过来的电压分压输入到双运算放大器TLC27L2的一个放大器中并进行10处理电路输入到TLC27L2个电路需要通过调整滑动变阻器W1进行输出校准。经过该电路处理即可完成溶解氧传感器输出,从而可进行后续处理分析。传感器信号经由下图3-53-(5)计算得出:VI

R7W1pR4,

3-(5)o iR7W1 R5若W1R7W1将近似等于R7W1图3-5溶解氧传感器的调理电路3.2汇集网关硬件设计课题选用EasyARM-iMX283作为系统采集数据和控制数据传输的中心,要求汇集网关需要比较高的性能,要有较大的数据缓存、较快的数据处理、多任务快速切换调度和管理等能力。EasyARM-iMX283平台所拥有的丰富外设资源,足以满足课题所需的数据采集、数据传输以及更高水平更复杂的应用。另外,课题设计中需要通过1路以太网接口或者GPRS接口将系统接入Internet应的驱动电路,这块更多的是集中在软件方面的研究,论文将在第四章中详细阐述,本节则主要来介绍GPRS通信模块的设计。143.2.1GPRS通信模块设计课题所设计的GPRS通信模块,可被称为数据传输单元DTU(DataTransfer是专门用于将串口数据转换为数据或将数据转换为串口数据通过无线移动网络进硬件平台通过串口与GPRS模块相连,实现将各网箱所采集的水环境参数通过串口发给GPRS模块,经过拆包打包通过移动网络和Internet网络转发到相应的服务器。如下图3-6所示是课题设计的GPRS模块选用北京公司的W801G将介绍GPRS通信模块硬件设计的几个关键部分:图3-6GPRS通信模块153.2.2供电电源模块设计课题所选用的GPRS3.3V~4.2V射射频信号时电流峰值最高会达到2A以上,因此在电源设计时就选择供电能力要尽可能达到LM2576-ADJ来作为供电稳压芯片,其最大输出电流可达3A和可调输出电压都能满足模块正常稳定工作所需的电压和电流,若不正确的选择,就会导致在模块使用过程中出现电压跌落的环境比较恶劣,模块供电很容易受到外部干扰,为了增强模块电源抗干扰能力,设计中在外部电源输入端加入一些TVS管等器件,在供电芯片输出端加一些nf、pf级电容,滤除干扰[32]。+12VM2576801GGNDINGNDOUTGNDVCCGND图3-7GPRS通信模块合理布局通信模块工作稳定性的好坏与模块PCB的布局和布线有着很大的关系。若模块PCB设计不进行合理的布局和布线,在模块开机注册网络、TCP/IP传输数据频繁大数据量、信号强度不好等需要比较大电流的情况下时,模块就很可能也会出关机或重启现象。如上图3-7所示是课题研究设计比较合理的布局。在PCB布线中,还要特别注意地线的布线,因为地线在整个回流路径中出现长短不一或者阻抗的不连续,也会造成电源跌落,进而会影响模块正常工作。课题设计中,将地线做如下模块的GND,电源适配器的GND间用一块完整的铜PCB板尽量多打地孔,从而保证电源和地的回流路径最小。为了能达到更好的稳压效果,设计中还需要在靠近模块的VCC引脚处接上大电容,16进一步地确保供电电压的稳定,进而可以增加模块工作的稳定性。3.2.3SIM卡接口电路设计课题所选的GPRS模块支持1.8V或者3.0V的SIMSIM卡的类型自3.0V±10%或者SIM卡的通信也是很容易受到环境和供电的影响,如图3-6所示,课题故作如下的设计:VSIM:需要并100或220nF电容,以稳定电源输出,减小纹波;SIMIO:建议并pF级电容,防止高频干扰;SIMRST:建议并nF级电容,防止高频干扰;为了增强SIM卡部分的可靠性,在靠近SIM卡卡座的接口处增加ESD静电保护器件[33]。PCB布局和布线时,将SIM卡卡座尽量靠近模块,避免走线过长,导致无法识别SIM卡。上述提到的电容、ESD等器件放置要靠近SIM卡座。3.3本章小结本章结合自身实际应用的经验具体介绍了传感器节点和汇集网关的硬件设计中的几个关键点。在传感器节点硬件设计这方面,主要对各传感器调理电路的设计,无线通信模块的天线设计等方面进行了介绍;在汇集网关硬件设计这方面,主要对GPRS通信模块的主电路,电源电路和SIM卡接口电路等方面进行了介绍。17第四章系统软件设计针对网箱养殖特点与功能要求,在本文硬件设计的基础上,采用多种软件平台和软对应于传感器节点、汇聚网关以及WEB服务器,课题开展了相应的软件设计工作。对于传感器节点而言,软件设计的主要内容包含无线传感网络搭建、protothread状态机、简易FIFOWinCE6.0嵌入式操作系统的裁剪与移植、应用软件开发与设计等。对于WEB服务器而言,软件设计的主要内容包括Django界面开发等。4.1无线传感网络的搭建4.1.1无线传感器网络相关概念SensorNetworks,WSN)就是由部署在监测区域中大量的廉价微型传感器节点组成,通过无线通信方式形成的一个多跳的自组织网络系统,其目无线传感网络是大规模、自组织、动态性、可靠性强的网络,又是以数据为中心的网络,是与应用相关的网络,这完全可以符合课题的需要。4.1.2无线传感网络的体系架构图4-1无线传感网络的体系架构如第二章所述,课题构建了较为合理的无线传感网络,包括随机部署在检测区域内18部或附近的传感器节点、收集检测区域内各传感器节点数据的汇聚节点以及在云端对检集节点,当距离过远或者信号过差,还可沿着其他传感器节点进行路由传输,经过多次转发后到达汇聚节点。最后,数据还可通过各种网络媒介到达管理节点。用户通过管理图4-1所示。图4-2IAR工程目录4.1.3基于协议栈的无线传感网络搭建1、Z-Stack协议栈课题设计的系统在传感器和汇聚节点之间,选用了Z-Stack网络协议进行组网通信,它是TI公司研发,通过zigbee联盟认证的免费协议栈,协议内部也包括了OS的模型,协议栈具有国际化,标准化的特点,协议栈已提供十几种(未来会更多)应用场景剖面(如图4-2所示是Z-Stack协议栈的IAR工程目录。软件程序一般是从main函数开始,Z-Stack协议栈亦然,通过研究分析Z-Stack协议栈的工程发现,协议栈主要完成两个任务:一个是完成系统各硬件外设和软件架构的初始化,另一个任务就是执行操作系统抽象层实体。a)各硬件外设和软件架构的初始化为了使操作系统抽象层的软件程序正常运行,系统上电启动需要完硬件平台和软件架构的初始化,主要有系统时钟初始化、芯片工作电压检测、初始化堆栈、I/O外设初19开始os_n_dsb开始os_n_dsb()关闭所有中断HA_BOARD_INI()初始化系统时钟zmain_vdd_check():检查芯片电压是否正常zmain_ram_init():初始化堆栈InitBoard(OB_COLD):初始化I/OHalDriverInit():初始化底层驱动osal_nv_init():初始化flash存储zmain_ext_addr():初始化节点MAC地址os_srt_sysos_srt_sysm(执行操作系统gIn()初始化一些非易失变量fInt()初始化应用框架层os_n_sysm()初始化操作层os_nt_nbe()使能全部中断InBorOB_RRDY)初始化KYn_dv_nf()显示设备信息b)操作系统抽象层实体的执行系统初始完成后,就开始执行操作系统抽象层的入口程序,之后便由操作系统抽象Osal_start_system(),此函数是一个死循环,若没有则程序会跑飞。自这个函数运行后,程序就不断地进行轮转查询的操作,以便保证每个任务事件发生时,可以即刻调用相应的事件处理函数进行任务的处理。2、无线传感网络的搭建在Z-Stack协议栈中需要在f8wConfig.cfg文件中来配置建立或者加入网络的和的配置,协议栈会根据上述文件的ZDAPP_CONFIG_PAN_ID参数值的不同来选择设备是强制建立或加入一个固定的网络20过设置上述文件中的参数为不同的值来选择加入16个通信频道协议默认的频道。运行协调器建立网络,路由器或终端设备加入网络。Z-Stack协议栈中,在新建立自定义任务时,需要加入如下两个函数:SensorApp_Init()和SensorApp_ProcessEvent()。SensorApp_Init()用来完成自定义任务的初始化,包括任务运行所需的变量,网络模式以及设备类型等;SensorApp_ProcessEvent()用来完成自定义任务事件的处理,在初始化时需要将该事件处理函数绑定到任务事件列表,以便在任务事件发生时调用对应的事件处理函数。基于上述总结,课题所设计的传感器节点的初始化和运行流程如下图4-4程详细描述如下:在osal_init_system()中的osalInitTasks()中新建SensorApp_Init(taskID),并在tasksArr[]数组中添加SensorApp_ProcessEvent进行绑定;通过Osal_start_system()执行osal进行任务轮询;c)在系统轮询到自定义任务时,进入到相应的事件处理函数中进行判断和处理事件,即SensorApp_ProcessEvent()函数,主要有事件有SYS_EVENT_MSG和,而在SYS_EVENT_MSG事件中主要又分AF_INCOMING_MSG_CMD(收到新的无线数据)和3、透传模式为了配置传感器节点所设计的软件功能,CC2530软件设计这块除了要完成基于Z-Stack势在于用户可以直接跳过无线通信模块组网的过程,只需要考虑应用软件的实现,可以很大程序上减少项目开发的时间,简化项目应用的开发流程,用户只需将数据通过串口发送到无线通信模块里,模块就会按照预先配置好的通信参数发出,目的接收模块接收21在在osInsks()函数中初始化自定义应用SnsorApp在Osl_sr_sysm()函数中开始轮询任务进入到SnsorApp_Prossvn(函数进行事件处理处理接收到的数据执行一次SND_DAA_VNT任务打包数据且发送是否轮询到自定义应用SnsorAp?NNN是否收到数据? 网络状态是否发生变化? 是否需要发送数据?YYY图4-4自定义应用使用流程4.2传感器节点软件设计网箱养殖所需要监测的水环境参数有水温、PH值、氨氮含量、亚硝酸盐含量、溶解氧含量等,每种传感器有需要不同的采集和处理方式,传感器节点的控制器需要承担水环境参数采集的这部分,不但如此,节点控制器还需要保证能跟汇集网关进行准确快速的数据交互等。可见传感器节点所要实现的功能还是很多,各部分功能协调也是比较复杂的。因此,课题引入了protothread状态机作为运行机制,使节点具备更好的效率、代码可读性等优点,同时还引入了FIFO缓存机制,来保证串口通信可靠性。Protothread状态机1、Protothread状态机简介事件驱动模型是一种常见的编程模型,特别是在诸如无线传感器网络这些内存受限的嵌入式系统中。与多线程模型相比,事件驱动模型不需要为每个线程分配栈空间,从TinyOS,22Contiki都是基于事件驱动模型的。在很多资源受限的嵌入式系统中事件驱动模型同样被广泛使用。然而事件驱动模型不支持阻塞等待。因此程序员在编写需要阻塞等待的程序时通常需要使用状态机模式去实现,同时他们将那些不能由一个事件处理函这些有控制流抽象出来的状态机通常没有具体的含义,它们就像是由程序员凭空创造出来的一样,会使得基于事件驱动模型的编程变得困难[41,42]。Protothread是一种新的编程抽象模型,这种模型使得程序员可以使用类线程的模式来别写基于事件驱动的程序,而且每个类线程只消耗2字节的内存,很多基于状态机模式编写的复杂程序可以使用protothread来简化。在测试的一些程序中,有些的状态机可以完全被protothreadprotothread在空间上可以使代码行数减少三分之一,在时间上也仅需要付出若干个机器周期的代价。总状态机是专为资源有限的系统设计的线程模型,相比于嵌入式操作系统,有无硬件依靠性,可移植性强,资源需求极少,没有栈但支持阻塞操作等优点。同时又有官方提供的库代码,代码精简易懂[44]。另外,又不得不提Protothread巧妙的阻塞机制:在每个条件判断前,先将当前行号保存到某个变量中,再判断条件是否成立,若条件成立,则往下运行;若条件不成立,则返回。它的实时性体现在,当遇到阻塞时,一个静态变量s记录了当前的行号,下次执行到此函数时再从当前行号开始执行。2、Protothread状态机应用传感器节点软件功能主要分三部分:传感器数据打包和发送,远程控制信息解析和KeilMDK5开发环境和STM32F103RC微控制器硬件平台上开发的。Protothread状态机在传感器节点软件程序中的使用,使得各任务初始化和任务执行3和2个字节,分别用来存储其对应任务的状态,即当前行号。在执行各任务之前,先调用函数PT_INIT()用来初始化之前定义的任务变量,之后在while(1)大循环中调用函数task1_thread()、task2_thread()和task3_thread()用来执行相应的任务。由下图4-5中代码可见,每个任务都有一个阻塞位置,分别是23==1),程序循环依次执行这三个任务函数,如果程序运行到上述的阻塞位置时,就判断其运行条件是否满足,若不满足,则阻塞,直接跳出该任务进入下一个任务,并且当下一次再进入该任务时则直接跳到之前的阻塞位置进行同样的判断和处理。为了能满足系统实时性的要求,各个任务运行时间之和要小于系统实时响应的时间要求。图4-5传感器节点的3个任务4.2.2简易FIFO缓存机制CC2530无线模块进行通信,经实验研究发现,当控制器频繁接收到数据时,很容易造成数据的丢失或出错。为解决这一问题,可以选用AL422B缓冲器类的芯片,然而成本会提高,而一般的微控制24FIFO缓存机制是一种先进先出的数据缓存机制,所以肯定涉及到两个过程:数据存储和数据读取[45]。1、数据存储对于数据存储这个过程来说,首先需要在内存空间开辟一段固定的空间,课题设计预留缓存空间为80数据尾一同放入到所开辟的缓存当中。这里需要强调的是这边数据储存不是在收到一条完整指令后再统一触发某个中断再进行处理的,而是每接收到一个字节就立即将其放入缓存中。同时,还设有一个变量止数组的溢出。2、数据读取对于数据读取这个过程来说,因为还要涉及到指令数据解析,所以要进行更多的处理。跟数据存储的一样,会设有一个变量(_tail)来记录读取的位置。若_head和_tail两个变量不相等,即非空状态,则继续判断数据头是否为0XEE,若是则开始依次从缓存空间中读取数据,在读取的过程中监测到完整的数据尾(0xFF0XFC0xFF0xFF)则判定已读到一串完整的指令数据,则提取出这串数据进行解析。上边若有条件不满足,则丢弃当前所读取一个字节的数据。整个FIFO读写过程如下图4-6所示。完整的一串指令数据提取出来后需要对其进行解析,这可以理解为给指令数据中的每个部分取一个名字。课题采用强制赋值给结构体的方法来方便快捷地完成解析这部分功能。前提是要根据通信协议规定的按顺序依次建立结构中的变量并确定其数据类型,如下图4-7之后通过结构体变量就可以直接使用每一部分的数据。此外,为了使上述的强制转换顺利进行,需要通过#pragmapack(n)语句来设置编译器字节对齐方式,若不设置则按照编译器默认对齐方式,即结构体成员中占空间最大的成员的大小,这会导致强制转换时指令数据中的数据不能跟结构体中成员对应起来,从而影响整个数据解析结果以及后面进一步的应用。25FIFO缓存区数据写入缓存区 数据从缓存区读出图4-6缓存区读写示意图图4-7指令数据结构体4.3汇集网关软件设计课题在EasyARM-iMX283平台上进行WinCE6.0嵌入式系统的移植和监控软件的设计,从而实现汇集网关的功能。监控软件设计主要内容包括:与无线通信模块通信接口参数设置,与WEB服务器通信以太网接口参数设置,传感器节点固件无线远程更新功能,传感器节点执行机构远程控制和水环境参数转发等功能。下文将对上述的功能进行展开说明。4.3.1WinCE6.0开发平台1、开发平台的搭建WinCE6.0系统的应用软件开发可以完全在PC的搭建,除了PC机及其Windows系统(本系统设计在XP操作系统下开发)外,还需SP1中文安装包、ActiveSync软件和WinCE6.0安装包及其补丁。开发平台构建完后,就可以在平台上构建自己的WinCE6.0操作系统和开发基于WinCE6.0的应用程序了[46,47]。262、WinCE6.0系统内核的裁剪和下载a)内核裁剪课题所需要制作的系统内核是装有WindowsEmbeddedCE6.0和Studio2005的软件环境中进行的。一般嵌入式系统的内核制作首先需要安装基于硬件平台的板级支持包(下文简称EasyARM-iMX283内核制作前需要安装基于EasyARM-iMX283硬件平台的BSP[48]。在VS2005中新建项目,选择“PlatformBuilderforCE顺序下来,选择在新建项目之前安装的BSP,选择默认设备类型模板“PDADevice”和具体设备类型模板“Mobile要选择保留FileCache和QuarterVGA不相关的,达到精简的目的),选择网络与通信配置(根据课题应用选择TCP/IPv6和LAN4-8所示是VS2005新建工程目录。图4-8VS2005新建工程目录系统的裁剪主要在上图4-8所示的工程目录下进行,根据课题需要,选择加入SDHost并且支持USBUHIVE注册表和RAM、ROMWinCE6.0在便可以编译生成内核镜像,但为了满足更多的需要,课题根据需要加入下面的特性: 加入网络应用程序,如ping、ipconfig、route等应用程序命令; 加入DOS命令符窗口;27加入WindowsXP风格的界面; 加入对USBDevice串口类的支持; 加入对中文字体的支持。配置好了编译参数后,可以根据需要选择生成Debug或Release,课题设计选择Release,然后就可以开始编译内核镜像了,选择菜单“生成”→“AdvancedBuildCommands”→“CleanWinCE6.0操作系统镜像。b)内核下载生成的内核文件需下载到课题所选用的EasyARM-iMX283平台中才能最终发挥其功Eboot通过以太网下载WinCE内核文件到EasyARM-iMX283平台上,以下下载流程的阐述是默认平台Eboot已通过USB方式启动:连接硬件、修改IP。分别使用USB连接线连接到平台的4-9所示是平台接线总图。然后修改开发主机地址。图4-9平台接线总图设置EbootWinCE28filenamefordebugger:”为所要下载内核文件文件名。使用EbootEboot,将会在超级终端中看到Eboot的操作选项如下图4-10所示。输入“d”进入Eboot下载状态,此时EasyARM-iMX283所示。设置VS2005EasyARM-iMX283VS2005配置中,选择当前同一网段内所有发出“BOOTME”信息的WinCE设备标识,确定后连接设备进行内核文件下载。选择最终内核下载目的地,在开发机上进行WinCE前还需要选择本次具体内核下载的目的设备:0-NandFlash、1-SD/TF卡、2-RAM。课题调试为了增加调试速度选择NandFlash确认进行对NandFlash的烧写操作,完成后确认重启。图4-10Eboot目录选项图Eboot进行等待开发主机连接状态29图4-12汇集网关软件主界面4.3.2应用软件的开发与设计汇集网关所实现的软件功能有串口通讯设置、以太网通讯设置、远程控制、远程固件无线更新和数据转发等功能。为了实现课题所需的上述功能,需用到EasyARM-iMX283平台的如上图4-12所示。对于串口(UART)通信来说,EasyARM-iMX283平台已包含有多个是标准的WinCE6.0VS2005中提供的专门用于操作驱动程序的函数,从而实现WinCE6.0系统与其它外部设备之间的串口通信。如下图4-13所示是串口通信设置界面,由于参数比较多,在主界面上设置这些变量将会占用比较多的显示面积,所以新建一个对话框来进行WinCE6.0系统与无线传输模块的串口通信接口参数的设置,主要参数包括串口号、通信波特率、数据位、停止位以及校验等。图4-13串口参数设置界面30在课题开发设计中,要使得所设计的应用软件与实际所要操作的硬件对应起来,首先需要调用串口驱动。在此基础上,课题设计了串口打开(下文简称OpenPort())/关闭(下文简称ClosePort())函数,串口接收线程(CommRecvTread)及接收成功回调函数OpenPort()函数中调用CreateFile()打开指定的串口,以获取串口操作句柄;在ClosePort()函数中释放该操作句柄。另外在OpenPort()函数中设计有SetCommTimeouts()函数,用来设置串口接收与发送超时时间,本文设计中主要用来设置接收字符间最大时间间隔和读数据总超时常量。创建串口接收线程的目的是为了使得等待串口数据任务跟监控软件主线程并行进行,避免因为串口等待数据而影响其他功能的实现。课题设计中串口数据接收通过ReadFile()函数来完成,之后再通过回调函数将接收到的数据显示在界面控件上。串口发送函数中主要调用写文件函数WriteFile()将用户输入的字符串通过从串口发送出去。如图4-14启充氧泵”按钮时,软件将获取“鱼塘号”编辑框中的数值,进行数据打包,通过串口发送到无线通信模块,无线通信模块通过建立的无线传感网络转发到指定的鱼塘,即发送到指定鱼塘所对应的传感器节点,相应传感器节点接收到数据进行解析,最后进行充氧泵的控制。当点击“开启所有充氧泵”按钮时,具体流程同上述控制单个节点充氧泵流程,不同的是在无线通信模块进行转发时,选择广播的方式,即将控制指令发送给所有节点,从而实现对所有传感器节点的充氧泵进行控制。如图4-14中的(b)图所示,远程固件无线更新界面主要有两种控件组成:按钮和编辑框。课题选用固件文件类型flash空间,可见选用此种文件类型作为固件文件的文件类型,也使得整个研发设计更加的直接和方“更新”和“全部更新”按钮用来启动更新操作,整个更需要花费几分钟的时间,主要看固件文件的大小。其中远程固件无线更新的方法是课题重点研究内容,将在第五章展开详细论述,此处就不再赘述。间兼容的套接字接口,这使得网络应用程序可以在不同平台之间进行自由移植;同时系统提供多种网卡驱动程序接口,支持多种常用的网络协议,开发人员只要着重于相应的平台主板上还提供了1路的10/100M以太31EasyARM-iMX283平台的WinCE6.0系统强大的网络通信功能,可以方便实现与课题所设计的WEB服务器之间的网络通信,故用其进行如下所述的界面功能设计。(a)远控控制界面(b)远程更新界面图4-14监控软件功能界面图4-15以太网通信接口参数设置界面汇集网关通过以太网接口所要实现的最主要的功能是将节点以客户端身份连接到课题所设计开发的WEBWEBTCP接口通信参数设置界面,主要包括远程服务器地址和远程服务器端口的设置,在编辑框里填上所要连接服务器相应的参数后,点“确定”按钮就可以客户端的身份连接到服务器。客户端与服务器建立连接的流程,如下图4-16所示,TCP通信开始于客户端主动TCP服务器的服务端接收该请求并完成3就可以进行客户端与服务器之间的TCP通信,完成数据交互。按钮后,程序会使用函数WSAStartup()加载6.0TCP32为了不让主线程持续等待TCP通信也需要创建一个TCP用recv()函数,发送数据用send()函数。调用调用ossok()关闭套接字s调用sok()建立流式套接字返回套接字s调用onn()建立与远程服务器的连接调用rv()和snd()在套接s接收或发送数据图4-16TCP客户端流程图4.4WEB服务器的设计和开发Web服务器可以用来存储并管理超媒体(包括超文本文件、音频文件、视频文件等WEB服务器的WEB界面可满足实现课题所需要的远程监测和数据存储等功能的要求,而且WEB服务器有网络就可以访问,可使得监控软件脱离空间和设备的限制,达到随时随地在多种智能终端上进python的Django框架进行WEB下就课题针对WEB服务器所做研究的一些总结。Django框架简介Django项目是一个python定制框架,又是一个基于MVC构造的框架,但实际更关注的是模型、模板和视图,故又称为MTV模式[50]。总的来说,Django是一个可以使Web开发工作愉快并且高效的Web开发框,是从真实世界的应用中成长起来。它主要着重于解决在实际WEB应用开发中所遇到的问题,因为它的开发者致力于让开发人员节省时间,编写更加容易维护的程序,同时保证程序运行的效率[51]。33Django开发环境搭建1、组件安装Django本身是纯PythonDjango框架首先安装Python和设计选择Python2.6版本,Django1.6.5版本,另外,数据库选择MySQL5.5数据库,同时安装MySQLGUI工具用于管理数据库,最后选择相应的Python对MySQL的接口程序包安装[52,53]。Python安装完成后,需要在windows系统的CMD命令符窗口中输入“python”,安装和测试可选择在CMD需在CMD命令符窗口依次输入“python”→“importdjango”→“printdjango是否安装成功。2、集成开发环境的安装一般来说,完成以上软件包的安装足以进行web开发,但为了使得开发变得方便快捷,课题开发选择在PyCharm3.1.3集成开发环境上进行的。PyCharm集成开发环境是一种基于PythonDjango是后期的代码功能调试等,都变得非常方便快捷[54]。整个开发是在微软的Windows7系统上进行。4.4.3后台管理界面开发对于课题所设计的WEB服务器来说,其后台管理界面是非常重要的一部分。对网页前端显示数据的调整,传感器节点执行机构的远程控制,以及数据库数据调用分析等课题所设计的功能,都需要有权限限制,只有有操作权限的管理者或者分配有权限的用户才可以进行操作和管理。可见对一个完整监控系统来说,拥有一个网站后台管理系统还是很有必要,然而如果全新开发一套高性能的网站后台管理系统,肯定需要花费大量Django作为开发框架的原因之一,因为在后台管理功能在Django中本身就已为开发者设计好了。在课题设计中,研究发现实际只需按照以下几点激活即可完成管理系统搭建:在settings.py文件中的INSTALLED_APPS中添加“django.contrib.admin”、34MIDDLEWARE_CLASSES中添加“mon.CommonMiddleware”、“django.contrib.sessions.middleware.SessionMiddleware”和“django.contrib.auth.middleware.AuthenticationMiddleware”,在url.py文件中的urlpatterns中添加“(r'^admin/',include(admin.site.urls))”,最后通过PyCharm编译环境的菜单栏中“Tools”下的“Runmanage.pytask...”运行“syncdb”指令,即可生成管理界面使用的额外数据表,同时通过编译引导创建一个超级用户用来登陆管理平台。图4-17后台登陆后的界面另外,课题为了使后面管理平台界面更加友好,课题还研究了grappelli包的工作原理,并应用其来完成美化后台管理界面的工作。在添加完grappelli包后,同样需要在settings.py文件的INSTALLED_APPS中进行设置,此时需要添加“grappelli”语句,而且这里需要再三强调的是这条代码必须位于“django.contrib.admin”语句之前,再在settings.py文件中添加静态文件路径“ADMIN_MEDIA_PREFIX=STATIC_URL+"grappurl.py文件中的urlpatterns语句,最后调用开发环境的指令“Runmanage.pytask...”和“collectstatic”指令来收集所需要的静态文件,即可完成对后台管理系统界面的美化。上图4-17是应用grappelli美化后后台登陆后的界面,显示了各个网箱所有的传感器类型。354.4.4网箱数据上传和处理在课题设计的系统中,用户登陆到管理界面之后,就可以通过管理界面来查看数据库中所保存的各个网箱水环境的状态数据。图4-18所示是用户所看到是汇聚节点推送上来保存在web服务器的数据库中的部分数据。课题设计是采用HTTP/1.1协议中的POST请求方法来上传传感器节点所采集的数据到web服务器的数据库。HTTP/1.1协议中的POST提交数据方式根据content_type又可分四种方式,它们分别是application/x-www-form-urlencoded、multipart/form-data、application/json和格式能够更好地体现数据的层次结构,而且Python本身就有用来进行JSON编码和译码的模块simplejson,故课题决定选择application/json方式来上传传感器数据[55]。下面来介绍课题研究中的一些技术细节。汇集网关通过Internet网络用HTTP/1.1协议中的POST方法来提交数据,在提交数据之前,汇集网关首先会连接到web服务器,然后通过以太网口发送以上POST包即可上传数据,具体实现代码如下所示。Content-Length的数值一定要等于提交数据长度。POST/api/V1/gateway/UpdateSensors/1/HTTP/1.1Content-Type:application/jsonContent-Length:32{"sensorname":"T1","value":"20"}当课题所设计的web服务器接收到通过POST方法提交的传感器节点数据时,即可用以下代码进行传感器名称以及对应数值的读取,具体实现代码如下所示。req=json.loads(request.body)sensorname=req['

温馨提示

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

评论

0/150

提交评论