999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種基于ZigBee的海洋環境監控系統設計與實現

2018-10-17 01:42:46楊光松郭文靜康雙全
關鍵詞:頁面系統

李 穎,楊光松,郭文靜,康雙全

(1.集美大學誠毅學院, 福建 廈門 361021; 2.集美大學 信息工程學院, 福建 廈門 361021)

海洋是地球可持續發展的重要戰略資源,海洋資源的保護、開發和利用離不開海洋監測高技術的支持。海洋監測技術包括海洋環境的監測、預測和預警,涉及能源、信息、電子、通信、材料等多學科,對海洋的防災減災、生態監測、資源開發、軍事安防等提供服務[1]。目前海洋監測技術已實現立體監測,完成在線監測和災害預警等功能,但存在采集信息穩定性不足、精度低、傳輸和處理能力局限等問題[2]。

本文設計實現了一種基于ZigBee[3-9]的海洋監控系統,在水面、水下高密度布置節點并自組構建無線傳感網絡,可以提供實時監控,具備功耗低、距離短、通信穩定、成本低等特點,在一定程度上彌補海洋監測手段的不足。

首先,基于NodeMCU微控制器和CC2530[10]的ZigBee芯片[11-12]設計了無線傳感節點,通過ESP8266 Wi-Fi模塊或USB串口模塊,實現協調器與數據處理中心的信息傳遞,完成系統硬件框架的搭建。其次,完成數據采集部分的軟件設計[13],通過UDP Socket嵌套字,實現傳感器數據遠程采集的功能。使用node.js技術和串口,實現傳感器數據本地采集的功能。最后,完成數據展示部分的設計,使用Vue.js前端框架進行前端頁面開發,基于WEB實現跨設備的訪問和瀏覽。經實際測試證明,系統可以通過ZigBee終端節點定時采集傳感器數據,通過ZigBee拓撲傳輸到協調器節點,然后通過有線或者無線的方式,將數據傳輸到本地或者透傳到遠程的服務器,完成采集工作[14]。在后臺分析采集數據,加入到相應的數據庫中。最后,使用web界面展示所采集的數據,完成跨設備的實時數據展示和查詢。

1 系統框架

本系統原理圖如圖1所示,傳感節點采集數據后送到傳輸路由器,然后由路由器轉發至協調器,最后上傳至服務器。用戶可以通過PC機或者手機等移動終端,通過WEB的形式查看其統計數據,實現環境對海洋環境的監控[15]。

圖1 系統原理

系統結構由3部分組成:

第1部分是硬件感測模塊,主要由ZigBee采集節點構成。采集的節點也分成3種:第1種是由1個ZigBee(cc2530)微型控制器和1個或者多個傳感器組成的終端采集設備(End Device);第2種是以延長傳輸距離為主要作用的傳輸路由(Router)作為傳感信息中轉站;第3種就是協調器(Coordinate),為信息采集的匯集點。在無線傳輸部分,在ZigBee協調器上增加一塊Wi-Fi微控制器(Esp8266),將ZigBee收到的數據通過Rx/Tx串口通信的方式,透傳、連接到Internet網的Wi-Fi模塊實現數據的實時采集。ZigBee(cc2530)收集到的節點測量數據,通過Tx傳輸到ESP8266的Rx完成透傳并分別識別設備標識符和采集數據,實時通過Http Get 的方式,發送數據到遠程服務器。有線傳輸部分,則直接使用串口進行傳輸,無Wi-Fi模塊。

第2部分為服務器端,主要是存儲和處理數據。在無線傳輸架構中,Wi-Fi模塊通過無線局域網連接到遠程服務器。信息通過socket連接方式實時地透傳到遠程服務器的數據庫中。后臺系統主要用PHP語言進行開發,配合MySQL數據庫,基本滿足實時數據提取的要求。在有線傳輸架構中,ZigBee協調器通過串口USB界面傳輸到本地的服務器,本地服務器使用node.js為技術底層,完成數據從串口采集到數據庫保存并進行數據格式化的過程。

第3部分為網頁展示部分。構建前端頁面的整體架構,通過輪詢的方法實時獲取后臺數據庫的數據,并使用動態曲線圖進行展示。用戶可以選取時間范圍等方法進行數據查詢。采用web形式的展示使用戶實現跨設備實時的數據查詢。

2 硬件設計實現

2.1 傳感節點設計

傳感器節點硬件框圖如圖2所示。包括CC2530MCU以及溫度傳感器、pH值傳感器、空氣質量傳感器、光照傳感器等硬件設備模塊,還有電源模塊和無線通信模塊以及ADC模塊。電源模塊是給傳感器節點供應正常工作所需能量,無線通信模塊負責數據和命令的傳輸與接收,ADC模塊負責處理傳感器采集到的數據。各個傳感器將采集到的數據通過ADC通道發送到CC2530的微處理器,微處理器對數據進行再次處理、存儲然后通過無線通信模塊進行數據傳輸并且控制電源模塊。

圖2 傳感器節點硬件結構

2.2 感測電路設計

本文所提出的監測系統主要是監測近海環境,方便監測人員實時獲取相關監測數據,以備做出環境保護的對應措施。目前對于近海水域的監測參數主要有水質參數、水文氣象參數以及物理化學參數[16]。水質參數主要包括pH值、有機物、鹽度等數據;水文氣象參數包括氣溫、光照強度、水溫、波浪、風速等數據;物理化學參數有空氣質量(有害氣體含量)、重金屬、營養鹽等參考數據[17]。

溫度測量采用LM35DZ溫度傳感器,它是精密集成電路溫度傳感器,其輸出電壓與攝氏溫度成線性關系,具有重復性好、輸出阻抗低以及應用簡單的特點。LM35DZ型號溫度傳感器的靈敏度為10.0 mV/℃,精度為0.4~0.8 ℃,輸出溫度范圍為-55~150 ℃。典型應用電路如圖3所示。

圖3 LM35DZ傳感器電路

空氣質量是環境監測的一個重要數據,很多污染因素都會引起空氣質量的數據變化,傳感器的電導率會隨空氣中污染氣體的增加而增加[18]。本方案選擇MQ135型空氣質量傳感器,它在較寬的濃度范圍內監測有害氣體,具有靈敏度高、驅動電路簡單、使用壽命長且成本較低等特點。其測量數據范圍在0~2 047之間,數值越大表明空氣質量越差。如圖4是MQ135傳感器的典型應用電路。

圖4 MQ135傳感器電路

在近海環境監測中,如果某海域的光照強度低于一定數值時,則可以大致判定該水域污染情況。本文選擇光敏二極管型傳感器測量光照強度,該傳感器對光照的靈敏度較高,并且可以感知固定方向的光源。典型的應用電路如圖5所示。

圖5 光敏二極管傳感器電路

近海水域的污染源還可以通過pH值來進行判斷。本文選用E-201-C型pH值傳感器,該傳感器可根據被測水質的酸堿度不同而輸出不同電位,線性度較好。

為了實現對海洋環境的數據檢測,在系統設計時還需要對電路和傳感器進行防水處理;安裝時,無線部分置放在高處,避免潮汐時淹沒天線;傳感器節點的布置上,充分考慮覆蓋范圍,確保節點間正常通信。

3 系統軟件設計實現

3.1 傳感節點軟件設計

傳感節點主要使用TI公司所開源的Z-Stack軟件進行開發。其中一些主要的步驟,如添加相應的應用任務程式,先調用osal_init_ststem()執行初始化工作,包括硬件配置、網絡協議等的初始化,然后調用osal_start_system()初始化操作系統。

SampleApp_Init()用戶應用任務初始化函數。在這個函數里面定義了OSAL分配的任務ID、將設備狀態定義為ZDO層的初始化狀態、設置發送數據的方式和目的尋址的模式等等。

還有一些重要的事件函數,如SampleApp_ProcessEvent()用戶應用任務的事件處理函數、SampleApp_MessageMSGCB()接受數據函數、SampleApp_SendPeriodicMessage() 發送周期信息函數和AF_DataRequest()發送函數。這些函數都是理解Z-stack的重要步驟。

與ESP8266的通信是通過SampleApp_MessageMSGCB()接收函數,在此函數中通過將接收到的數據進行格式轉換并封裝,然后調用HalUARTWrite()函數,輸出接收到的節點數據。

3.2 數據采集軟件設計

包括PHP為后端的無線網采集和Node.js為平臺的串口采集2種模式實現端口的讀取、數據庫的連接和數據處理功能。

3.2.1 以PHP為后端的無線網采集

服務器運行環境為Windows Server 2012,node.js v6.10.2,npm v4.5.0。

1) 基于UDP socket的數據傳輸

接收節點協調器上的Wi-Fi芯片連接到一個能夠連接服務器ip的局域網中,確保ESP8226 Wi-Fi芯片能夠穩定傳輸信號。基于ESP8266搭建NodeMCU開發平臺,使用Lua作為開發語言。ESP8266建立客戶端UDP Socket及連接遠程服務器Socket的代碼如下:

wifi.setmode(wifi.STATION)//設置NodeMCU模式

wifi.sta.config(“SSID”,“password”) //連接局域網

print(wifi.sta.getip());

cu=net.createConnection(net.UDP) //設置為UDP連接

cu:on(“receive”,function(cu,c) re=c end)

cu:connect(port,“IPaddress”)//遠程服務器端口及IP地址

在服務器端,建立UDP socket連接。使用PHP作為后臺開發語言,代碼及創建過程如下:

$socket = socket_create( AF_INET,SOCK_DGRAM,SOL_UDP );

if ( $socket === false ) {

echo “socket_create() failed:reason:”

.socket_strerror(socket_last_error() ).“ ”;

}

echo “Socket created. ”;

$socket = socket_bind( $socket,‘0.0.0.0’,port );//0.0.0.0 接受任意IP段連接

if ( $ok === false ) {

echo “socket_bind() failed:reason:”

.socket_strerror( socket_last_error( $socket ) );

}

echo “Socket bind OK ”;

當服務器端的UDP socket及客戶端的socket建立完成之后,當客戶端請求一次連接并成功之后,客戶端和服務端保持常連接,當數據傳輸時,其連接端口不變。

2) 數據存儲

服務器端數據存儲使用PHP進行操作。當客戶端連接時,服務器端建立循環連接,判斷客戶端是否有數據傳入。如有數據傳入,將其按照一定的格式存儲到數據庫當中。其代碼如下:

while(1)

{

$db=new mysqli(DBHOST,DBUSER,DBPASSWORD,DBNAME);

link = mysql_connect(DBHOST,DBUSER,DBPASSWORD) or die (“Could not connect:”.mysql_error($link)); //建立數據庫連接

$sql = “INSERT INTO ‘esp_log’.‘log_envirparameters’

(‘ID’,‘nwkAddr’,‘ClusterID’,‘Date’,‘type’,‘value’,‘extAddr’,‘location’,‘isbackup’)VALUES

(NULL,‘$nwkaddr’, NULL, ‘$date’, ‘$type’, ‘$value’,NULL, ‘$location’,‘0’)”;//存儲位置及對應的列表欄數據

$result = $db->query($sql);//將處理過的數據存入指定數據表

socket_sendto($sock,“OK ”.$buf,$remote_ip,$remote_port);//返回消息給客戶端

varmysql= require(‘mysql’);

var connection = mysql.createConnection({

host:‘localhost’,//主機號

user:‘root’,

password:‘’,

database:‘lab’

});

connection.connect();//連接數據庫

connection.query(‘INSERT INTO ?? SET

ID=?,nwkAddr=?,ClusterID=?,Date=?,type=?,

value=?

,extAddr=?,location=?,isbackup=?’,[‘log_envirparameters’,

“NULL”,nwkaddr,“LAB_01”,date,type,value,

“NULL”,location,“0”],

);//將處理過后的數據,存入數據庫 socket_close($socket);//關閉socket連接

3.2.2 以Node.js為平臺的串口采集

服務器運行環境為window 7 Ultimate,node.js v6.10.2[19],npm v4.5.0。

1) 從串口中讀取數據

安裝在npm(Javascript包管理器)2個主要的依賴包(node-pre-gyp 和serialport)。node-pre-gyp提供二進制文件部署的跨平臺的方法,這個模塊為安裝serialport做準備;Serialport是一個串口模塊,可以通過編寫JavaScript控制串口,也可以通過它為Arduino芯片進行編程,為X10無線通信甚至是Z-Wave或者Zigbee標準所需的低級串行端口代碼提供界面。

在window環境下安裝serialport需要使用node-pre-gyp進行編譯,并且node-pre需要Python2.x的支持。

編寫讀取串口數據之前,要明確2個要素,即串口端口號(Serialport)和其傳輸的波特率(BaudRate)。在Linux系統中,其串口端號一般如“/dev/tty-usbserialX”,而在window系統中,直接使用系統顯示的端口,如“COM3”。

其讀取代碼如下:

varSerialPort = require(‘serialport’);

var port = new SerialPort(‘COM3’,{

“baudRate”:57600,

“autoOpen”:true});

port.on(‘data’,function (data) {

console.log(“orl:”+data.toString(‘hex’)+“ ”);//打印出讀取的數據

2) 連接數據庫并存儲數據

安裝mysql依賴包,在命令行中輸入“npm install mysql”,完成安裝。在服務器端開有一個MySQL服務器,其連接代碼如下:

3.3 人機界面設計

在整體架構上面,前端展示頁面定位為后端應用,需要后臺的配合才能完成。其后端數據由架在PHP和MySQL上面的服務端處理完成[20],并生成靜態數據文件,以便前臺頁面的調用。Vue.js使用了組件化的開發,組件之前高度解耦,數據綁定和視圖更新特性極其簡單和優秀,其非常適合本套系統的前端的頁面搭建。

3.3.1 前端頁面程序

前端頁面采用漸進式的JavaScript 框架Vue.js,簡單來說,這是一個用來開發web界面的前端庫。它具有virtual DOM,提供組件化(composable)和響應式(reactive)的視圖組件。

前端頁面使用動態可操作的圖表和簡單的信息展示方式,不僅可以在桌面端應用實時查詢數據,還可以在任何可以連接互聯網的移動設備上,查看數據圖表;響應式頁面設計,實現互聯網多種移動設備實時、便捷、準確地進行數據查詢和數據實時展示。

目前已有一些開發框架(如google的Angular、Facebook的React)可以用來簡化腳本的開發,提高代碼的復用性。本項目采用基于Vue.js進行前端頁面搭建,其使用到的文件及庫依賴在“package.json”中,其webpack構建時所用的配置在“webpack.base.conf.js”中。

展示頁面主要由3個組件組成,分別是頂部欄(page/ghnavtop.vue)、左側欄(page/ghnavleft.vue)和內容部分(sensorNode/nodePreview.vue)。內容部分由1個節點詳細欄組件(sensorNode/nodedetail.vue)進行組件復用,其內部的數據條目由1個節點感測器數據組件(sensoNode/nodedata.vue)進行組件循環復用。

PC頁面使用動態可操作的圖表進行數據查詢和展示。其展示查詢功能主要分為數據實時展示和數據查詢功能。數據實時展示部分由實時數據和實時圖表完成。

3.3.2 EChart圖表庫

為了實現圖形的顯示,本系統采用了Echart表組件,使用”require(‘echarts/lib/echarts’)”進行加載圖表的主模塊,然后使用require(“echarts/lib/chart/line”)進行引入折線圖組件,接著使用此方法引入標題組件。此方法在經過webpack的打包之后,使存儲空間從原來的400多kB減少到150多kB。

Echart圖標庫的使用方法比較簡單,繪制Canvas之前準備一個具有寬高的DOM容器,在移動終端顯示時,我們采用了自適應的百分比制寬高,調用其初始化方法Echart.init(Dom),并通過設置其圖表的各種參數options,使用setOption(options)完成圖表繪制。此外,還采用媒體查詢(Media Query)的方法,實現自適應圖表。

3.3.3 SPA的應用

單頁 Web 應用 (single-page application 簡稱為 SPA) 是一種特殊的 Web 應用。它將所有的活動局限于一個Web頁面中,僅在該Web頁面初始化時加載相應的HTML、JavaScript 和 CSS。本系統使用SPA的方法,如單日報表和數據報表之間的切換,不使用整頁刷新,在前端頁面使用組件切換,不再向服務器發起多次請求,只更改其視圖表現,用戶操作更改模型數據。再如添加感測節點數據展示圖,其不整頁更新數據,在表現層添加組件,組件模型向后臺發送數據請求,異步更新數據,并更改DOM節點數據。

3.3.4 數據管理

本系統中,使用的存儲數據的數據庫為MariaDB,它是MySQL一個分支,其由開源社區維護,所以MariaDB的部分特性優于MySQL。本系統在數據庫方面暫時沒有大量并發和性能上的要求。數據的管理界面使用phpMyAdmin,這是一個界面簡單且易于管理查看的管理系統。后臺數據處理系統由Apache及PHP搭建,PHP版本為5.6.19,PHP擴展為mysqli,其phpMyAdmin版本為4.5.1。

4 系統檢測結果

本系統基于Wi-Fi無線網絡和基于USB串口2種采集方式完成數據收集、傳輸、處理和前端頁面數據實時呈現和查詢功能,實現海洋監測系統的預期功能。

本系統搭建后,能夠采集傳感數據并進行統計,而且可以在PC機上和移動終端上進行訪問,如圖6所示。

圖6 前端頁面的實時數據圖表

為了驗證系統的有效性,選取01∶17到6∶17時間段進行實驗測試,檢測數據如圖7所示。對于空氣傳感器在01∶00時,在系統作品附近點燃一個蚊香,可以看到在01∶17到6∶17這段時間內,其空氣質量由180降低到120;對于光敏傳感器在01∶05時,用手遮蓋光敏傳感器,可以看到在01∶05時,光照強度突然下降;對于溫度傳感器,實測溫度24 ℃左右,與溫度表測量得到的結果一致。

圖7 實驗測試數據圖表

5 結束語

本文基于ZigBee技術進行海洋監測系統硬件和軟件的設計,完成監測模塊的軟、硬件設計,完成ZigBee無線網絡信息通過串口采集、無線網絡定時采集和傳送傳感器數據的功能,完成跨設備和跨平臺的監測頁面設計和開發,實現數據實時動態顯示和查詢。通過實驗驗證,借助ZigBee技術進行海洋監測并使用跨平臺web技術,可以完成海洋數據的實時采集、傳遞、處理和查詢,使得海洋資源得到更科學和便捷的管理和開發。

猜你喜歡
頁面系統
微信群聊總是找不到,打開這個開關就好了
大狗熊在睡覺
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
刷新生活的頁面
保健醫苑(2022年1期)2022-08-30 08:39:14
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
基于PowerPC+FPGA顯示系統
半沸制皂系統(下)
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
同一Word文檔 縱橫頁面并存
主站蜘蛛池模板: 天堂在线视频精品| 1769国产精品免费视频| 成人免费一区二区三区| 国产精品乱偷免费视频| 伊人查蕉在线观看国产精品| 免费人成在线观看视频色| 永久天堂网Av| 国产精品视频猛进猛出| 色网站在线免费观看| 国产制服丝袜91在线| 国产欧美视频综合二区| 在线观看91香蕉国产免费| 国产自在线拍| 国产一区二区视频在线| 69国产精品视频免费| …亚洲 欧洲 另类 春色| 国产三级视频网站| 午夜视频www| 精品偷拍一区二区| 欧美成人手机在线视频| 亚洲AV免费一区二区三区| 国产精品爽爽va在线无码观看| 欧美爱爱网| 亚洲AV无码一二区三区在线播放| 99视频国产精品| 日韩小视频网站hq| 中文字幕无码电影| 欧洲高清无码在线| 国产精品自拍露脸视频| 在线看AV天堂| 国产理论一区| 在线看国产精品| 国产三区二区| 亚洲a级在线观看| 91成人免费观看| 三上悠亚一区二区| 国产人成在线观看| 亚洲男人的天堂视频| 欧美性精品| 亚洲精品在线影院| 国产国模一区二区三区四区| 国产欧美在线视频免费| 欧美乱妇高清无乱码免费| 伊人精品视频免费在线| 波多野结衣无码视频在线观看| 亚洲中文字幕日产无码2021| 国产啪在线| av免费在线观看美女叉开腿| 欧美不卡二区| 国产欧美日韩另类精彩视频| 日韩美毛片| 尤物在线观看乱码| 国产一区二区三区免费观看| 亚洲日本中文字幕乱码中文| 国产69精品久久久久妇女| 99手机在线视频| 欧美性久久久久| 亚洲精品视频免费观看| 欧美日韩国产综合视频在线观看| 亚洲欧美成人影院| 国产一级α片| 91网站国产| 成人亚洲天堂| 中文字幕在线观看日本| 日本久久免费| 不卡国产视频第一页| 麻豆国产精品| 久久久久中文字幕精品视频| 麻豆精品久久久久久久99蜜桃| 青青草国产在线视频| 国产亚洲第一页| 欧美激情二区三区| 亚洲AV无码不卡无码| 手机成人午夜在线视频| 亚洲美女操| 亚洲第一成年免费网站| 性色一区| 国产欧美日韩精品综合在线| 在线国产毛片| 2021国产v亚洲v天堂无码| 久久一级电影| 亚洲视频影院|