




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
碩 士 學 位 論 文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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 計算機一級Photoshop學習成果評估試題及答案
- 持續追蹤稅法試題及答案
- 文學語言的多樣性與美學試題及答案
- 理論與實踐結合的試題及答案研究
- 解析2025年行政法學試題及答案要點
- 醫療行業數字化轉型的領導力探討
- 商業領域的信息安全防護體系建設
- 企業數字化進程中的投資決策分析
- 2025雇主應如何制定和解勞動合同
- 2025駕駛員勞動合同范本
- 建設項目全過程工程咨詢-第一次形成性考核-國開(SC)-參考資料
- 2024建安杯信息通信建設行業安全競賽題庫(試題含答案)
- (通用版)漢字聽寫大會競賽題庫及答案
- IE產能設備資源計劃表
- 4M1E基礎知識培訓.課件
- 一切才剛剛開始——校長在高考20天沖刺動員大會上的講話
- 波浪理論基礎要點圖解[精]
- 關于磷化行業企業建設項目及污染排放有關問題法律適用的復函
- 汽車充電樁項目可行性研究報告【范文】
- 07 二十五項反措 第12部分 防止大型變壓器損壞和互感器事故試題庫
- 2022年保險機構高級管理人員任職資格(中介)考試模擬練習題及答案解析(一)
評論
0/150
提交評論