網(wǎng)箱養(yǎng)殖多參數(shù)無(wú)線監(jiān)控系統(tǒng)的研究與設(shè)計(jì)_第1頁(yè)
網(wǎng)箱養(yǎng)殖多參數(shù)無(wú)線監(jiān)控系統(tǒng)的研究與設(shè)計(jì)_第2頁(yè)
網(wǎng)箱養(yǎng)殖多參數(shù)無(wú)線監(jiān)控系統(tǒng)的研究與設(shè)計(jì)_第3頁(yè)
網(wǎng)箱養(yǎng)殖多參數(shù)無(wú)線監(jiān)控系統(tǒng)的研究與設(shè)計(jì)_第4頁(yè)
網(wǎng)箱養(yǎng)殖多參數(shù)無(wú)線監(jiān)控系統(tǒng)的研究與設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩67頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

碩 士 學(xué) 位 論 文Thesis中文論文題目: 網(wǎng)箱養(yǎng)殖多參數(shù)無(wú)線監(jiān)控系統(tǒng)的研究與設(shè)計(jì) 英文論文題目: ResearchandDesignofMulti-parameter WirelessMonitoringSysteminCageCulture 學(xué)科專業(yè): 控制理論與控制工程 摘 要中國(guó)是世界上最大的漁業(yè)生產(chǎn)國(guó),然而由于對(duì)漁業(yè)資源的過(guò)度捕撈,國(guó)家漁業(yè)總產(chǎn)量增長(zhǎng)率呈下降趨勢(shì),因此,發(fā)展水產(chǎn)養(yǎng)殖尤其是擁有諸多優(yōu)點(diǎn)的網(wǎng)箱養(yǎng)殖就顯得非常重要。然而傳統(tǒng)的網(wǎng)箱養(yǎng)殖大多是憑養(yǎng)殖戶的經(jīng)驗(yàn)和頻繁巡查,當(dāng)大型養(yǎng)殖漁場(chǎng)網(wǎng)箱較多時(shí),就很難使網(wǎng)箱維持在最佳狀態(tài),限制了養(yǎng)殖產(chǎn)出?;诖?,本文針對(duì)網(wǎng)箱養(yǎng)殖現(xiàn)場(chǎng)分布的特點(diǎn),利用各類傳感器,結(jié)合無(wú)線網(wǎng)絡(luò)技術(shù)、嵌入式與自動(dòng)控制等技術(shù),確立多層網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),優(yōu)化網(wǎng)絡(luò)傳輸,設(shè)計(jì)了基于無(wú)線傳感網(wǎng)絡(luò)的可對(duì)網(wǎng)箱內(nèi)多種參數(shù)進(jìn)行實(shí)時(shí)監(jiān)測(cè)和控制的自動(dòng)化控制系統(tǒng),對(duì)加強(qiáng)漁場(chǎng)參數(shù)監(jiān)控,提高喂養(yǎng)質(zhì)量與養(yǎng)殖產(chǎn)量具有現(xiàn)實(shí)意義。本文主要完成的工作如下:1、綜述了養(yǎng)殖水質(zhì)檢測(cè)和無(wú)線傳感網(wǎng)絡(luò)技術(shù)的發(fā)展現(xiàn)狀,分析了網(wǎng)箱養(yǎng)殖的特點(diǎn),提出了基于無(wú)線傳感網(wǎng)絡(luò)和Internet網(wǎng)絡(luò)的網(wǎng)箱養(yǎng)殖多參數(shù)無(wú)線監(jiān)控系統(tǒng)的總體設(shè)計(jì)方案。2、針對(duì)網(wǎng)箱養(yǎng)殖水溫、溶解氧等參數(shù)檢測(cè)與傳輸特性,分析了TI的Z-Stack協(xié)議棧,構(gòu)建了傳感器節(jié)點(diǎn)、匯集網(wǎng)關(guān)以及WEB服務(wù)器等可行的系統(tǒng)結(jié)構(gòu),完成了信號(hào)采集與調(diào)理、無(wú)線通信、SIM卡接口電路等硬件設(shè)計(jì),搭建了網(wǎng)箱養(yǎng)殖多參數(shù)無(wú)線傳感網(wǎng)絡(luò)實(shí)驗(yàn)系統(tǒng)。3、針對(duì)網(wǎng)箱養(yǎng)殖特點(diǎn)與功能要求,建立了基于Protothread狀態(tài)機(jī)的軟件系統(tǒng)運(yùn)行機(jī)制,研究了基于WinCE6.0嵌入式系統(tǒng)內(nèi)核裁剪以及基于此內(nèi)核的應(yīng)用軟件的編程方法,為多參數(shù)網(wǎng)絡(luò)系統(tǒng)數(shù)據(jù)傳輸?shù)膶?shí)時(shí)可靠奠定了基礎(chǔ),并分析了STM32內(nèi)部存儲(chǔ)器結(jié)構(gòu)及其與Cotex-M3內(nèi)核的對(duì)應(yīng)關(guān)系,設(shè)計(jì)了可應(yīng)用于網(wǎng)箱養(yǎng)殖的傳感器固件遠(yuǎn)程更新的方法。模塊設(shè)計(jì),制作了基于Django的WEB界面,設(shè)計(jì)了監(jiān)控畫面,并在搭建的系統(tǒng)上進(jìn)行了實(shí)驗(yàn)測(cè)試。結(jié)果表明,本系統(tǒng)具有實(shí)時(shí)性強(qiáng)、可靠性高、操作簡(jiǎn)單等特點(diǎn),可在多種智能終端上進(jìn)行聯(lián)網(wǎng)監(jiān)測(cè),具有較高的實(shí)用價(jià)值。關(guān)鍵詞:網(wǎng)箱養(yǎng)殖;數(shù)據(jù)采集;無(wú)線傳感網(wǎng)絡(luò);監(jiān)控系統(tǒng);遠(yuǎn)程固件無(wú)線更新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 國(guó)內(nèi)外的研究現(xiàn)狀 21.3 研究?jī)?nèi)容及章節(jié)內(nèi)容安排 4第二章 系統(tǒng)總體方案設(shè)計(jì) 62.1 網(wǎng)箱養(yǎng)殖的需求分析 62.2 傳感器節(jié)點(diǎn)設(shè)計(jì) 72.3 匯集網(wǎng)關(guān)設(shè)計(jì) 82.4 基于WEB的服務(wù)器軟件設(shè)計(jì) 92.5 本章小結(jié) 9第三章 系統(tǒng)硬件設(shè)計(jì) 103.1 傳感器節(jié)點(diǎn)硬件設(shè)計(jì) 103.1.1 無(wú)線通信模塊設(shè)計(jì) 103.1.2 信號(hào)調(diào)理電路設(shè)計(jì) 123.2 匯集網(wǎng)關(guān)硬件設(shè)計(jì) 143.2.1 GPRS通信模塊設(shè)計(jì) 153.2.2 供電電源模塊設(shè)計(jì) 153.2.3 SIM卡接口電路設(shè)計(jì) 173.3 本章小結(jié) 17第四章 系統(tǒng)軟件設(shè)計(jì) 184.1 無(wú)線傳感網(wǎng)絡(luò)的搭建 184.1.1 無(wú)線傳感器網(wǎng)絡(luò)相關(guān)概念 184.1.2 無(wú)線傳感網(wǎng)絡(luò)的體系架構(gòu) 184.1.3 基于Z-Stack協(xié)議棧的無(wú)線傳感網(wǎng)絡(luò)搭建 19IV4.2 傳感器節(jié)點(diǎn)軟件設(shè)計(jì) 224.2.1 Protothread狀態(tài)機(jī) 224.2.2 簡(jiǎn)易FIFO緩存機(jī)制 244.3 匯集網(wǎng)關(guān)軟件設(shè)計(jì) 264.3.1 WinCE6.0開發(fā)平臺(tái) 264.3.2 應(yīng)用軟件的開發(fā)與設(shè)計(jì) 304.4 WEB服務(wù)器的設(shè)計(jì)和開發(fā) 334.4.1 Django框架簡(jiǎn)介 334.4.2 Django開發(fā)環(huán)境搭建 334.4.3 后臺(tái)管理界面開發(fā) 344.4.4 網(wǎng)箱數(shù)據(jù)上傳和處理 364.4.5 前端界面開發(fā) 374.5 本章小結(jié) 39第五章 遠(yuǎn)程固件無(wú)線更新方法研究 405.1 遠(yuǎn)程固件無(wú)線更新的基礎(chǔ) 405.1.1 協(xié)議簡(jiǎn)介 405.1.2 STM32內(nèi)嵌bootloader的研究 415.2 遠(yuǎn)程固件無(wú)線更新方法設(shè)計(jì)與實(shí)現(xiàn) 435.2.1 通信協(xié)議研究和設(shè)計(jì) 435.2.2 協(xié)議移植 455.2.3 自定義bootloder程序設(shè)計(jì) 455.3 本章小結(jié) 53第六章 系統(tǒng)調(diào)試和實(shí)驗(yàn)結(jié)果分析 546.1 實(shí)驗(yàn)系統(tǒng)搭建 546.2 遠(yuǎn)程固件無(wú)線更新方法驗(yàn)證 566.3 本章小結(jié) 58第七章 總結(jié)和展望 59參 考 文 獻(xiàn) 61攻讀碩士學(xué)位期間研究成果 65致 謝 66V第一章緒論1.1課題的背景與意義中國(guó)是世界上最大的漁業(yè)生產(chǎn)國(guó),漁業(yè)發(fā)展給中國(guó)國(guó)民經(jīng)濟(jì)帶來(lái)很大的貢獻(xiàn),而且在全球整個(gè)漁業(yè)發(fā)展勢(shì)頭日漸趨于平緩的情況下,國(guó)內(nèi)的漁業(yè)仍能保持一個(gè)較好的增長(zhǎng)勢(shì)頭。同時(shí),漁業(yè)發(fā)展還對(duì)改善國(guó)民生活、生態(tài)環(huán)境保護(hù)等方面有著重要深遠(yuǎn)的意義。得要增加捕撈規(guī)模不斷地來(lái)攝取漁業(yè)資源,甚至超出了漁業(yè)資源自身更新的能力,因此在這樣的情況下,發(fā)展水產(chǎn)養(yǎng)殖就顯得非常重要,而且顯而易見,水產(chǎn)養(yǎng)殖經(jīng)濟(jì)效益十分可觀。水產(chǎn)養(yǎng)殖有很多種方式,而網(wǎng)箱養(yǎng)殖是其中一種重要的形式。該方式方便活、操作簡(jiǎn)便、起捕容易。傳統(tǒng)的網(wǎng)箱養(yǎng)殖大多是憑靠養(yǎng)殖戶的經(jīng)驗(yàn),往往容易出現(xiàn)誤判,難以使網(wǎng)箱維持在24等經(jīng)濟(jì)價(jià)值較高,不少對(duì)養(yǎng)殖環(huán)境要求苛刻,一旦出現(xiàn)問(wèn)題,養(yǎng)殖戶損失較大,因此對(duì)養(yǎng)殖環(huán)境及時(shí)準(zhǔn)確的監(jiān)控就顯得十分重要。不同于其他行業(yè),網(wǎng)箱養(yǎng)殖的特點(diǎn)決定了現(xiàn)場(chǎng)環(huán)境復(fù)雜、分布廣泛、數(shù)目眾多的特點(diǎn),難以采用普通的工業(yè)監(jiān)控方式來(lái)設(shè)置。對(duì)網(wǎng)箱養(yǎng)殖信息的獲取、分析處理、系統(tǒng)智能化等問(wèn)題是各類研究機(jī)構(gòu)關(guān)注的焦點(diǎn),已成為國(guó)際上研究現(xiàn)代漁業(yè)的重要課題?,F(xiàn)今在水產(chǎn)養(yǎng)殖業(yè)中信息快速采集技術(shù)方面的研究情況仍與其他領(lǐng)域的信息技術(shù)的水平有較大差距,制約了漁業(yè)養(yǎng)殖水平的進(jìn)一步提高,成課題主要針對(duì)網(wǎng)箱養(yǎng)殖現(xiàn)場(chǎng)分布的特點(diǎn),利用各類傳感器,結(jié)合無(wú)線網(wǎng)絡(luò)技術(shù)、嵌入式與自動(dòng)控制等技術(shù),確立多層網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),優(yōu)化網(wǎng)絡(luò)傳輸,對(duì)網(wǎng)箱內(nèi)各種參數(shù)進(jìn)行實(shí)時(shí)監(jiān)測(cè)。該項(xiàng)目符合我國(guó)現(xiàn)階段發(fā)展海洋經(jīng)濟(jì)的戰(zhàn)略,且項(xiàng)目的實(shí)施有助于實(shí)現(xiàn)對(duì)漁業(yè)養(yǎng)殖過(guò)程中參數(shù)的實(shí)時(shí)檢測(cè),降低獲取此類數(shù)據(jù)的難度,為相關(guān)的漁業(yè)研究水平、管理能力的提升提供了有力的保證;有利于漁業(yè)監(jiān)測(cè)從室內(nèi)走向室外,從單一環(huán)境轉(zhuǎn)向1復(fù)雜環(huán)境;還有利于推進(jìn)智能檢測(cè)及自動(dòng)化技術(shù)在漁業(yè)科研與生產(chǎn)監(jiān)測(cè)中的應(yīng)用,使網(wǎng)箱養(yǎng)殖的品質(zhì)控制從產(chǎn)后管理向產(chǎn)中管理延伸,消除盲區(qū),促進(jìn)我省漁業(yè)養(yǎng)殖中科技改革,為漁業(yè)增收、區(qū)域經(jīng)濟(jì)的發(fā)展發(fā)揮重要作用。1.2國(guó)內(nèi)外的研究現(xiàn)狀養(yǎng)殖水體水質(zhì)檢測(cè)方法經(jīng)歷了三個(gè)階段,分別是傳統(tǒng)經(jīng)驗(yàn)法、化學(xué)法和儀器法[1]。然而不管是用化學(xué)分析法還是儀表測(cè)試法,都需要要面對(duì)漫長(zhǎng)的監(jiān)測(cè)周期和高額的監(jiān)測(cè)很大程序上制約了水產(chǎn)養(yǎng)殖監(jiān)控系統(tǒng)進(jìn)一步的發(fā)展。隨著傳感技術(shù)、通信技術(shù)、自動(dòng)化控制技術(shù)等技術(shù)的不斷發(fā)展和完善,養(yǎng)殖水質(zhì)監(jiān)控系統(tǒng)不斷地被研究和更新。舊有的檢測(cè)方式已滿足不了日益發(fā)展的需要,此時(shí)更新一代的養(yǎng)殖水質(zhì)監(jiān)控系統(tǒng)應(yīng)運(yùn)而生,它能夠利用各種水質(zhì)檢測(cè)相關(guān)的傳感器來(lái)采集養(yǎng)殖水體的各種狀態(tài),并能夠完成實(shí)時(shí)有效可靠監(jiān)測(cè)養(yǎng)殖水環(huán)境的狀態(tài)參數(shù),是一個(gè)運(yùn)用先進(jìn)存儲(chǔ)以及查看等功能的完整系統(tǒng)[4]?,F(xiàn)今已有的以串行總線、現(xiàn)場(chǎng)總線等有線的方式為基礎(chǔ)的水質(zhì)自動(dòng)監(jiān)測(cè)系統(tǒng),主要采用了分散管理,集中控制的有線控制方式。雖然這類有線系統(tǒng)可以滿足一定的生產(chǎn)需求,但整個(gè)系統(tǒng)很難適應(yīng)水產(chǎn)養(yǎng)殖環(huán)境的高濕度、高鹽度和高酸堿度,而且復(fù)雜的養(yǎng)殖環(huán)境使得現(xiàn)場(chǎng)布線施工困難,線路容易受腐蝕,維護(hù)成本高,因此在一定程度上也是制約了水產(chǎn)養(yǎng)殖監(jiān)控系統(tǒng)的發(fā)展[5,6]。目前,國(guó)內(nèi)外已在無(wú)線傳感器網(wǎng)絡(luò)在水產(chǎn)養(yǎng)殖監(jiān)控相關(guān)方面做了一定的應(yīng)用研究。歐美國(guó)家在水質(zhì)監(jiān)測(cè)系統(tǒng)方面發(fā)展比較快,設(shè)施很先進(jìn),將自動(dòng)監(jiān)測(cè)技術(shù)應(yīng)用于水產(chǎn)養(yǎng)養(yǎng)殖監(jiān)控系統(tǒng)提出了一套軟件仿真框架,該軟件框架由過(guò)濾和數(shù)據(jù)集成模塊、狀態(tài)建模建了一個(gè)漁場(chǎng)養(yǎng)殖自動(dòng)化監(jiān)控系統(tǒng),搭建了可以實(shí)時(shí)監(jiān)控漁場(chǎng)水環(huán)境的監(jiān)控網(wǎng)絡(luò),具有低成本、低功耗和易操作等特點(diǎn),同時(shí)又研究設(shè)計(jì)了一個(gè)可持續(xù)供電的供電系統(tǒng),可在設(shè)計(jì)并詳細(xì)介紹了以傳感器數(shù)據(jù)記錄為核心的水環(huán)境狀態(tài)監(jiān)控系統(tǒng),并且可以在任何地方通過(guò)Internet網(wǎng)絡(luò)或者移動(dòng)網(wǎng)絡(luò)接入監(jiān)控系統(tǒng)來(lái)查看監(jiān)控?cái)?shù)據(jù)。而相較國(guó)外來(lái)說(shuō),國(guó)內(nèi)在無(wú)線傳感網(wǎng)絡(luò)方面所做的研究工作總體來(lái)說(shuō)還是比較缺乏的,尤其是在基于無(wú)線傳2感網(wǎng)絡(luò)所做的水產(chǎn)養(yǎng)殖監(jiān)控系統(tǒng)方面的研究和應(yīng)用,目前看來(lái)仍是處于起步階段[10],然而盡管如此,國(guó)內(nèi)近期在這方面還是做了不少的探索研究。以下就是本文所做的一些總結(jié),文獻(xiàn)[11]提出將無(wú)線傳感網(wǎng)絡(luò)應(yīng)用到水產(chǎn)養(yǎng)殖中,并構(gòu)建了一個(gè)無(wú)線監(jiān)控系統(tǒng),同時(shí)研究?jī)?yōu)化了LEACH路由協(xié)議,經(jīng)驗(yàn)證其能夠滿足規(guī)?;a(chǎn)養(yǎng)殖大量數(shù)據(jù)傳輸?shù)男枰约氨WC通信安全可靠。文獻(xiàn)[12]對(duì)路由協(xié)議進(jìn)行研究比較,且在以自適應(yīng)分群分層路由協(xié)議為研究基礎(chǔ),研究了可根據(jù)節(jié)點(diǎn)電池剩余能量動(dòng)態(tài)地進(jìn)行數(shù)據(jù)傳輸方式切換的方法,從達(dá)到了節(jié)能和延長(zhǎng)網(wǎng)絡(luò)生命周期的目的。文獻(xiàn)[13]提出了基于無(wú)線傳感器網(wǎng)絡(luò)的參數(shù)測(cè)量和節(jié)能型變頻增氧控制,進(jìn)一步優(yōu)化通信網(wǎng)絡(luò),達(dá)到各節(jié)點(diǎn)供電電池剩余PI-PID控制算法對(duì)溶解氧含量進(jìn)行自動(dòng)變頻控制,實(shí)現(xiàn)了對(duì)養(yǎng)殖水環(huán)境最重要的溶解氧因子的閉環(huán)控制。文獻(xiàn)[14]構(gòu)建了基于無(wú)線傳感器網(wǎng)絡(luò)的水產(chǎn)養(yǎng)殖水質(zhì)監(jiān)測(cè)系統(tǒng),研究了設(shè)計(jì)PH值傳感器、溶解氧傳感器等傳感器信號(hào)采集和標(biāo)定,使得水質(zhì)參數(shù)檢測(cè)小型化成為可能,經(jīng)驗(yàn)證系統(tǒng)運(yùn)行穩(wěn)定、測(cè)量準(zhǔn)確可靠。文獻(xiàn)[15]基于物聯(lián)網(wǎng)技術(shù)設(shè)計(jì)了多功能水產(chǎn)養(yǎng)殖監(jiān)控系統(tǒng),可通過(guò)無(wú)線傳感技術(shù)、射頻識(shí)別等技術(shù)方法,全面地管理和監(jiān)測(cè)養(yǎng)殖環(huán)境,并結(jié)合實(shí)際項(xiàng)目進(jìn)行驗(yàn)證其具有高數(shù)據(jù)采集準(zhǔn)確性和高數(shù)據(jù)傳輸穩(wěn)定性??梢婋S著無(wú)線傳感網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,給水產(chǎn)養(yǎng)殖水體監(jiān)控帶來(lái)很大的發(fā)展。有了無(wú)線傳感網(wǎng)絡(luò)的幫助,對(duì)于養(yǎng)殖戶來(lái)說(shuō),可以更加方便地進(jìn)行管理養(yǎng)殖生產(chǎn);可以實(shí)時(shí)查看水環(huán)境狀態(tài),對(duì)異常情況可以第一時(shí)間做出處理;可以減少飼料浪費(fèi),減少環(huán)境污染等;為能生產(chǎn)出安全,綠色,高質(zhì)量的水產(chǎn)品提供了保障[16,17]。可見其有美好的發(fā)如生產(chǎn)過(guò)程缺乏病害預(yù)警機(jī)制與預(yù)防策略、水質(zhì)實(shí)時(shí)監(jiān)測(cè)與報(bào)警比較落后,相關(guān)技術(shù)還不夠成熟以及系統(tǒng)設(shè)備的高成本等問(wèn)題,這些問(wèn)題同樣也會(huì)限制養(yǎng)魚規(guī)模的擴(kuò)大和產(chǎn)量的提高,進(jìn)而制約整個(gè)行業(yè)的發(fā)展[18,19]。綜上所述,基于水產(chǎn)養(yǎng)殖監(jiān)控系統(tǒng)和無(wú)線傳感網(wǎng)絡(luò)技術(shù)的發(fā)展現(xiàn)狀,本論文針對(duì)網(wǎng)箱養(yǎng)殖監(jiān)控系統(tǒng)存在的如下兩方面的問(wèn)題開展研究和設(shè)計(jì):但是設(shè)備早已發(fā)給客戶,此時(shí)如果挨家挨戶的取下設(shè)備做升級(jí),顯然是不太現(xiàn)實(shí);運(yùn)行在PC機(jī)上的監(jiān)控軟件來(lái)查看,這就在空間和時(shí)間上帶來(lái)很大的局限,如果可以接入多種終端,如手機(jī)、PAD等,系統(tǒng)監(jiān)控將更加方便。31.3研究?jī)?nèi)容及章節(jié)內(nèi)容安排針對(duì)上述不足,本文基于無(wú)線傳感網(wǎng)絡(luò)、移動(dòng)網(wǎng)絡(luò)以及Internet網(wǎng)絡(luò)等網(wǎng)絡(luò)技術(shù),匯集和上傳,同時(shí)可實(shí)現(xiàn)對(duì)水環(huán)境參數(shù)隨時(shí)隨地查看等功能的網(wǎng)箱養(yǎng)殖多參數(shù)無(wú)線監(jiān)控系統(tǒng)。在系統(tǒng)中,以無(wú)線通信模塊和微控制器雙核結(jié)構(gòu)為基礎(chǔ)的傳感器節(jié)點(diǎn)與以嵌入式系統(tǒng)平臺(tái)為基礎(chǔ)的匯集網(wǎng)關(guān)進(jìn)行自組網(wǎng),之后傳感器節(jié)點(diǎn)通過(guò)外設(shè)資源和信號(hào)調(diào)理電路等進(jìn)行網(wǎng)箱水環(huán)境參數(shù)的采集、處理和發(fā)送,匯集網(wǎng)關(guān)接收各個(gè)傳感器節(jié)點(diǎn)所采集的參數(shù)并打包轉(zhuǎn)發(fā)到系統(tǒng)所設(shè)計(jì)的WEB服務(wù)器進(jìn)行數(shù)據(jù)存儲(chǔ),用戶可通過(guò)多種智能設(shè)備打開WEB界面進(jìn)行網(wǎng)箱養(yǎng)殖水環(huán)境狀態(tài)監(jiān)控。同時(shí),系統(tǒng)具有遠(yuǎn)程控制和傳感器固件無(wú)線遠(yuǎn)程更新的功能。論文各章節(jié)安排內(nèi)容如下:第一章:詳細(xì)介紹了在網(wǎng)箱養(yǎng)殖監(jiān)控系統(tǒng)方面所做研究的背景和意義,基于無(wú)線傳感網(wǎng)絡(luò)技術(shù)的水產(chǎn)養(yǎng)殖監(jiān)控系統(tǒng)的國(guó)內(nèi)外研究現(xiàn)狀,并總結(jié)現(xiàn)有系統(tǒng)的不足,提出本論文主要研究?jī)?nèi)容,最后介紹各章節(jié)內(nèi)容安排。第二章:詳細(xì)分析了網(wǎng)箱養(yǎng)殖的特點(diǎn)和需求,系統(tǒng)所開發(fā)設(shè)計(jì)的傳感器節(jié)點(diǎn)和匯集網(wǎng)關(guān)的主要功能和節(jié)點(diǎn)結(jié)構(gòu)以及系統(tǒng)所開發(fā)設(shè)計(jì)的WEB服務(wù)器軟件的優(yōu)勢(shì)和主要功能。第三章:詳細(xì)介紹了傳感器節(jié)點(diǎn)和匯集網(wǎng)關(guān)這兩個(gè)系統(tǒng)關(guān)鍵組成部分的相關(guān)硬件設(shè)計(jì),傳感器節(jié)點(diǎn)硬件設(shè)計(jì)涉及到對(duì)無(wú)線通信模塊的天線設(shè)計(jì),各水質(zhì)傳感器調(diào)理電路的設(shè)計(jì)等方面;匯集網(wǎng)關(guān)硬件設(shè)計(jì)主要包括對(duì)GPRS通信模塊的主電路,供電電源電路和SIM卡接口電路等方面。第四章:詳細(xì)介紹了系統(tǒng)軟件設(shè)計(jì)部分,主要包括傳感器節(jié)點(diǎn)軟件設(shè)計(jì),匯集網(wǎng)關(guān)軟件設(shè)計(jì)和WEB服務(wù)器軟件的設(shè)計(jì)。其中傳感器節(jié)點(diǎn)軟件設(shè)計(jì)主要包括對(duì)protothread狀態(tài)機(jī)的研究和應(yīng)用、FIFO緩存機(jī)制的研究設(shè)計(jì)與應(yīng)用等方面;嵌入式系統(tǒng)WinCE軟件設(shè)計(jì)主要包括對(duì)WinCE6.0系統(tǒng)的裁剪與移植,應(yīng)用軟件的設(shè)計(jì)與開發(fā)等方面;WEB服務(wù)器軟件設(shè)計(jì)主要包括對(duì)Django框架的研究和應(yīng)用等方面。bootloader和協(xié)議的遠(yuǎn)程固件無(wú)線更新的方法,設(shè)計(jì)研究了用于匯集網(wǎng)關(guān)與無(wú)線通信模塊和傳感器節(jié)點(diǎn)與無(wú)線通信模塊之間通信的自定義協(xié)議,研究改進(jìn)了文件傳輸協(xié)議使其更適合論文所設(shè)計(jì)的系統(tǒng),提出了遠(yuǎn)程固件無(wú)線更新的思路,并據(jù)此研究了STM32啟動(dòng)過(guò)程和中斷方式,設(shè)計(jì)開發(fā)了自定義bootloader程序,并研究設(shè)計(jì)了軟件程序與自定義bootloader程序之間的跳4轉(zhuǎn)代碼。第六章:詳細(xì)介紹系統(tǒng)實(shí)物整體運(yùn)行情況,包括軟件和硬件,以及記錄和分析相關(guān)數(shù)據(jù),并驗(yàn)證系統(tǒng)設(shè)計(jì)的遠(yuǎn)程固件無(wú)線更新方法的有效性。第七章:總結(jié)課題所做的工作以及所取得的成果,提出論文的不足點(diǎn),且對(duì)下一步的工作進(jìn)行展望。5第二章系統(tǒng)總體方案設(shè)計(jì)2.1網(wǎng)箱養(yǎng)殖的需求分析網(wǎng)箱養(yǎng)殖是近幾年來(lái)發(fā)展起來(lái)的一項(xiàng)具備高科技水平的養(yǎng)殖項(xiàng)目,它是利用人造的網(wǎng)狀箱體,放入水體中,形成一個(gè)適宜魚類生活的活水環(huán)境,能以較高的效益獲得較高的產(chǎn)出。網(wǎng)箱養(yǎng)魚之所以能高產(chǎn),很大程序上是因?yàn)榫W(wǎng)箱養(yǎng)殖是利用大自然自動(dòng)調(diào)節(jié)能進(jìn)而可以加速魚體的增長(zhǎng);另外,網(wǎng)箱的網(wǎng)狀結(jié)構(gòu)本身就有保護(hù)魚少受其他生物危害的作用。除此之外,網(wǎng)箱養(yǎng)魚方法具有機(jī)動(dòng)、靈活、簡(jiǎn)便、高產(chǎn)、水域適應(yīng)性廣等諸多特點(diǎn),在我國(guó)海、淡水養(yǎng)殖業(yè)中有廣闊的發(fā)展前途[20-22]。在實(shí)際的網(wǎng)箱養(yǎng)殖過(guò)程中,選擇合適的養(yǎng)殖環(huán)境非常重要。一般而言,設(shè)置網(wǎng)箱的的水流,不易過(guò)大過(guò)小,一般0.05-0.2米/秒為宜;③選擇富含豐富的浮游生物,且不僅適合魚體生長(zhǎng),又適合富有生物生長(zhǎng)的水域。網(wǎng)箱培育魚種是高密度的養(yǎng)殖,需要根據(jù)網(wǎng)箱中水的更新速度,水體中浮游生物含量和飼養(yǎng)管理技術(shù)水平等來(lái)確定放養(yǎng)密度。密度跟成活率密切相關(guān),衡量網(wǎng)箱養(yǎng)殖的水平高低的重要一條就是產(chǎn)量和成活率。此外還速度、水質(zhì)透明度等參數(shù),同時(shí)網(wǎng)箱培育魚種必須科學(xué)投喂,做到定質(zhì)、定量、定時(shí)、定位地進(jìn)行投餌。為做到科學(xué)養(yǎng)殖,養(yǎng)殖戶需要針對(duì)不同情況進(jìn)行多方案投餌,根據(jù)不同的季節(jié)和不同的水溫進(jìn)行動(dòng)態(tài)調(diào)整投餌量。具體投餌量還需要視天氣和魚的吃食情況來(lái)靈活掌握,因此投餌過(guò)程也需要智能控制。整個(gè)網(wǎng)箱養(yǎng)殖系統(tǒng)在地域上往往處于邊遠(yuǎn)郊區(qū),而且都是露天環(huán)境,現(xiàn)場(chǎng)環(huán)境極其復(fù)雜,對(duì)此利用普通工業(yè)現(xiàn)場(chǎng)總線聯(lián)網(wǎng)的方案往往難以實(shí)現(xiàn),因此課題提出基于無(wú)線監(jiān)控的方案。系統(tǒng)主要以Zigbee無(wú)線傳感網(wǎng)絡(luò)、GPRS移動(dòng)網(wǎng)絡(luò)以及Internet網(wǎng)絡(luò)等網(wǎng)絡(luò)技術(shù)為基礎(chǔ),以嵌入式系統(tǒng)和web服務(wù)器為載體,并結(jié)合傳感、信號(hào)變換等技術(shù),實(shí)現(xiàn)了網(wǎng)箱養(yǎng)殖水環(huán)境的實(shí)時(shí)遠(yuǎn)程監(jiān)測(cè)與控制。系統(tǒng)總體框圖如下圖2-1所示。圖中一個(gè)傳感器節(jié)點(diǎn)對(duì)應(yīng)一個(gè)網(wǎng)箱,匯集網(wǎng)關(guān)將n個(gè)傳感器節(jié)點(diǎn)將數(shù)據(jù)匯集起來(lái),6再通過(guò)移動(dòng)網(wǎng)絡(luò)發(fā)往因特網(wǎng)。一般而言,一個(gè)匯聚節(jié)點(diǎn)對(duì)應(yīng)一個(gè)養(yǎng)殖場(chǎng)。若是多個(gè)養(yǎng)殖場(chǎng)的監(jiān)控就需要多個(gè)匯集網(wǎng)關(guān)。這一過(guò)程中匯聚節(jié)點(diǎn)通過(guò)ZigBee無(wú)線傳感網(wǎng)絡(luò)利用協(xié)議與采集節(jié)點(diǎn)連接,將養(yǎng)殖場(chǎng)中各個(gè)網(wǎng)箱的水環(huán)境參數(shù)信息并整合,通過(guò)GPRS移動(dòng)網(wǎng)絡(luò)中轉(zhuǎn)上傳到web服務(wù)器,儲(chǔ)存到相應(yīng)的數(shù)據(jù)庫(kù)中。最終養(yǎng)殖戶可以用PC機(jī)等設(shè)備訪問(wèn)web服務(wù)器,通過(guò)課題設(shè)計(jì)開發(fā)的基于WEB的服務(wù)器端軟件實(shí)現(xiàn)各個(gè)網(wǎng)箱的水環(huán)境參數(shù)的監(jiān)測(cè),同時(shí)還可以遠(yuǎn)程操縱網(wǎng)箱各執(zhí)行機(jī)構(gòu)的運(yùn)行狀態(tài)。對(duì)應(yīng)上述系統(tǒng)總體結(jié)構(gòu),課題在工作上主要也就上述三大部分展開,即:傳感器節(jié)點(diǎn)設(shè)計(jì)、匯聚節(jié)點(diǎn)設(shè)計(jì)和基于WEB的服務(wù)器端軟件設(shè)計(jì)。圖2-1系統(tǒng)總體結(jié)構(gòu)2.2傳感器節(jié)點(diǎn)設(shè)計(jì)傳感器節(jié)點(diǎn)主要具備采集網(wǎng)箱水環(huán)境參數(shù),打包和發(fā)送數(shù)據(jù)以及響應(yīng)遠(yuǎn)程控制指令等功能,并能對(duì)執(zhí)行機(jī)構(gòu)進(jìn)行控制。節(jié)點(diǎn)采用由STM32F103RBT6微控制器和TI(德州儀器)的CC2530微控制器組合使用的雙核方案來(lái)實(shí)現(xiàn)節(jié)點(diǎn)功能。其中STM32F103RBT6微控制器主要負(fù)責(zé)水環(huán)境各參數(shù)的采集,電池電壓的檢測(cè)和充氧泵等執(zhí)行機(jī)構(gòu)的控制,CC2530微控制器主要負(fù)責(zé)進(jìn)行組網(wǎng)以及傳輸數(shù)據(jù)和控制指令,傳感器節(jié)點(diǎn)結(jié)構(gòu)圖如圖2-2所示。7執(zhí)行機(jī)構(gòu)模塊執(zhí)行機(jī)構(gòu)模塊SM32F103RC6單片機(jī)控制模塊傳感器模塊CC2530無(wú)線通信模塊電源模塊太陽(yáng)能充電模塊UART圖2-2傳感器節(jié)點(diǎn)結(jié)構(gòu)圖2.3匯集網(wǎng)關(guān)設(shè)計(jì)匯集網(wǎng)關(guān)結(jié)構(gòu)圖如圖2-3所示。服務(wù)器801GGPRS通信模塊CC2530無(wú)線通信模塊電源模塊以太網(wǎng)接口UARTsyARMMX283嵌入式系統(tǒng)平臺(tái)UART圖2-3匯集網(wǎng)關(guān)結(jié)構(gòu)圖匯集網(wǎng)關(guān)主要具備匯集和上傳各傳感器節(jié)點(diǎn)數(shù)據(jù)、轉(zhuǎn)發(fā)遠(yuǎn)程控制指令等功能。本文采用廣州周立功單片機(jī)科技有限公司的EasyARM-iMX283嵌入式系統(tǒng)平臺(tái)來(lái)完成節(jié)點(diǎn)功能,平臺(tái)以Freescale公司的基于ARM9內(nèi)核的i.MX283多媒體應(yīng)用處理器為核心,其主頻為DDR2和NAND3路路路SPI、4路12bitADC、1路10/100M以太網(wǎng)接口、1路SDIO、1路I2S接口、1路USBOTG接口、1路USBHost接口、支持TFT液晶屏和電阻式觸摸。平臺(tái)的資源豐富,同時(shí)其資源基本都以接口或者排針的形式引出,可方便外接其他功能模塊來(lái)擴(kuò)展平臺(tái)功能。系統(tǒng)通過(guò)一路接口與CC2530無(wú)線通信模塊相連,通過(guò)無(wú)線協(xié)議進(jìn)行組網(wǎng),利用無(wú)線網(wǎng)絡(luò)將整個(gè)無(wú)線傳感網(wǎng)絡(luò)中的各個(gè)網(wǎng)箱的水環(huán)境參數(shù)進(jìn)行匯集,并加以處8理;通過(guò)一路以太網(wǎng)接口或者GPRS接口可將平臺(tái)與Internet網(wǎng)絡(luò)進(jìn)行綁定,將已匯聚的各節(jié)點(diǎn)數(shù)據(jù)上傳到web服務(wù)器的數(shù)據(jù)庫(kù)中。2.4基于WEB的服務(wù)器軟件設(shè)計(jì)服務(wù)器端信息綜合管理系統(tǒng)軟件需要具備對(duì)現(xiàn)場(chǎng)眾多節(jié)點(diǎn)監(jiān)測(cè)和部分執(zhí)行器件控制的功能,主要體現(xiàn)兩種優(yōu)勢(shì):a)強(qiáng)大的數(shù)據(jù)處理與功能;b)靈活的接入方式,支持手機(jī)、Pad等多種終端;基于以上兩點(diǎn)考慮,系統(tǒng)軟件將會(huì)選擇可利用計(jì)算機(jī)、Pad或者手機(jī)隨時(shí)訪問(wèn),并可以根據(jù)需要加入信息推送功能,將監(jiān)控狀態(tài)直接推送到用戶手中,比如報(bào)警信息,以便客戶在第一時(shí)間進(jìn)行應(yīng)對(duì)。PythonMySQL5.5Django框架的進(jìn)行前端界面的開發(fā)。軟件功能部分需要設(shè)計(jì)包含:數(shù)據(jù)采集存儲(chǔ)、多參數(shù)數(shù)據(jù)曲線顯示、數(shù)據(jù)查詢等各部分功能。2.5本章小結(jié)本章首先對(duì)網(wǎng)箱養(yǎng)殖的相關(guān)知識(shí)及其特點(diǎn)進(jìn)行介紹,之后對(duì)傳感器節(jié)點(diǎn)和匯集網(wǎng)關(guān)的節(jié)點(diǎn)結(jié)構(gòu)以及主要功能進(jìn)行詳細(xì)介紹,最后分析了WEB服務(wù)器軟件的優(yōu)勢(shì)并系統(tǒng)所設(shè)計(jì)的WEB服務(wù)器的主要功能。9第三章系統(tǒng)硬件設(shè)計(jì)網(wǎng)箱養(yǎng)殖監(jiān)控系統(tǒng)中涉及到眾多檢測(cè)水參數(shù)的傳感器,而不同的傳感器信號(hào)需要進(jìn)行不同的調(diào)理輸出,數(shù)據(jù)的采集需要微控制器的支持,數(shù)據(jù)的傳輸需要通信模塊支持,整個(gè)系統(tǒng)功能的實(shí)現(xiàn)需要有硬件平臺(tái)作為基礎(chǔ)支持,因此課題開展了相應(yīng)的硬件設(shè)計(jì)工作。對(duì)于傳感器節(jié)點(diǎn)而言,硬件設(shè)計(jì)的主要內(nèi)容包含無(wú)線通信模塊設(shè)計(jì)、信號(hào)處理單元設(shè)計(jì)、ARM處理器控制模塊設(shè)計(jì)等。對(duì)于匯聚網(wǎng)關(guān)而言,硬件設(shè)計(jì)的主要內(nèi)容包含無(wú)通信模塊設(shè)計(jì)等。3.1傳感器節(jié)點(diǎn)硬件設(shè)計(jì)3.1.1無(wú)線通信模塊設(shè)計(jì)課題采用MAC和物理層網(wǎng)絡(luò)規(guī)范國(guó)際標(biāo)準(zhǔn)的2.4G射頻收發(fā)器2400~2483.6MHz16個(gè)免許可證的頻段通道,數(shù)據(jù)傳輸率可最高達(dá)250kbps[24],具有成本低,組網(wǎng)速度快,網(wǎng)絡(luò)穩(wěn)定等特點(diǎn),是一款廣泛應(yīng)用于智能家居、智能農(nóng)業(yè)、安全監(jiān)控等行業(yè)的片上系統(tǒng)解決方案。圖3-1CC2530應(yīng)用電路如上圖3-1所示是CC2530的應(yīng)用電路,從圖中可以看出CC2530的最小系統(tǒng)有電10源,時(shí)鐘電路,復(fù)位電路和天線電路等組成,而天線電路是設(shè)計(jì)的關(guān)鍵部分,其一般采用2種設(shè)計(jì)方案:一種是SMA天線,一種是PCB天線,在距離稍遠(yuǎn)的實(shí)際應(yīng)用中,一般采用SMA天線,如果需要還可以在天線前端增加功率放大模塊,來(lái)進(jìn)一步增加發(fā)射功率從而提高傳播距離。課題采用SMA方案。課題對(duì)阻抗匹配的基本原理做了一些研究。一般來(lái)說(shuō),阻抗匹配主要是通過(guò)負(fù)載阻抗與激勵(lì)源內(nèi)部阻抗進(jìn)行互相適配來(lái)實(shí)現(xiàn),目的是為了獲得最大功率輸出。下圖3-2所示的電源負(fù)載電路,其中E為電壓源,r為電源E的內(nèi)阻,R為負(fù)載電阻。由于r的存R很小時(shí)趨于短路狀態(tài);而當(dāng)R很大時(shí),電路趨于開路狀態(tài)[25]。根據(jù)公式3-(1),負(fù)載在開路或者短路狀態(tài)下都不能獲得最大功率。p=I2R=E R+r

2 E2R=Rr24r+

只有當(dāng)

4r+

E2Rr2R

R分母中的r2的值取最小值0時(shí)負(fù)載才能獲得最大輸出功率。因此,得出當(dāng)要向負(fù)載輸出最大功率,就要滿足負(fù)載電阻等于電源內(nèi)阻時(shí)。同理,在設(shè)計(jì)天線電路時(shí),為了輸出最大的天線發(fā)射功率,就需要做到天線線路的輸出阻抗與天線阻抗等大。ErR圖3-2電源負(fù)載電路從上圖3-1所示的天線電路可以看出CC2530輸出的射頻信號(hào)是差分信號(hào)。差分電路具有高增益、抗電磁干擾、抗電源噪聲、抗地噪聲能力很高、抑制偶次諧波等優(yōu)點(diǎn),如今在RF電路和低頻電路中,差分電路的使用越來(lái)越廣泛。如果將芯片的兩路射頻信系統(tǒng)設(shè)計(jì)包括課題所設(shè)計(jì)的系統(tǒng)一般選用的天線是同軸電纜,是不平衡傳輸,為了不影響天線信號(hào)的發(fā)射,就要避免在天線的屏蔽層,也就是外皮,出現(xiàn)高頻電流。因此,就需要要在天線和電纜之間加入平衡不平衡轉(zhuǎn)換器,將本將流入天線外皮的高頻信號(hào)截?cái)酁閷?shí)現(xiàn)上述轉(zhuǎn)換,可直接選用價(jià)格較貴的集成的巴倫模塊,但如果對(duì)帶寬和頻率要{求不高,完全可用分立元件實(shí)現(xiàn)。為了更直接的了解和掌握天線設(shè)計(jì)的流程,課題采用分立元件來(lái)完成巴倫電路的設(shè)計(jì)。如下圖3-3所示是巴倫結(jié)構(gòu)。{}RI L}CC平衡端輸入不平衡端輸出L圖3-3巴倫結(jié)構(gòu)取值計(jì)算公式RI和RL分別為單端和輸出端口的阻抗。=2fZC=RIRLL=ZCC=1 ZC

3.1.2信號(hào)調(diào)理電路設(shè)計(jì)由于網(wǎng)箱養(yǎng)殖所涉及的參數(shù)眾多,需要不同的傳感器,有些是模擬輸出的,有些是數(shù)字輸出,不同的傳感器往往又涉及到不同信號(hào)處理和獲取的方法。課題選取其中兩個(gè)傳感器信號(hào)來(lái)加以描述,限于篇幅,其他傳感器設(shè)計(jì)部分不再贅述。1、PH傳感器信號(hào)調(diào)理模塊課題采用的PH傳感器是基于復(fù)合電極制成的PH3-4所示是PH傳感器的調(diào)理電路,傳感器接到圖中所示的P1座子上。系統(tǒng)選用的PH傳感器是采用PH玻璃電極和參比電極組合而成的結(jié)構(gòu),其輸出信號(hào)即為兩個(gè)電極的相對(duì)電壓。傳感器在酸堿性不同溶液中會(huì)輸出正負(fù)變化的電壓值,當(dāng)參比電極處于中性溶液中時(shí),酸性溶液輸出正壓,堿性溶液輸出負(fù)壓[28]。然而負(fù)壓對(duì)于所選STM32F103RC微控制器的AD(模數(shù)轉(zhuǎn)換)來(lái)說(shuō)是不可接受的,所以就利用其輸出信號(hào)時(shí)相對(duì)于參比電極的電壓差值這個(gè)特性,給參比電極,也就是傳感器的PH-端,加上一個(gè)合適的電壓值,保證信號(hào)電極電壓恒為正值。此電壓通過(guò)TL431基準(zhǔn)源產(chǎn)生,再通過(guò)電壓跟隨器平穩(wěn)輸出,再配合放大器12放大輸出得到在控制器AD工作電壓范圍內(nèi)的電壓。在實(shí)際調(diào)試過(guò)程中,需根據(jù)控制器AD的工作電壓范圍來(lái)調(diào)節(jié)滑動(dòng)變阻器W1來(lái)調(diào)整輸出,保證其在一定范圍內(nèi)。TL431提供的基準(zhǔn)電壓計(jì)算公式3-(3)如下:(1W1/R4),

)傳感器信號(hào)經(jīng)由下圖3-43-(4)計(jì)算得出:_(PH)/測(cè)量出的電壓信號(hào)到最后的使用,還需進(jìn)行校準(zhǔn)標(biāo)定。盡管pH計(jì)盡管種類很多,但其pH值與傳感器輸出的電壓信號(hào)是成線性關(guān)系,一般校準(zhǔn)方法是采用兩點(diǎn)校準(zhǔn)法,即選擇兩種標(biāo)準(zhǔn)緩沖液:一種pH7標(biāo)準(zhǔn)緩沖液,第二種是pH9標(biāo)準(zhǔn)緩沖液或pH4緩沖液。課題選用雷磁的鄰苯二甲酸氫鉀溶液(pH=4.00,25℃)和混合磷酸鹽溶液圖3-4PH傳感器的調(diào)理電路2、溶解氧傳感器信號(hào)調(diào)理模塊陰0.1M氯化鉀(KCl)溶液作為電解液,采用用硅橡膠滲透膜作透氣膜。根據(jù)透過(guò)滲透膜的氧量與水中溶解氧濃度成正比,可得電極間的極限擴(kuò)散電流與水中溶解氧濃度成正比[29],因此,只需用檢測(cè)此擴(kuò)散電流,再經(jīng)轉(zhuǎn)換運(yùn)算就可得到溶液中的氧含量。圖3-5所示是溶解氧傳感器的調(diào)理電路,主要完13成將傳感器輸出的4-20ma的電流信號(hào)轉(zhuǎn)成STM32F103RC微控制器可接受的電壓信號(hào),電路中R7電阻選型比較講究,要求精度高,溫漂小,其作用是將輸入的電流信號(hào)轉(zhuǎn)變成相應(yīng)的電壓值,之后利用運(yùn)算放大器輸入高阻的特性,將上述轉(zhuǎn)換過(guò)來(lái)的電壓分壓輸入到雙運(yùn)算放大器TLC27L2的一個(gè)放大器中并進(jìn)行10處理電路輸入到TLC27L2個(gè)電路需要通過(guò)調(diào)整滑動(dòng)變阻器W1進(jìn)行輸出校準(zhǔn)。經(jīng)過(guò)該電路處理即可完成溶解氧傳感器輸出,從而可進(jìn)行后續(xù)處理分析。傳感器信號(hào)經(jīng)由下圖3-53-(5)計(jì)算得出:VI

R7W1pR4,

3-(5)o iR7W1 R5若W1R7W1將近似等于R7W1圖3-5溶解氧傳感器的調(diào)理電路3.2匯集網(wǎng)關(guān)硬件設(shè)計(jì)課題選用EasyARM-iMX283作為系統(tǒng)采集數(shù)據(jù)和控制數(shù)據(jù)傳輸?shù)闹行?,要求匯集網(wǎng)關(guān)需要比較高的性能,要有較大的數(shù)據(jù)緩存、較快的數(shù)據(jù)處理、多任務(wù)快速切換調(diào)度和管理等能力。EasyARM-iMX283平臺(tái)所擁有的豐富外設(shè)資源,足以滿足課題所需的數(shù)據(jù)采集、數(shù)據(jù)傳輸以及更高水平更復(fù)雜的應(yīng)用。另外,課題設(shè)計(jì)中需要通過(guò)1路以太網(wǎng)接口或者GPRS接口將系統(tǒng)接入Internet應(yīng)的驅(qū)動(dòng)電路,這塊更多的是集中在軟件方面的研究,論文將在第四章中詳細(xì)闡述,本節(jié)則主要來(lái)介紹GPRS通信模塊的設(shè)計(jì)。143.2.1GPRS通信模塊設(shè)計(jì)課題所設(shè)計(jì)的GPRS通信模塊,可被稱為數(shù)據(jù)傳輸單元DTU(DataTransfer是專門用于將串口數(shù)據(jù)轉(zhuǎn)換為數(shù)據(jù)或?qū)?shù)據(jù)轉(zhuǎn)換為串口數(shù)據(jù)通過(guò)無(wú)線移動(dòng)網(wǎng)絡(luò)進(jìn)硬件平臺(tái)通過(guò)串口與GPRS模塊相連,實(shí)現(xiàn)將各網(wǎng)箱所采集的水環(huán)境參數(shù)通過(guò)串口發(fā)給GPRS模塊,經(jīng)過(guò)拆包打包通過(guò)移動(dòng)網(wǎng)絡(luò)和Internet網(wǎng)絡(luò)轉(zhuǎn)發(fā)到相應(yīng)的服務(wù)器。如下圖3-6所示是課題設(shè)計(jì)的GPRS模塊選用北京公司的W801G將介紹GPRS通信模塊硬件設(shè)計(jì)的幾個(gè)關(guān)鍵部分:圖3-6GPRS通信模塊153.2.2供電電源模塊設(shè)計(jì)課題所選用的GPRS3.3V~4.2V射射頻信號(hào)時(shí)電流峰值最高會(huì)達(dá)到2A以上,因此在電源設(shè)計(jì)時(shí)就選擇供電能力要盡可能達(dá)到LM2576-ADJ來(lái)作為供電穩(wěn)壓芯片,其最大輸出電流可達(dá)3A和可調(diào)輸出電壓都能滿足模塊正常穩(wěn)定工作所需的電壓和電流,若不正確的選擇,就會(huì)導(dǎo)致在模塊使用過(guò)程中出現(xiàn)電壓跌落的環(huán)境比較惡劣,模塊供電很容易受到外部干擾,為了增強(qiáng)模塊電源抗干擾能力,設(shè)計(jì)中在外部電源輸入端加入一些TVS管等器件,在供電芯片輸出端加一些nf、pf級(jí)電容,濾除干擾[32]。+12VM2576801GGNDINGNDOUTGNDVCCGND圖3-7GPRS通信模塊合理布局通信模塊工作穩(wěn)定性的好壞與模塊PCB的布局和布線有著很大的關(guān)系。若模塊PCB設(shè)計(jì)不進(jìn)行合理的布局和布線,在模塊開機(jī)注冊(cè)網(wǎng)絡(luò)、TCP/IP傳輸數(shù)據(jù)頻繁大數(shù)據(jù)量、信號(hào)強(qiáng)度不好等需要比較大電流的情況下時(shí),模塊就很可能也會(huì)出關(guān)機(jī)或重啟現(xiàn)象。如上圖3-7所示是課題研究設(shè)計(jì)比較合理的布局。在PCB布線中,還要特別注意地線的布線,因?yàn)榈鼐€在整個(gè)回流路徑中出現(xiàn)長(zhǎng)短不一或者阻抗的不連續(xù),也會(huì)造成電源跌落,進(jìn)而會(huì)影響模塊正常工作。課題設(shè)計(jì)中,將地線做如下模塊的GND,電源適配器的GND間用一塊完整的銅PCB板盡量多打地孔,從而保證電源和地的回流路徑最小。為了能達(dá)到更好的穩(wěn)壓效果,設(shè)計(jì)中還需要在靠近模塊的VCC引腳處接上大電容,16進(jìn)一步地確保供電電壓的穩(wěn)定,進(jìn)而可以增加模塊工作的穩(wěn)定性。3.2.3SIM卡接口電路設(shè)計(jì)課題所選的GPRS模塊支持1.8V或者3.0V的SIMSIM卡的類型自3.0V±10%或者SIM卡的通信也是很容易受到環(huán)境和供電的影響,如圖3-6所示,課題故作如下的設(shè)計(jì):VSIM:需要并100或220nF電容,以穩(wěn)定電源輸出,減小紋波;SIMIO:建議并pF級(jí)電容,防止高頻干擾;SIMRST:建議并nF級(jí)電容,防止高頻干擾;為了增強(qiáng)SIM卡部分的可靠性,在靠近SIM卡卡座的接口處增加ESD靜電保護(hù)器件[33]。PCB布局和布線時(shí),將SIM卡卡座盡量靠近模塊,避免走線過(guò)長(zhǎng),導(dǎo)致無(wú)法識(shí)別SIM卡。上述提到的電容、ESD等器件放置要靠近SIM卡座。3.3本章小結(jié)本章結(jié)合自身實(shí)際應(yīng)用的經(jīng)驗(yàn)具體介紹了傳感器節(jié)點(diǎn)和匯集網(wǎng)關(guān)的硬件設(shè)計(jì)中的幾個(gè)關(guān)鍵點(diǎn)。在傳感器節(jié)點(diǎn)硬件設(shè)計(jì)這方面,主要對(duì)各傳感器調(diào)理電路的設(shè)計(jì),無(wú)線通信模塊的天線設(shè)計(jì)等方面進(jìn)行了介紹;在匯集網(wǎng)關(guān)硬件設(shè)計(jì)這方面,主要對(duì)GPRS通信模塊的主電路,電源電路和SIM卡接口電路等方面進(jìn)行了介紹。17第四章系統(tǒng)軟件設(shè)計(jì)針對(duì)網(wǎng)箱養(yǎng)殖特點(diǎn)與功能要求,在本文硬件設(shè)計(jì)的基礎(chǔ)上,采用多種軟件平臺(tái)和軟對(duì)應(yīng)于傳感器節(jié)點(diǎn)、匯聚網(wǎng)關(guān)以及WEB服務(wù)器,課題開展了相應(yīng)的軟件設(shè)計(jì)工作。對(duì)于傳感器節(jié)點(diǎn)而言,軟件設(shè)計(jì)的主要內(nèi)容包含無(wú)線傳感網(wǎng)絡(luò)搭建、protothread狀態(tài)機(jī)、簡(jiǎn)易FIFOWinCE6.0嵌入式操作系統(tǒng)的裁剪與移植、應(yīng)用軟件開發(fā)與設(shè)計(jì)等。對(duì)于WEB服務(wù)器而言,軟件設(shè)計(jì)的主要內(nèi)容包括Django界面開發(fā)等。4.1無(wú)線傳感網(wǎng)絡(luò)的搭建4.1.1無(wú)線傳感器網(wǎng)絡(luò)相關(guān)概念SensorNetworks,WSN)就是由部署在監(jiān)測(cè)區(qū)域中大量的廉價(jià)微型傳感器節(jié)點(diǎn)組成,通過(guò)無(wú)線通信方式形成的一個(gè)多跳的自組織網(wǎng)絡(luò)系統(tǒng),其目無(wú)線傳感網(wǎng)絡(luò)是大規(guī)模、自組織、動(dòng)態(tài)性、可靠性強(qiáng)的網(wǎng)絡(luò),又是以數(shù)據(jù)為中心的網(wǎng)絡(luò),是與應(yīng)用相關(guān)的網(wǎng)絡(luò),這完全可以符合課題的需要。4.1.2無(wú)線傳感網(wǎng)絡(luò)的體系架構(gòu)圖4-1無(wú)線傳感網(wǎng)絡(luò)的體系架構(gòu)如第二章所述,課題構(gòu)建了較為合理的無(wú)線傳感網(wǎng)絡(luò),包括隨機(jī)部署在檢測(cè)區(qū)域內(nèi)18部或附近的傳感器節(jié)點(diǎn)、收集檢測(cè)區(qū)域內(nèi)各傳感器節(jié)點(diǎn)數(shù)據(jù)的匯聚節(jié)點(diǎn)以及在云端對(duì)檢集節(jié)點(diǎn),當(dāng)距離過(guò)遠(yuǎn)或者信號(hào)過(guò)差,還可沿著其他傳感器節(jié)點(diǎn)進(jìn)行路由傳輸,經(jīng)過(guò)多次轉(zhuǎn)發(fā)后到達(dá)匯聚節(jié)點(diǎn)。最后,數(shù)據(jù)還可通過(guò)各種網(wǎng)絡(luò)媒介到達(dá)管理節(jié)點(diǎn)。用戶通過(guò)管理圖4-1所示。圖4-2IAR工程目錄4.1.3基于協(xié)議棧的無(wú)線傳感網(wǎng)絡(luò)搭建1、Z-Stack協(xié)議棧課題設(shè)計(jì)的系統(tǒng)在傳感器和匯聚節(jié)點(diǎn)之間,選用了Z-Stack網(wǎng)絡(luò)協(xié)議進(jìn)行組網(wǎng)通信,它是TI公司研發(fā),通過(guò)zigbee聯(lián)盟認(rèn)證的免費(fèi)協(xié)議棧,協(xié)議內(nèi)部也包括了OS的模型,協(xié)議棧具有國(guó)際化,標(biāo)準(zhǔn)化的特點(diǎn),協(xié)議棧已提供十幾種(未來(lái)會(huì)更多)應(yīng)用場(chǎng)景剖面(如圖4-2所示是Z-Stack協(xié)議棧的IAR工程目錄。軟件程序一般是從main函數(shù)開始,Z-Stack協(xié)議棧亦然,通過(guò)研究分析Z-Stack協(xié)議棧的工程發(fā)現(xiàn),協(xié)議棧主要完成兩個(gè)任務(wù):一個(gè)是完成系統(tǒng)各硬件外設(shè)和軟件架構(gòu)的初始化,另一個(gè)任務(wù)就是執(zhí)行操作系統(tǒng)抽象層實(shí)體。a)各硬件外設(shè)和軟件架構(gòu)的初始化為了使操作系統(tǒng)抽象層的軟件程序正常運(yùn)行,系統(tǒng)上電啟動(dòng)需要完硬件平臺(tái)和軟件架構(gòu)的初始化,主要有系統(tǒng)時(shí)鐘初始化、芯片工作電壓檢測(cè)、初始化堆棧、I/O外設(shè)初19開始o(jì)s_n_dsb開始o(jì)s_n_dsb()關(guān)閉所有中斷HA_BOARD_INI()初始化系統(tǒng)時(shí)鐘zmain_vdd_check():檢查芯片電壓是否正常zmain_ram_init():初始化堆棧InitBoard(OB_COLD):初始化I/OHalDriverInit():初始化底層驅(qū)動(dòng)osal_nv_init():初始化flash存儲(chǔ)zmain_ext_addr():初始化節(jié)點(diǎn)MAC地址os_srt_sysos_srt_sysm(執(zhí)行操作系統(tǒng)gIn()初始化一些非易失變量fInt()初始化應(yīng)用框架層os_n_sysm()初始化操作層os_nt_nbe()使能全部中斷InBorOB_RRDY)初始化KYn_dv_nf()顯示設(shè)備信息b)操作系統(tǒng)抽象層實(shí)體的執(zhí)行系統(tǒng)初始完成后,就開始執(zhí)行操作系統(tǒng)抽象層的入口程序,之后便由操作系統(tǒng)抽象Osal_start_system(),此函數(shù)是一個(gè)死循環(huán),若沒(méi)有則程序會(huì)跑飛。自這個(gè)函數(shù)運(yùn)行后,程序就不斷地進(jìn)行輪轉(zhuǎn)查詢的操作,以便保證每個(gè)任務(wù)事件發(fā)生時(shí),可以即刻調(diào)用相應(yīng)的事件處理函數(shù)進(jìn)行任務(wù)的處理。2、無(wú)線傳感網(wǎng)絡(luò)的搭建在Z-Stack協(xié)議棧中需要在f8wConfig.cfg文件中來(lái)配置建立或者加入網(wǎng)絡(luò)的和的配置,協(xié)議棧會(huì)根據(jù)上述文件的ZDAPP_CONFIG_PAN_ID參數(shù)值的不同來(lái)選擇設(shè)備是強(qiáng)制建立或加入一個(gè)固定的網(wǎng)絡(luò)20過(guò)設(shè)置上述文件中的參數(shù)為不同的值來(lái)選擇加入16個(gè)通信頻道協(xié)議默認(rèn)的頻道。運(yùn)行協(xié)調(diào)器建立網(wǎng)絡(luò),路由器或終端設(shè)備加入網(wǎng)絡(luò)。Z-Stack協(xié)議棧中,在新建立自定義任務(wù)時(shí),需要加入如下兩個(gè)函數(shù):SensorApp_Init()和SensorApp_ProcessEvent()。SensorApp_Init()用來(lái)完成自定義任務(wù)的初始化,包括任務(wù)運(yùn)行所需的變量,網(wǎng)絡(luò)模式以及設(shè)備類型等;SensorApp_ProcessEvent()用來(lái)完成自定義任務(wù)事件的處理,在初始化時(shí)需要將該事件處理函數(shù)綁定到任務(wù)事件列表,以便在任務(wù)事件發(fā)生時(shí)調(diào)用對(duì)應(yīng)的事件處理函數(shù)?;谏鲜隹偨Y(jié),課題所設(shè)計(jì)的傳感器節(jié)點(diǎn)的初始化和運(yùn)行流程如下圖4-4程詳細(xì)描述如下:在osal_init_system()中的osalInitTasks()中新建SensorApp_Init(taskID),并在tasksArr[]數(shù)組中添加SensorApp_ProcessEvent進(jìn)行綁定;通過(guò)Osal_start_system()執(zhí)行osal進(jìn)行任務(wù)輪詢;c)在系統(tǒng)輪詢到自定義任務(wù)時(shí),進(jìn)入到相應(yīng)的事件處理函數(shù)中進(jìn)行判斷和處理事件,即SensorApp_ProcessEvent()函數(shù),主要有事件有SYS_EVENT_MSG和,而在SYS_EVENT_MSG事件中主要又分AF_INCOMING_MSG_CMD(收到新的無(wú)線數(shù)據(jù))和3、透?jìng)髂J綖榱伺渲脗鞲衅鞴?jié)點(diǎn)所設(shè)計(jì)的軟件功能,CC2530軟件設(shè)計(jì)這塊除了要完成基于Z-Stack勢(shì)在于用戶可以直接跳過(guò)無(wú)線通信模塊組網(wǎng)的過(guò)程,只需要考慮應(yīng)用軟件的實(shí)現(xiàn),可以很大程序上減少項(xiàng)目開發(fā)的時(shí)間,簡(jiǎn)化項(xiàng)目應(yīng)用的開發(fā)流程,用戶只需將數(shù)據(jù)通過(guò)串口發(fā)送到無(wú)線通信模塊里,模塊就會(huì)按照預(yù)先配置好的通信參數(shù)發(fā)出,目的接收模塊接收21在在osInsks()函數(shù)中初始化自定義應(yīng)用SnsorApp在Osl_sr_sysm()函數(shù)中開始輪詢?nèi)蝿?wù)進(jìn)入到SnsorApp_Prossvn(函數(shù)進(jìn)行事件處理處理接收到的數(shù)據(jù)執(zhí)行一次SND_DAA_VNT任務(wù)打包數(shù)據(jù)且發(fā)送是否輪詢到自定義應(yīng)用SnsorAp?NNN是否收到數(shù)據(jù)? 網(wǎng)絡(luò)狀態(tài)是否發(fā)生變化? 是否需要發(fā)送數(shù)據(jù)?YYY圖4-4自定義應(yīng)用使用流程4.2傳感器節(jié)點(diǎn)軟件設(shè)計(jì)網(wǎng)箱養(yǎng)殖所需要監(jiān)測(cè)的水環(huán)境參數(shù)有水溫、PH值、氨氮含量、亞硝酸鹽含量、溶解氧含量等,每種傳感器有需要不同的采集和處理方式,傳感器節(jié)點(diǎn)的控制器需要承擔(dān)水環(huán)境參數(shù)采集的這部分,不但如此,節(jié)點(diǎn)控制器還需要保證能跟匯集網(wǎng)關(guān)進(jìn)行準(zhǔn)確快速的數(shù)據(jù)交互等??梢妭鞲衅鞴?jié)點(diǎn)所要實(shí)現(xiàn)的功能還是很多,各部分功能協(xié)調(diào)也是比較復(fù)雜的。因此,課題引入了protothread狀態(tài)機(jī)作為運(yùn)行機(jī)制,使節(jié)點(diǎn)具備更好的效率、代碼可讀性等優(yōu)點(diǎn),同時(shí)還引入了FIFO緩存機(jī)制,來(lái)保證串口通信可靠性。Protothread狀態(tài)機(jī)1、Protothread狀態(tài)機(jī)簡(jiǎn)介事件驅(qū)動(dòng)模型是一種常見的編程模型,特別是在諸如無(wú)線傳感器網(wǎng)絡(luò)這些內(nèi)存受限的嵌入式系統(tǒng)中。與多線程模型相比,事件驅(qū)動(dòng)模型不需要為每個(gè)線程分配??臻g,從TinyOS,22Contiki都是基于事件驅(qū)動(dòng)模型的。在很多資源受限的嵌入式系統(tǒng)中事件驅(qū)動(dòng)模型同樣被廣泛使用。然而事件驅(qū)動(dòng)模型不支持阻塞等待。因此程序員在編寫需要阻塞等待的程序時(shí)通常需要使用狀態(tài)機(jī)模式去實(shí)現(xiàn),同時(shí)他們將那些不能由一個(gè)事件處理函這些有控制流抽象出來(lái)的狀態(tài)機(jī)通常沒(méi)有具體的含義,它們就像是由程序員憑空創(chuàng)造出來(lái)的一樣,會(huì)使得基于事件驅(qū)動(dòng)模型的編程變得困難[41,42]。Protothread是一種新的編程抽象模型,這種模型使得程序員可以使用類線程的模式來(lái)別寫基于事件驅(qū)動(dòng)的程序,而且每個(gè)類線程只消耗2字節(jié)的內(nèi)存,很多基于狀態(tài)機(jī)模式編寫的復(fù)雜程序可以使用protothread來(lái)簡(jiǎn)化。在測(cè)試的一些程序中,有些的狀態(tài)機(jī)可以完全被protothreadprotothread在空間上可以使代碼行數(shù)減少三分之一,在時(shí)間上也僅需要付出若干個(gè)機(jī)器周期的代價(jià)??偁顟B(tài)機(jī)是專為資源有限的系統(tǒng)設(shè)計(jì)的線程模型,相比于嵌入式操作系統(tǒng),有無(wú)硬件依靠性,可移植性強(qiáng),資源需求極少,沒(méi)有棧但支持阻塞操作等優(yōu)點(diǎn)。同時(shí)又有官方提供的庫(kù)代碼,代碼精簡(jiǎn)易懂[44]。另外,又不得不提Protothread巧妙的阻塞機(jī)制:在每個(gè)條件判斷前,先將當(dāng)前行號(hào)保存到某個(gè)變量中,再判斷條件是否成立,若條件成立,則往下運(yùn)行;若條件不成立,則返回。它的實(shí)時(shí)性體現(xiàn)在,當(dāng)遇到阻塞時(shí),一個(gè)靜態(tài)變量s記錄了當(dāng)前的行號(hào),下次執(zhí)行到此函數(shù)時(shí)再?gòu)漠?dāng)前行號(hào)開始執(zhí)行。2、Protothread狀態(tài)機(jī)應(yīng)用傳感器節(jié)點(diǎn)軟件功能主要分三部分:傳感器數(shù)據(jù)打包和發(fā)送,遠(yuǎn)程控制信息解析和KeilMDK5開發(fā)環(huán)境和STM32F103RC微控制器硬件平臺(tái)上開發(fā)的。Protothread狀態(tài)機(jī)在傳感器節(jié)點(diǎn)軟件程序中的使用,使得各任務(wù)初始化和任務(wù)執(zhí)行3和2個(gè)字節(jié),分別用來(lái)存儲(chǔ)其對(duì)應(yīng)任務(wù)的狀態(tài),即當(dāng)前行號(hào)。在執(zhí)行各任務(wù)之前,先調(diào)用函數(shù)PT_INIT()用來(lái)初始化之前定義的任務(wù)變量,之后在while(1)大循環(huán)中調(diào)用函數(shù)task1_thread()、task2_thread()和task3_thread()用來(lái)執(zhí)行相應(yīng)的任務(wù)。由下圖4-5中代碼可見,每個(gè)任務(wù)都有一個(gè)阻塞位置,分別是23==1),程序循環(huán)依次執(zhí)行這三個(gè)任務(wù)函數(shù),如果程序運(yùn)行到上述的阻塞位置時(shí),就判斷其運(yùn)行條件是否滿足,若不滿足,則阻塞,直接跳出該任務(wù)進(jìn)入下一個(gè)任務(wù),并且當(dāng)下一次再進(jìn)入該任務(wù)時(shí)則直接跳到之前的阻塞位置進(jìn)行同樣的判斷和處理。為了能滿足系統(tǒng)實(shí)時(shí)性的要求,各個(gè)任務(wù)運(yùn)行時(shí)間之和要小于系統(tǒng)實(shí)時(shí)響應(yīng)的時(shí)間要求。圖4-5傳感器節(jié)點(diǎn)的3個(gè)任務(wù)4.2.2簡(jiǎn)易FIFO緩存機(jī)制CC2530無(wú)線模塊進(jìn)行通信,經(jīng)實(shí)驗(yàn)研究發(fā)現(xiàn),當(dāng)控制器頻繁接收到數(shù)據(jù)時(shí),很容易造成數(shù)據(jù)的丟失或出錯(cuò)。為解決這一問(wèn)題,可以選用AL422B緩沖器類的芯片,然而成本會(huì)提高,而一般的微控制24FIFO緩存機(jī)制是一種先進(jìn)先出的數(shù)據(jù)緩存機(jī)制,所以肯定涉及到兩個(gè)過(guò)程:數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)讀取[45]。1、數(shù)據(jù)存儲(chǔ)對(duì)于數(shù)據(jù)存儲(chǔ)這個(gè)過(guò)程來(lái)說(shuō),首先需要在內(nèi)存空間開辟一段固定的空間,課題設(shè)計(jì)預(yù)留緩存空間為80數(shù)據(jù)尾一同放入到所開辟的緩存當(dāng)中。這里需要強(qiáng)調(diào)的是這邊數(shù)據(jù)儲(chǔ)存不是在收到一條完整指令后再統(tǒng)一觸發(fā)某個(gè)中斷再進(jìn)行處理的,而是每接收到一個(gè)字節(jié)就立即將其放入緩存中。同時(shí),還設(shè)有一個(gè)變量止數(shù)組的溢出。2、數(shù)據(jù)讀取對(duì)于數(shù)據(jù)讀取這個(gè)過(guò)程來(lái)說(shuō),因?yàn)檫€要涉及到指令數(shù)據(jù)解析,所以要進(jìn)行更多的處理。跟數(shù)據(jù)存儲(chǔ)的一樣,會(huì)設(shè)有一個(gè)變量(_tail)來(lái)記錄讀取的位置。若_head和_tail兩個(gè)變量不相等,即非空狀態(tài),則繼續(xù)判斷數(shù)據(jù)頭是否為0XEE,若是則開始依次從緩存空間中讀取數(shù)據(jù),在讀取的過(guò)程中監(jiān)測(cè)到完整的數(shù)據(jù)尾(0xFF0XFC0xFF0xFF)則判定已讀到一串完整的指令數(shù)據(jù),則提取出這串?dāng)?shù)據(jù)進(jìn)行解析。上邊若有條件不滿足,則丟棄當(dāng)前所讀取一個(gè)字節(jié)的數(shù)據(jù)。整個(gè)FIFO讀寫過(guò)程如下圖4-6所示。完整的一串指令數(shù)據(jù)提取出來(lái)后需要對(duì)其進(jìn)行解析,這可以理解為給指令數(shù)據(jù)中的每個(gè)部分取一個(gè)名字。課題采用強(qiáng)制賦值給結(jié)構(gòu)體的方法來(lái)方便快捷地完成解析這部分功能。前提是要根據(jù)通信協(xié)議規(guī)定的按順序依次建立結(jié)構(gòu)中的變量并確定其數(shù)據(jù)類型,如下圖4-7之后通過(guò)結(jié)構(gòu)體變量就可以直接使用每一部分的數(shù)據(jù)。此外,為了使上述的強(qiáng)制轉(zhuǎn)換順利進(jìn)行,需要通過(guò)#pragmapack(n)語(yǔ)句來(lái)設(shè)置編譯器字節(jié)對(duì)齊方式,若不設(shè)置則按照編譯器默認(rèn)對(duì)齊方式,即結(jié)構(gòu)體成員中占空間最大的成員的大小,這會(huì)導(dǎo)致強(qiáng)制轉(zhuǎn)換時(shí)指令數(shù)據(jù)中的數(shù)據(jù)不能跟結(jié)構(gòu)體中成員對(duì)應(yīng)起來(lái),從而影響整個(gè)數(shù)據(jù)解析結(jié)果以及后面進(jìn)一步的應(yīng)用。25FIFO緩存區(qū)數(shù)據(jù)寫入緩存區(qū) 數(shù)據(jù)從緩存區(qū)讀出圖4-6緩存區(qū)讀寫示意圖圖4-7指令數(shù)據(jù)結(jié)構(gòu)體4.3匯集網(wǎng)關(guān)軟件設(shè)計(jì)課題在EasyARM-iMX283平臺(tái)上進(jìn)行WinCE6.0嵌入式系統(tǒng)的移植和監(jiān)控軟件的設(shè)計(jì),從而實(shí)現(xiàn)匯集網(wǎng)關(guān)的功能。監(jiān)控軟件設(shè)計(jì)主要內(nèi)容包括:與無(wú)線通信模塊通信接口參數(shù)設(shè)置,與WEB服務(wù)器通信以太網(wǎng)接口參數(shù)設(shè)置,傳感器節(jié)點(diǎn)固件無(wú)線遠(yuǎn)程更新功能,傳感器節(jié)點(diǎn)執(zhí)行機(jī)構(gòu)遠(yuǎn)程控制和水環(huán)境參數(shù)轉(zhuǎn)發(fā)等功能。下文將對(duì)上述的功能進(jìn)行展開說(shuō)明。4.3.1WinCE6.0開發(fā)平臺(tái)1、開發(fā)平臺(tái)的搭建WinCE6.0系統(tǒng)的應(yīng)用軟件開發(fā)可以完全在PC的搭建,除了PC機(jī)及其Windows系統(tǒng)(本系統(tǒng)設(shè)計(jì)在XP操作系統(tǒng)下開發(fā))外,還需SP1中文安裝包、ActiveSync軟件和WinCE6.0安裝包及其補(bǔ)丁。開發(fā)平臺(tái)構(gòu)建完后,就可以在平臺(tái)上構(gòu)建自己的WinCE6.0操作系統(tǒng)和開發(fā)基于WinCE6.0的應(yīng)用程序了[46,47]。262、WinCE6.0系統(tǒng)內(nèi)核的裁剪和下載a)內(nèi)核裁剪課題所需要制作的系統(tǒng)內(nèi)核是裝有WindowsEmbeddedCE6.0和Studio2005的軟件環(huán)境中進(jìn)行的。一般嵌入式系統(tǒng)的內(nèi)核制作首先需要安裝基于硬件平臺(tái)的板級(jí)支持包(下文簡(jiǎn)稱EasyARM-iMX283內(nèi)核制作前需要安裝基于EasyARM-iMX283硬件平臺(tái)的BSP[48]。在VS2005中新建項(xiàng)目,選擇“PlatformBuilderforCE順序下來(lái),選擇在新建項(xiàng)目之前安裝的BSP,選擇默認(rèn)設(shè)備類型模板“PDADevice”和具體設(shè)備類型模板“Mobile要選擇保留FileCache和QuarterVGA不相關(guān)的,達(dá)到精簡(jiǎn)的目的),選擇網(wǎng)絡(luò)與通信配置(根據(jù)課題應(yīng)用選擇TCP/IPv6和LAN4-8所示是VS2005新建工程目錄。圖4-8VS2005新建工程目錄系統(tǒng)的裁剪主要在上圖4-8所示的工程目錄下進(jìn)行,根據(jù)課題需要,選擇加入SDHost并且支持USBUHIVE注冊(cè)表和RAM、ROMWinCE6.0在便可以編譯生成內(nèi)核鏡像,但為了滿足更多的需要,課題根據(jù)需要加入下面的特性: 加入網(wǎng)絡(luò)應(yīng)用程序,如ping、ipconfig、route等應(yīng)用程序命令; 加入DOS命令符窗口;27加入WindowsXP風(fēng)格的界面; 加入對(duì)USBDevice串口類的支持; 加入對(duì)中文字體的支持。配置好了編譯參數(shù)后,可以根據(jù)需要選擇生成Debug或Release,課題設(shè)計(jì)選擇Release,然后就可以開始編譯內(nèi)核鏡像了,選擇菜單“生成”→“AdvancedBuildCommands”→“CleanWinCE6.0操作系統(tǒng)鏡像。b)內(nèi)核下載生成的內(nèi)核文件需下載到課題所選用的EasyARM-iMX283平臺(tái)中才能最終發(fā)揮其功Eboot通過(guò)以太網(wǎng)下載WinCE內(nèi)核文件到EasyARM-iMX283平臺(tái)上,以下下載流程的闡述是默認(rèn)平臺(tái)Eboot已通過(guò)USB方式啟動(dòng):連接硬件、修改IP。分別使用USB連接線連接到平臺(tái)的4-9所示是平臺(tái)接線總圖。然后修改開發(fā)主機(jī)地址。圖4-9平臺(tái)接線總圖設(shè)置EbootWinCE28filenamefordebugger:”為所要下載內(nèi)核文件文件名。使用EbootEboot,將會(huì)在超級(jí)終端中看到Eboot的操作選項(xiàng)如下圖4-10所示。輸入“d”進(jìn)入Eboot下載狀態(tài),此時(shí)EasyARM-iMX283所示。設(shè)置VS2005EasyARM-iMX283VS2005配置中,選擇當(dāng)前同一網(wǎng)段內(nèi)所有發(fā)出“BOOTME”信息的WinCE設(shè)備標(biāo)識(shí),確定后連接設(shè)備進(jìn)行內(nèi)核文件下載。選擇最終內(nèi)核下載目的地,在開發(fā)機(jī)上進(jìn)行WinCE前還需要選擇本次具體內(nèi)核下載的目的設(shè)備:0-NandFlash、1-SD/TF卡、2-RAM。課題調(diào)試為了增加調(diào)試速度選擇NandFlash確認(rèn)進(jìn)行對(duì)NandFlash的燒寫操作,完成后確認(rèn)重啟。圖4-10Eboot目錄選項(xiàng)圖Eboot進(jìn)行等待開發(fā)主機(jī)連接狀態(tài)29圖4-12匯集網(wǎng)關(guān)軟件主界面4.3.2應(yīng)用軟件的開發(fā)與設(shè)計(jì)匯集網(wǎng)關(guān)所實(shí)現(xiàn)的軟件功能有串口通訊設(shè)置、以太網(wǎng)通訊設(shè)置、遠(yuǎn)程控制、遠(yuǎn)程固件無(wú)線更新和數(shù)據(jù)轉(zhuǎn)發(fā)等功能。為了實(shí)現(xiàn)課題所需的上述功能,需用到EasyARM-iMX283平臺(tái)的如上圖4-12所示。對(duì)于串口(UART)通信來(lái)說(shuō),EasyARM-iMX283平臺(tái)已包含有多個(gè)是標(biāo)準(zhǔn)的WinCE6.0VS2005中提供的專門用于操作驅(qū)動(dòng)程序的函數(shù),從而實(shí)現(xiàn)WinCE6.0系統(tǒng)與其它外部設(shè)備之間的串口通信。如下圖4-13所示是串口通信設(shè)置界面,由于參數(shù)比較多,在主界面上設(shè)置這些變量將會(huì)占用比較多的顯示面積,所以新建一個(gè)對(duì)話框來(lái)進(jìn)行WinCE6.0系統(tǒng)與無(wú)線傳輸模塊的串口通信接口參數(shù)的設(shè)置,主要參數(shù)包括串口號(hào)、通信波特率、數(shù)據(jù)位、停止位以及校驗(yàn)等。圖4-13串口參數(shù)設(shè)置界面30在課題開發(fā)設(shè)計(jì)中,要使得所設(shè)計(jì)的應(yīng)用軟件與實(shí)際所要操作的硬件對(duì)應(yīng)起來(lái),首先需要調(diào)用串口驅(qū)動(dòng)。在此基礎(chǔ)上,課題設(shè)計(jì)了串口打開(下文簡(jiǎn)稱OpenPort())/關(guān)閉(下文簡(jiǎn)稱ClosePort())函數(shù),串口接收線程(CommRecvTread)及接收成功回調(diào)函數(shù)OpenPort()函數(shù)中調(diào)用CreateFile()打開指定的串口,以獲取串口操作句柄;在ClosePort()函數(shù)中釋放該操作句柄。另外在OpenPort()函數(shù)中設(shè)計(jì)有SetCommTimeouts()函數(shù),用來(lái)設(shè)置串口接收與發(fā)送超時(shí)時(shí)間,本文設(shè)計(jì)中主要用來(lái)設(shè)置接收字符間最大時(shí)間間隔和讀數(shù)據(jù)總超時(shí)常量。創(chuàng)建串口接收線程的目的是為了使得等待串口數(shù)據(jù)任務(wù)跟監(jiān)控軟件主線程并行進(jìn)行,避免因?yàn)榇诘却龜?shù)據(jù)而影響其他功能的實(shí)現(xiàn)。課題設(shè)計(jì)中串口數(shù)據(jù)接收通過(guò)ReadFile()函數(shù)來(lái)完成,之后再通過(guò)回調(diào)函數(shù)將接收到的數(shù)據(jù)顯示在界面控件上。串口發(fā)送函數(shù)中主要調(diào)用寫文件函數(shù)WriteFile()將用戶輸入的字符串通過(guò)從串口發(fā)送出去。如圖4-14啟充氧泵”按鈕時(shí),軟件將獲取“魚塘號(hào)”編輯框中的數(shù)值,進(jìn)行數(shù)據(jù)打包,通過(guò)串口發(fā)送到無(wú)線通信模塊,無(wú)線通信模塊通過(guò)建立的無(wú)線傳感網(wǎng)絡(luò)轉(zhuǎn)發(fā)到指定的魚塘,即發(fā)送到指定魚塘所對(duì)應(yīng)的傳感器節(jié)點(diǎn),相應(yīng)傳感器節(jié)點(diǎn)接收到數(shù)據(jù)進(jìn)行解析,最后進(jìn)行充氧泵的控制。當(dāng)點(diǎn)擊“開啟所有充氧泵”按鈕時(shí),具體流程同上述控制單個(gè)節(jié)點(diǎn)充氧泵流程,不同的是在無(wú)線通信模塊進(jìn)行轉(zhuǎn)發(fā)時(shí),選擇廣播的方式,即將控制指令發(fā)送給所有節(jié)點(diǎn),從而實(shí)現(xiàn)對(duì)所有傳感器節(jié)點(diǎn)的充氧泵進(jìn)行控制。如圖4-14中的(b)圖所示,遠(yuǎn)程固件無(wú)線更新界面主要有兩種控件組成:按鈕和編輯框。課題選用固件文件類型flash空間,可見選用此種文件類型作為固件文件的文件類型,也使得整個(gè)研發(fā)設(shè)計(jì)更加的直接和方“更新”和“全部更新”按鈕用來(lái)啟動(dòng)更新操作,整個(gè)更需要花費(fèi)幾分鐘的時(shí)間,主要看固件文件的大小。其中遠(yuǎn)程固件無(wú)線更新的方法是課題重點(diǎn)研究?jī)?nèi)容,將在第五章展開詳細(xì)論述,此處就不再贅述。間兼容的套接字接口,這使得網(wǎng)絡(luò)應(yīng)用程序可以在不同平臺(tái)之間進(jìn)行自由移植;同時(shí)系統(tǒng)提供多種網(wǎng)卡驅(qū)動(dòng)程序接口,支持多種常用的網(wǎng)絡(luò)協(xié)議,開發(fā)人員只要著重于相應(yīng)的平臺(tái)主板上還提供了1路的10/100M以太31EasyARM-iMX283平臺(tái)的WinCE6.0系統(tǒng)強(qiáng)大的網(wǎng)絡(luò)通信功能,可以方便實(shí)現(xiàn)與課題所設(shè)計(jì)的WEB服務(wù)器之間的網(wǎng)絡(luò)通信,故用其進(jìn)行如下所述的界面功能設(shè)計(jì)。(a)遠(yuǎn)控控制界面(b)遠(yuǎn)程更新界面圖4-14監(jiān)控軟件功能界面圖4-15以太網(wǎng)通信接口參數(shù)設(shè)置界面匯集網(wǎng)關(guān)通過(guò)以太網(wǎng)接口所要實(shí)現(xiàn)的最主要的功能是將節(jié)點(diǎn)以客戶端身份連接到課題所設(shè)計(jì)開發(fā)的WEBWEBTCP接口通信參數(shù)設(shè)置界面,主要包括遠(yuǎn)程服務(wù)器地址和遠(yuǎn)程服務(wù)器端口的設(shè)置,在編輯框里填上所要連接服務(wù)器相應(yīng)的參數(shù)后,點(diǎn)“確定”按鈕就可以客戶端的身份連接到服務(wù)器??蛻舳伺c服務(wù)器建立連接的流程,如下圖4-16所示,TCP通信開始于客戶端主動(dòng)TCP服務(wù)器的服務(wù)端接收該請(qǐng)求并完成3就可以進(jìn)行客戶端與服務(wù)器之間的TCP通信,完成數(shù)據(jù)交互。按鈕后,程序會(huì)使用函數(shù)WSAStartup()加載6.0TCP32為了不讓主線程持續(xù)等待TCP通信也需要?jiǎng)?chuàng)建一個(gè)TCP用recv()函數(shù),發(fā)送數(shù)據(jù)用send()函數(shù)。調(diào)用調(diào)用ossok()關(guān)閉套接字s調(diào)用sok()建立流式套接字返回套接字s調(diào)用onn()建立與遠(yuǎn)程服務(wù)器的連接調(diào)用rv()和snd()在套接s接收或發(fā)送數(shù)據(jù)圖4-16TCP客戶端流程圖4.4WEB服務(wù)器的設(shè)計(jì)和開發(fā)Web服務(wù)器可以用來(lái)存儲(chǔ)并管理超媒體(包括超文本文件、音頻文件、視頻文件等WEB服務(wù)器的WEB界面可滿足實(shí)現(xiàn)課題所需要的遠(yuǎn)程監(jiān)測(cè)和數(shù)據(jù)存儲(chǔ)等功能的要求,而且WEB服務(wù)器有網(wǎng)絡(luò)就可以訪問(wèn),可使得監(jiān)控軟件脫離空間和設(shè)備的限制,達(dá)到隨時(shí)隨地在多種智能終端上進(jìn)python的Django框架進(jìn)行WEB下就課題針對(duì)WEB服務(wù)器所做研究的一些總結(jié)。Django框架簡(jiǎn)介Django項(xiàng)目是一個(gè)python定制框架,又是一個(gè)基于MVC構(gòu)造的框架,但實(shí)際更關(guān)注的是模型、模板和視圖,故又稱為MTV模式[50]??偟膩?lái)說(shuō),Django是一個(gè)可以使Web開發(fā)工作愉快并且高效的Web開發(fā)框,是從真實(shí)世界的應(yīng)用中成長(zhǎng)起來(lái)。它主要著重于解決在實(shí)際WEB應(yīng)用開發(fā)中所遇到的問(wèn)題,因?yàn)樗拈_發(fā)者致力于讓開發(fā)人員節(jié)省時(shí)間,編寫更加容易維護(hù)的程序,同時(shí)保證程序運(yùn)行的效率[51]。33Django開發(fā)環(huán)境搭建1、組件安裝Django本身是純PythonDjango框架首先安裝Python和設(shè)計(jì)選擇Python2.6版本,Django1.6.5版本,另外,數(shù)據(jù)庫(kù)選擇MySQL5.5數(shù)據(jù)庫(kù),同時(shí)安裝MySQLGUI工具用于管理數(shù)據(jù)庫(kù),最后選擇相應(yīng)的Python對(duì)MySQL的接口程序包安裝[52,53]。Python安裝完成后,需要在windows系統(tǒng)的CMD命令符窗口中輸入“python”,安裝和測(cè)試可選擇在CMD需在CMD命令符窗口依次輸入“python”→“importdjango”→“printdjango是否安裝成功。2、集成開發(fā)環(huán)境的安裝一般來(lái)說(shuō),完成以上軟件包的安裝足以進(jìn)行web開發(fā),但為了使得開發(fā)變得方便快捷,課題開發(fā)選擇在PyCharm3.1.3集成開發(fā)環(huán)境上進(jìn)行的。PyCharm集成開發(fā)環(huán)境是一種基于PythonDjango是后期的代碼功能調(diào)試等,都變得非常方便快捷[54]。整個(gè)開發(fā)是在微軟的Windows7系統(tǒng)上進(jìn)行。4.4.3后臺(tái)管理界面開發(fā)對(duì)于課題所設(shè)計(jì)的WEB服務(wù)器來(lái)說(shuō),其后臺(tái)管理界面是非常重要的一部分。對(duì)網(wǎng)頁(yè)前端顯示數(shù)據(jù)的調(diào)整,傳感器節(jié)點(diǎn)執(zhí)行機(jī)構(gòu)的遠(yuǎn)程控制,以及數(shù)據(jù)庫(kù)數(shù)據(jù)調(diào)用分析等課題所設(shè)計(jì)的功能,都需要有權(quán)限限制,只有有操作權(quán)限的管理者或者分配有權(quán)限的用戶才可以進(jìn)行操作和管理??梢妼?duì)一個(gè)完整監(jiān)控系統(tǒng)來(lái)說(shuō),擁有一個(gè)網(wǎng)站后臺(tái)管理系統(tǒng)還是很有必要,然而如果全新開發(fā)一套高性能的網(wǎng)站后臺(tái)管理系統(tǒng),肯定需要花費(fèi)大量Django作為開發(fā)框架的原因之一,因?yàn)樵诤笈_(tái)管理功能在Django中本身就已為開發(fā)者設(shè)計(jì)好了。在課題設(shè)計(jì)中,研究發(fā)現(xiàn)實(shí)際只需按照以下幾點(diǎn)激活即可完成管理系統(tǒng)搭建:在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))”,最后通過(guò)PyCharm編譯環(huán)境的菜單欄中“Tools”下的“Runmanage.pytask...”運(yùn)行“syncdb”指令,即可生成管理界面使用的額外數(shù)據(jù)表,同時(shí)通過(guò)編譯引導(dǎo)創(chuàng)建一個(gè)超級(jí)用戶用來(lái)登陸管理平臺(tái)。圖4-17后臺(tái)登陸后的界面另外,課題為了使后面管理平臺(tái)界面更加友好,課題還研究了grappelli包的工作原理,并應(yīng)用其來(lái)完成美化后臺(tái)管理界面的工作。在添加完grappelli包后,同樣需要在settings.py文件的INSTALLED_APPS中進(jìn)行設(shè)置,此時(shí)需要添加“grappelli”語(yǔ)句,而且這里需要再三強(qiáng)調(diào)的是這條代碼必須位于“django.contrib.admin”語(yǔ)句之前,再在settings.py文件中添加靜態(tài)文件路徑“ADMIN_MEDIA_PREFIX=STATIC_URL+"grappurl.py文件中的urlpatterns語(yǔ)句,最后調(diào)用開發(fā)環(huán)境的指令“Runmanage.pytask...”和“collectstatic”指令來(lái)收集所需要的靜態(tài)文件,即可完成對(duì)后臺(tái)管理系統(tǒng)界面的美化。上圖4-17是應(yīng)用grappelli美化后后臺(tái)登陸后的界面,顯示了各個(gè)網(wǎng)箱所有的傳感器類型。354.4.4網(wǎng)箱數(shù)據(jù)上傳和處理在課題設(shè)計(jì)的系統(tǒng)中,用戶登陸到管理界面之后,就可以通過(guò)管理界面來(lái)查看數(shù)據(jù)庫(kù)中所保存的各個(gè)網(wǎng)箱水環(huán)境的狀態(tài)數(shù)據(jù)。圖4-18所示是用戶所看到是匯聚節(jié)點(diǎn)推送上來(lái)保存在web服務(wù)器的數(shù)據(jù)庫(kù)中的部分?jǐn)?shù)據(jù)。課題設(shè)計(jì)是采用HTTP/1.1協(xié)議中的POST請(qǐng)求方法來(lái)上傳傳感器節(jié)點(diǎn)所采集的數(shù)據(jù)到web服務(wù)器的數(shù)據(jù)庫(kù)。HTTP/1.1協(xié)議中的POST提交數(shù)據(jù)方式根據(jù)content_type又可分四種方式,它們分別是application/x-www-form-urlencoded、multipart/form-data、application/json和格式能夠更好地體現(xiàn)數(shù)據(jù)的層次結(jié)構(gòu),而且Python本身就有用來(lái)進(jìn)行JSON編碼和譯碼的模塊simplejson,故課題決定選擇application/json方式來(lái)上傳傳感器數(shù)據(jù)[55]。下面來(lái)介紹課題研究中的一些技術(shù)細(xì)節(jié)。匯集網(wǎng)關(guān)通過(guò)Internet網(wǎng)絡(luò)用HTTP/1.1協(xié)議中的POST方法來(lái)提交數(shù)據(jù),在提交數(shù)據(jù)之前,匯集網(wǎng)關(guān)首先會(huì)連接到web服務(wù)器,然后通過(guò)以太網(wǎng)口發(fā)送以上POST包即可上傳數(shù)據(jù),具體實(shí)現(xiàn)代碼如下所示。Content-Length的數(shù)值一定要等于提交數(shù)據(jù)長(zhǎng)度。POST/api/V1/gateway/UpdateSensors/1/HTTP/1.1Content-Type:application/jsonContent-Length:32{"sensorname":"T1","value":"20"}當(dāng)課題所設(shè)計(jì)的web服務(wù)器接收到通過(guò)POST方法提交的傳感器節(jié)點(diǎn)數(shù)據(jù)時(shí),即可用以下代碼進(jìn)行傳感器名稱以及對(duì)應(yīng)數(shù)值的讀取,具體實(shí)現(xiàn)代碼如下所示。req=json.loads(request.body)sensorname=req['

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論