宋志鵬 張健 廖家明 吳君欽
摘 要:本文針對(duì)礦山企業(yè)信息化和智能化的應(yīng)用特點(diǎn),在OneNET智能云平臺(tái)的基礎(chǔ)上,采用STM32F103和ESP8266芯片,設(shè)計(jì)了一套礦山巖體災(zāi)變數(shù)據(jù)采集技術(shù)方案。在文中詳細(xì)討論了該方案分層模型、網(wǎng)絡(luò)結(jié)構(gòu)、協(xié)議接口、數(shù)據(jù)采集節(jié)點(diǎn)軟硬件的設(shè)計(jì)與實(shí)現(xiàn)等內(nèi)容。經(jīng)實(shí)驗(yàn)測(cè)試,結(jié)果表明采用該技術(shù)方案設(shè)計(jì)的數(shù)據(jù)采集系統(tǒng)可準(zhǔn)確地測(cè)量和記錄巖體裂變過(guò)程,技術(shù)方案可行,節(jié)點(diǎn)設(shè)備運(yùn)行可靠,具有應(yīng)用推廣價(jià)值。
關(guān)鍵詞:礦山安全;物聯(lián)網(wǎng);WIFI模塊;OneNET智能云;激光測(cè)距
中圖分類(lèi)號(hào):TN929.5;TP391.44 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2096-4706(2018)02-0001-06
Research on the Key Technology of Rock Mass Disaster Data Acquisition Node Equipment Based on OneNET Intelligent Cloud
SONG Zhipeng,ZHANG Jian,LIAO Jiaming,WU Junqin
(Jiangxi University of Science and Technology School of Information Engineering,Ganzhou 341000,China)
Abstract:For mine enterprise informatization and intelligentize application characteristics,based on OneNET,using STM32F103 and ESP8266 chip designed a set of mine disaster data acquisition scheme.In this paper,we discuss the layered model, network structure,protocol interface,data acquisition node's software and hardware design and implementation.The experimental results show that the data acquisition system designed by this technology can accurately measure and record the process of rock fission,the technical scheme is feasible,the node equipment is reliable,and has the application and popularization value.
Keywords:mine safety;internet of things;WIFI module;OneNET intelligent cloud;laser ranging
0 引 言
在礦山采掘過(guò)程中,巖爆等巖體動(dòng)力災(zāi)害屬于常發(fā)事件,威脅著作業(yè)人員和設(shè)備的安全,另外盜采活動(dòng)也經(jīng)常擾亂礦山正常開(kāi)采秩序。為了最大限度地降低巖爆、盜采活動(dòng)給礦山帶來(lái)的安全隱患,有必要對(duì)巖爆等巖體動(dòng)力災(zāi)害孕育及演化過(guò)程進(jìn)行長(zhǎng)時(shí)間的連續(xù)監(jiān)測(cè)[1],并定期進(jìn)行巖體穩(wěn)定性給予評(píng)價(jià),指導(dǎo)礦山實(shí)現(xiàn)安全生產(chǎn)。
在礦山巖體災(zāi)變數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)和實(shí)施過(guò)程中,需要解決分散采集和數(shù)據(jù)集中存儲(chǔ)之間的矛盾。礦山監(jiān)控節(jié)點(diǎn)高度分散在數(shù)平方公里甚至數(shù)十平方公里的范圍內(nèi)[2]。有線傳輸方案設(shè)計(jì)復(fù)雜、布線工程大、成本高、維護(hù)難,所以難于實(shí)施;而基于無(wú)線傳傳輸又沒(méi)有成熟的工業(yè)級(jí)產(chǎn)品可用,組網(wǎng)開(kāi)發(fā)難度大。所以針對(duì)礦山的特殊應(yīng)用,按常規(guī)概念開(kāi)發(fā)的產(chǎn)品系統(tǒng)不能滿(mǎn)足其要求。
隨著無(wú)線物聯(lián)網(wǎng)技術(shù)日趨成熟以及開(kāi)放智能云平臺(tái)[3]的出現(xiàn),低成本高效能的礦山災(zāi)變數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)成為可能。本文針對(duì)礦業(yè)企業(yè)的信息化、智能化的應(yīng)用特點(diǎn),設(shè)計(jì)了一套礦山災(zāi)變數(shù)據(jù)采集系統(tǒng)技術(shù)方案。設(shè)計(jì)方案采用中移物聯(lián)OneNET智能云平臺(tái),該平臺(tái)是一個(gè)開(kāi)放的智能云平臺(tái)。中國(guó)移動(dòng)已為物聯(lián)網(wǎng)用戶(hù)提供了一套完整的智能硬件接入API技術(shù)方案,網(wǎng)絡(luò)層的數(shù)據(jù)庫(kù)、應(yīng)用層的APP客戶(hù)端都有成熟技術(shù)方案,可直接使用案例模板,無(wú)需編寫(xiě)軟件代碼,大幅降低了開(kāi)發(fā)難度的同時(shí),也降低了開(kāi)發(fā)成本,用戶(hù)可專(zhuān)注于硬件和特殊應(yīng)用開(kāi)發(fā)。本文先概要介紹OneNET平臺(tái)的功能模型、網(wǎng)絡(luò)結(jié)構(gòu)、開(kāi)發(fā)流程、接入?yún)f(xié)議等,然后重點(diǎn)討論巖體裂縫距離測(cè)量、數(shù)據(jù)采集節(jié)點(diǎn)設(shè)備技術(shù)方案、節(jié)點(diǎn)設(shè)備軟硬件實(shí)現(xiàn)等內(nèi)容。
1 OneNET智能云平臺(tái)概述
1.1 OneNET應(yīng)用系統(tǒng)功能分層模型
如圖1所示,OneNET開(kāi)放智能云平臺(tái)[3]系統(tǒng)功能分為三層:設(shè)備接入層、智能云平臺(tái)網(wǎng)絡(luò)層和應(yīng)用層。每一層所含功能或設(shè)備可以根據(jù)應(yīng)用的實(shí)際需求增加或減少。
1.2 OneNET應(yīng)用系統(tǒng)軟硬件組成
采用OneNET平臺(tái)設(shè)計(jì)的應(yīng)用系統(tǒng)一般由下列四部分組成:(1)智能云大數(shù)據(jù)業(yè)務(wù)服務(wù)器與服務(wù)軟件(A);(2)有線/無(wú)線接入網(wǎng)關(guān)路由器(B);(3)有線/無(wú)線感知節(jié)點(diǎn)監(jiān)測(cè)及控制設(shè)備(C);(4)大數(shù)據(jù)應(yīng)用層APP軟件(D)。圖2是基于OneNET的應(yīng)用系統(tǒng)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)圖。
應(yīng)用系統(tǒng)的數(shù)據(jù)傳輸流程為:監(jiān)測(cè)節(jié)點(diǎn)設(shè)備將感知測(cè)量的數(shù)據(jù)經(jīng)智能云網(wǎng)關(guān)路由器,上傳至智能云大數(shù)據(jù)服務(wù)平臺(tái),然后大數(shù)據(jù)平臺(tái)將數(shù)據(jù)分類(lèi)記錄在數(shù)據(jù)庫(kù)中,由應(yīng)用層軟件分析和處理數(shù)據(jù)庫(kù)所記錄的海量數(shù)據(jù),最終輸出各類(lèi)監(jiān)測(cè)預(yù)警數(shù)據(jù)。
1.3 OneNET設(shè)備開(kāi)發(fā)流程
在設(shè)備開(kāi)發(fā)前,必須在OneNET上進(jìn)行注冊(cè)用戶(hù)、創(chuàng)建產(chǎn)品和設(shè)備,添加數(shù)據(jù)流等必要操作。開(kāi)發(fā)設(shè)備基本流程如下:(1)用戶(hù)注冊(cè),在OneNET上注冊(cè)開(kāi)發(fā)者賬號(hào),創(chuàng)建專(zhuān)屬的“開(kāi)發(fā)者中心”;(2)創(chuàng)建產(chǎn)品和設(shè)備,登錄進(jìn)入“開(kāi)發(fā)者中心”相關(guān)頁(yè)面,選擇“設(shè)備接入方式”和“設(shè)備接入?yún)f(xié)議”,確認(rèn)完成產(chǎn)品設(shè)備的創(chuàng)建,并為設(shè)備添加必要數(shù)據(jù)流和數(shù)據(jù)點(diǎn);(3)注冊(cè)完成之后,根據(jù)平臺(tái)提供的API協(xié)議及要求,設(shè)計(jì)開(kāi)發(fā)設(shè)備的軟硬件技術(shù)方案;(4)設(shè)備開(kāi)發(fā)完成,設(shè)備即可接入智能云,啟動(dòng)各類(lèi)應(yīng)用服務(wù),上傳數(shù)據(jù)和控制命令等。更詳細(xì)的開(kāi)發(fā)流程說(shuō)明參見(jiàn)“OneNET開(kāi)發(fā)者文檔中心”,即文獻(xiàn)[3]。
1.4 OneNET設(shè)備接入有關(guān)概念
在描述接入?yún)f(xié)議和API接口之前,需對(duì)設(shè)備APIKey、數(shù)據(jù)流、數(shù)據(jù)點(diǎn)等幾個(gè)關(guān)鍵概念作簡(jiǎn)要說(shuō)明。
設(shè)備APIKey:用戶(hù)在設(shè)備云中創(chuàng)建的一臺(tái)設(shè)備,OneNET后臺(tái)將為該真實(shí)設(shè)備分配一個(gè)獨(dú)立的且唯一的ID號(hào),稱(chēng)為“設(shè)備ID”,并為訪問(wèn)該臺(tái)設(shè)備資源分配一個(gè)“設(shè)備APIKey”。
數(shù)據(jù)流(Datastream):一個(gè)數(shù)據(jù)流可以理解為一類(lèi)數(shù)據(jù),如傳感器的溫度、位置的經(jīng)緯度、空氣的濕度等。用戶(hù)可以自定義數(shù)據(jù)流名稱(chēng),即數(shù)據(jù)流ID,一臺(tái)設(shè)備可以添加多個(gè)數(shù)據(jù)流。
數(shù)據(jù)點(diǎn)(Datapoint):即一個(gè)數(shù)據(jù)流中某一個(gè)具體的數(shù)據(jù)值。數(shù)據(jù)點(diǎn)采用鍵值對(duì)(“Key-Value”)的方式存儲(chǔ)。其中Key的組成包括設(shè)備ID、數(shù)據(jù)流ID和時(shí)間等信息,value部分可以為任何數(shù)據(jù)對(duì)象,如整數(shù)、字符串或者JSON數(shù)據(jù)類(lèi)型。
2 OneNET設(shè)備接入?yún)f(xié)議
2.1 OneNET支持協(xié)議類(lèi)型
OneNET支持符合當(dāng)前行業(yè)應(yīng)用的多種協(xié)議的解析和轉(zhuǎn)換。公開(kāi)協(xié)議包括EDP、MODBUS、MQTT以及HTTP等,還支持定制私有協(xié)議。由于各協(xié)議都有專(zhuān)門(mén)的協(xié)議描述文檔,本文僅對(duì)開(kāi)發(fā)中使用的HTTP等協(xié)議做簡(jiǎn)要描述。
2.2 HTTP接入?yún)f(xié)議
HTTP協(xié)議:HTTP協(xié)議是建立在TCP/IP傳輸控制層協(xié)議之上的應(yīng)用層協(xié)議,本文僅對(duì)應(yīng)用層協(xié)議做詳細(xì)描述。應(yīng)用層之下的TCP/IP協(xié)議棧已相當(dāng)成熟,在嵌入式設(shè)備開(kāi)發(fā)中可完全通過(guò)軟件實(shí)現(xiàn),也可用具備透明傳輸功能的TCP/IP硬件模塊來(lái)實(shí)現(xiàn)。
如圖3所示,使用HTTP協(xié)議接入智能云架構(gòu)模型可簡(jiǎn)化為客戶(hù)/服務(wù)器(C/S)結(jié)構(gòu),智能云提供一組服務(wù),即數(shù)據(jù)存儲(chǔ)服務(wù)和HTTP訪問(wèn)服務(wù)。智能設(shè)備和應(yīng)用終端都是HTTP客戶(hù)端,傳輸請(qǐng)求總是由客戶(hù)端發(fā)起,服務(wù)器對(duì)請(qǐng)求做出響應(yīng)。
智能設(shè)備通過(guò)HTTP協(xié)議中的GET/POST/PUT等方法上傳命令/數(shù)據(jù)等,從HTTP響應(yīng)獲取下傳指令/數(shù)據(jù),所有數(shù)據(jù)庫(kù)操作必須經(jīng)由Web服務(wù)器作為中介,使用SQL語(yǔ)句進(jìn)行訪問(wèn)。
OneNET/HTTP接入?yún)f(xié)議:OneNET支持設(shè)備采用HTTP協(xié)議接入平臺(tái),HTTP協(xié)議具有接入鑒權(quán)、控制命令下發(fā)、告警出發(fā)等功能,適合平臺(tái)與平臺(tái)、設(shè)備與平臺(tái)間的數(shù)據(jù)對(duì)接。
OneNET/HTTP接入?yún)f(xié)議就是一組API接口,包括“設(shè)備”“數(shù)據(jù)流”“數(shù)據(jù)點(diǎn)”和“觸發(fā)器”等10大類(lèi)操作API接口。設(shè)備/數(shù)據(jù)流等有關(guān)操作API多在設(shè)備的注冊(cè)和后臺(tái)管理中使用,OneNET平臺(tái)已開(kāi)發(fā)好相關(guān)服務(wù)軟件,無(wú)需編寫(xiě)代碼,在本監(jiān)測(cè)節(jié)點(diǎn)設(shè)備的開(kāi)發(fā)過(guò)程中,僅用到數(shù)據(jù)點(diǎn)的上傳API協(xié)議,故在2.3節(jié)中以示例方式給出新增數(shù)據(jù)點(diǎn)操作API的用法,更詳細(xì)的其他API解釋見(jiàn)參考文獻(xiàn)[3]。
2.3 HTTP/POST數(shù)據(jù)包格式
OneNET平臺(tái)的新增數(shù)據(jù)點(diǎn)(鍵-值對(duì))上傳API接口用于上傳數(shù)據(jù)打包,使用HTTP/POST方法傳送數(shù)據(jù)。HTTP協(xié)議POST方法傳輸報(bào)文由URL、包頭和正文三部分組成,上傳數(shù)據(jù)點(diǎn)API接口協(xié)議是描述如何填寫(xiě)URL、HTTP頭、HTTP正文。下面是上傳采集數(shù)據(jù)點(diǎn)API最簡(jiǎn)示例描述:
HTTP方法:POST
URL示例:
{ api.heclouds.com/devices/device-ID/datapoints?
type=3\r\n }
HTTP包頭示例: //api-key:設(shè)備注冊(cè)生成的字符串
{ api-key: 242RprHyALimOZLCKiXeT7IRdLM= \r\n
Content-Type:application/json\r\n }
HTTP內(nèi)容示例: //上傳:溫度、濕度鍵值對(duì)
{ "temperature":22.5,"humidity":"95.2%" \r\n }
請(qǐng)求返回示例:
{"errno":0,\r\n"error": "succ"\r\n }
在上傳示例中,除帶下畫(huà)線字段外,都由OneNET定義,無(wú)需更改,帶下畫(huà)線部分需根據(jù)注冊(cè)及數(shù)據(jù)信息填入設(shè)備ID、api-key等。注意:“{”、“}”是API字段內(nèi)容描述性分界符,實(shí)際傳輸數(shù)據(jù)包中不包含這兩個(gè)符號(hào),“\r\n”是C語(yǔ)言轉(zhuǎn)義字符,代表回車(chē)換行等不可見(jiàn)字符,“//”符號(hào)后面的文字代表注解。
3 數(shù)據(jù)采集設(shè)備功能需求
3.1 設(shè)備功能需求
設(shè)計(jì)目標(biāo):實(shí)現(xiàn)礦區(qū)安全環(huán)境與巖體災(zāi)變數(shù)據(jù)實(shí)時(shí)監(jiān)測(cè)與記錄等功能。主要監(jiān)測(cè)變量包括:危險(xiǎn)巖體裂縫距離、溫度、濕度、水浸和有害氣體等。
主要功能:(1)實(shí)時(shí)高效地對(duì)礦區(qū)安全隱患點(diǎn)的多個(gè)參量進(jìn)行監(jiān)測(cè);(2)對(duì)監(jiān)測(cè)數(shù)據(jù)進(jìn)行長(zhǎng)期連續(xù)記錄與存儲(chǔ);(3)綜合分析巖體災(zāi)變數(shù)據(jù),給出巖體裂縫距離變化曲線;(4)使可連接節(jié)點(diǎn)設(shè)備數(shù)量大于200。
圖4是巖體位移災(zāi)變數(shù)據(jù)采集系統(tǒng)功能框圖,其中基本數(shù)據(jù)的處理與顯示子系統(tǒng)有現(xiàn)成模板可參考,通信子系統(tǒng)選用成熟商用設(shè)備組網(wǎng),所以工作重點(diǎn)是數(shù)據(jù)采集子系統(tǒng)設(shè)計(jì)。
在節(jié)點(diǎn)設(shè)備設(shè)計(jì)過(guò)程中,首先需在OneNET云端注冊(cè)設(shè)備,添加數(shù)據(jù)流,創(chuàng)建和編輯應(yīng)用界面。因在節(jié)點(diǎn)設(shè)備的軟件設(shè)計(jì)過(guò)程中,涉及設(shè)備及數(shù)據(jù)流注冊(cè)信息,所以在此僅需對(duì)設(shè)備注冊(cè)和數(shù)據(jù)流內(nèi)容作出說(shuō)明。
3.2 設(shè)備及數(shù)據(jù)流注冊(cè)
在使用OneNET智能云服務(wù)前,先注冊(cè)設(shè)備、并為設(shè)備添加數(shù)據(jù)流。一般礦區(qū)有幾十個(gè)甚至幾百個(gè)監(jiān)測(cè)節(jié)點(diǎn),一個(gè)監(jiān)測(cè)點(diǎn)注冊(cè)一個(gè)設(shè)備,每個(gè)設(shè)備下掛多個(gè)數(shù)據(jù)流。本項(xiàng)目在OneNET智能云中注冊(cè)了2臺(tái)開(kāi)發(fā)用測(cè)試設(shè)備,其中一臺(tái)設(shè)備ID為11283817,表1是該設(shè)備所掛載的數(shù)據(jù)流等注冊(cè)信息。
4 數(shù)據(jù)采集節(jié)點(diǎn)設(shè)備設(shè)計(jì)
本采集系統(tǒng)設(shè)計(jì)的關(guān)鍵和難點(diǎn)是數(shù)據(jù)采集子系統(tǒng)設(shè)計(jì),即節(jié)點(diǎn)設(shè)備的軟硬件開(kāi)發(fā)。節(jié)點(diǎn)設(shè)備開(kāi)發(fā)內(nèi)容包括:硬件結(jié)構(gòu)設(shè)計(jì)、測(cè)距方案選擇、網(wǎng)絡(luò)接口設(shè)計(jì)和軟件代碼實(shí)現(xiàn)等方面。
4.1 節(jié)點(diǎn)設(shè)備硬件結(jié)構(gòu)
如圖5所示,接入設(shè)備的硬件組成包括:STM32F103/LCD等組件構(gòu)成的MCU部基本系統(tǒng)、I2C接口激光測(cè)距模塊、UART接口WIFI模塊和溫濕度等其他傳感器模塊。
在低成本、低功耗設(shè)備的設(shè)計(jì)中,網(wǎng)絡(luò)接口設(shè)計(jì)是關(guān)鍵,本設(shè)計(jì)采用硬件TCP/IP協(xié)議棧,解決了低成本MCU聯(lián)接網(wǎng)絡(luò)關(guān)鍵問(wèn)題。
4.2 巖體裂縫距離測(cè)量技術(shù)方案
巖體裂縫距離測(cè)量技術(shù)方案主要包括:(1)基于圖像識(shí)別的裂縫檢測(cè)[4];(2)光纖位移傳感器測(cè)量[5];(3)激光測(cè)距法[6]等。前兩種技術(shù)方案開(kāi)發(fā)的檢測(cè)設(shè)備技術(shù)復(fù)雜且成本高,難以批量應(yīng)用,第三種方法技術(shù)成熟可靠,成本低廉,并且安裝簡(jiǎn)便,可大批量應(yīng)用。
VL53L0X是法意半導(dǎo)體開(kāi)發(fā)的第二代智能激光測(cè)距傳感器,用于測(cè)量巖體裂縫距離,其安裝位置如圖6所示。測(cè)距工作原理為:傳感器主動(dòng)發(fā)射激光脈沖,測(cè)量反射激光的飛行時(shí)間(ToF),根據(jù)ToF可計(jì)算傳感器到反射體間的距離。VL53L0X最大測(cè)距長(zhǎng)度為兩米,精確度在±3%范圍內(nèi),采用I2C接口與MCU聯(lián)接,接口電路如圖6。測(cè)距模塊主要用來(lái)測(cè)量巖體裂縫的動(dòng)態(tài)變化實(shí)時(shí)數(shù)據(jù)。
圖6 激光傳感器安裝示意圖
4.3 網(wǎng)絡(luò)接口設(shè)計(jì)
在低功耗硬件設(shè)計(jì)中,因MCU處理能力有限,一般選用固化了TCP/IP協(xié)議棧的網(wǎng)絡(luò)通信模塊聯(lián)接網(wǎng)絡(luò),可選模塊種類(lèi)有GPRS、3G/4G、NB-IoT、WIFI等。當(dāng)節(jié)點(diǎn)設(shè)備需要連接更多數(shù)量的傳感器和控制器時(shí),可以進(jìn)一步與ZigBee[7]無(wú)線傳感器網(wǎng)絡(luò)、MODBUS[8]工控網(wǎng)絡(luò)連接,這時(shí)節(jié)點(diǎn)拓展成一個(gè)工控網(wǎng)絡(luò),應(yīng)用就更為復(fù)雜了。本設(shè)計(jì)設(shè)備直接與傳感器接口。
本文所設(shè)計(jì)節(jié)點(diǎn)設(shè)備與智能云通信接口采用ESP8266 WIFI模塊,該模塊具有功耗超低、UART-WIFI透?jìng)鞯忍卣鳎K內(nèi)置完整的TCP/IP協(xié)議棧,MCU使用串口AT命令操作模塊,實(shí)現(xiàn)SOCKET接口及網(wǎng)絡(luò)TCP/IP協(xié)議功能,更詳細(xì)的說(shuō)明見(jiàn)參考文獻(xiàn)[9]。
4.4 軟件設(shè)計(jì)與實(shí)現(xiàn)
如圖7是節(jié)點(diǎn)設(shè)備內(nèi)部程序流程圖,節(jié)點(diǎn)設(shè)備軟件開(kāi)發(fā)主要包括下列內(nèi)容:(1)STM32串行口讀寫(xiě)函數(shù)與AT命令發(fā)送函數(shù)編寫(xiě);(2)編寫(xiě)ESP8266模塊初始化函數(shù),啟動(dòng)服務(wù)器鏈接SOCKET通信,實(shí)現(xiàn)TCP/IP應(yīng)用層數(shù)據(jù)的透明傳輸;(3)采集數(shù)據(jù)與打包,根據(jù)OneNET接入API協(xié)議,編寫(xiě)HTTP數(shù)據(jù)打包函數(shù);(4)發(fā)送HTTP數(shù)據(jù)包,接收并處理HTTP回應(yīng)數(shù)據(jù)包,實(shí)現(xiàn)相關(guān)硬件操作功能。
軟件開(kāi)發(fā)中,一些關(guān)鍵宏定義和功能函數(shù)原型定義如下:
#define CWJAP \
"AT+CWJAP=\"MY_WIFI_ID\",\"MiMa123456\"\r\n"
#define CIPSTART \
"AT+CIPSTART=\"TCP\",\"183.230.40.33\",80\r\n"
#define API_KEY \
“ACA6kzvie3wVBbaK2UfA=nHKBmg=”
#defien DEV_ID “11283817”
#define DS_ID1 “V_D1”
char *USART3_Read(void);
void USART3_Write(char *Data, int len);
void USART3_Clear(void);
int GetDistance(void); //激光測(cè)距模塊數(shù)集采集函數(shù)
unsigned int HTTP_PostPkt(char *pbuf, char *key,
char *dev_id, char *ds_id, char *val);
上述代碼段說(shuō)明:(1)CWJAP宏,是WIFI訪問(wèn)參數(shù),包含WIFI_ID及密碼;(2)CIPSTART宏,包含中移物聯(lián)服務(wù)器地址及端口號(hào),由OneNET給定;(3)API_KEY宏,設(shè)備綁定的訪問(wèn)參數(shù);(4)DEV_ID、DS_ID,即注冊(cè)設(shè)備ID、數(shù)據(jù)流ID等;(5)USART3串口讀、寫(xiě)、清除操作函數(shù);(6)GetDistance距離數(shù)據(jù)采集函數(shù);(7)HTTP_PostPkt()是HTTP/POST數(shù)據(jù)包封裝函數(shù)。
HTTP_PostPkt()是與OneNET接口的關(guān)鍵函數(shù),下面是經(jīng)過(guò)實(shí)驗(yàn)測(cè)試的打包函數(shù)和上傳數(shù)據(jù)示例代碼,它可正確完成POST數(shù)據(jù)包的封裝。
unsigned int HTTP_PostPkt(
char *pbuf, //pbuf報(bào)文緩存指針
char *key, //key是API_KEY指針
char *dev_id, //dev_id指設(shè)備ID
char *ds_id, //ds_id上傳數(shù)據(jù)流ID(鍵名)
char *val ) { //val指字符串形式的數(shù)據(jù)點(diǎn)(值)
char dataBuf[100] = {0}; //定義dataBuf參數(shù)
char lenBuf[10] = {0}; //定義lenBuf參數(shù)
//①格式化鍵值對(duì),生成包正文數(shù)據(jù)和正文長(zhǎng)度字符串
sprintf(dataBuf, ",;%s,%s", ds_id, val);
sprintf(lenBuf, "%d", strlen(dataBuf)); //計(jì)算長(zhǎng)度
//②設(shè)備ID號(hào)寫(xiě)入包頭
*pbuf = 0;
strcat(pbuf, "POST /devices/"); strcat(pbuf, dev_id);
strcat(pbuf, "/datapoints?type=5 HTTP/1.1\r\n");
//③API-KEY寫(xiě)入包頭
strcat(pbuf, "api-key:");
strcat(pbuf, key); strcat(pbuf, "\r\n");
//④OneNET定義API接口主機(jī)名寫(xiě)入包頭
strcat(pbuf, "Host:api.heclouds.com\r\n");
//⑤正文數(shù)據(jù)dataBuf長(zhǎng)度寫(xiě)入包頭
strcat(pbuf, "Content-Length:");
strcat(pbuf, lenBuf); strcat(pbuf, "\r\n\r\n");
//⑥添加數(shù)據(jù)到POST包數(shù)據(jù)正文段中
strcat(pbuf, dataBuf);
return( strlen(pbuf)); //返回POST格式數(shù)據(jù)包長(zhǎng)度
}
void main(void){
//…
USART3_Clear();
//⑦上傳示例代碼,調(diào)用打包函數(shù)
len = HTTP_PostPkt ( \
buf, API_KEY , DEV_ID, DS_ID1 , val );
USART3_Write(buf, len); //串口透明傳輸TCP/IP報(bào)文
//…
}
5 實(shí)驗(yàn)與測(cè)試
礦區(qū)巷道水浸和有害氣體的預(yù)警相對(duì)簡(jiǎn)單,與之相比,巖體裂縫的災(zāi)變過(guò)程就比較復(fù)雜,它是一個(gè)長(zhǎng)期緩變過(guò)程,緩變積累到一定程度,就可能發(fā)生現(xiàn)實(shí)災(zāi)變,且不同地質(zhì)地貌的變化規(guī)律不盡相同。所以必須首先部署大量的采集節(jié)點(diǎn),收集大量的巖體裂變數(shù)據(jù),并記錄裂變過(guò)程。只有當(dāng)數(shù)據(jù)積累到一定數(shù)量時(shí),才能分析災(zāi)變規(guī)律。本項(xiàng)目的數(shù)據(jù)采集實(shí)驗(yàn)測(cè)試階段僅部署了少量實(shí)驗(yàn)性的數(shù)據(jù)采集點(diǎn),采集的數(shù)據(jù)可通過(guò)Web客戶(hù)端或Android APP顯示。Web版OneNET客戶(hù)端APP界面有多種數(shù)據(jù)顯示方式,常見(jiàn)的有曲線顯示、儀表顯示等。圖8是通過(guò)PC瀏覽器打開(kāi)本應(yīng)用鏈接顯示的部分?jǐn)?shù)據(jù)截圖,子圖(a)為某一個(gè)巖體裂縫距離變化曲線,子圖(b)為打開(kāi)APP時(shí)刻采集記錄到的某巷道溫度和濕度數(shù)值。
(a)某巖體裂縫距離變化曲線
(b)值儀表顯示的某巷道溫濕度數(shù)據(jù)
實(shí)驗(yàn)測(cè)試表明,所設(shè)計(jì)的數(shù)據(jù)采集節(jié)點(diǎn)設(shè)備工作穩(wěn)定,數(shù)據(jù)測(cè)量精確,巖體位移精度達(dá)mm級(jí)別,可記錄微小緩慢的變化。
6 結(jié) 論
本文針對(duì)礦山環(huán)境安全監(jiān)測(cè)問(wèn)題的特點(diǎn),提出了一種基于智能云的礦山巖體裂變數(shù)據(jù)采集節(jié)點(diǎn)設(shè)備技術(shù)方案。概要介紹了OneNET平臺(tái)功能模型和網(wǎng)絡(luò)接口協(xié)議,重點(diǎn)分析了數(shù)據(jù)采集節(jié)點(diǎn)設(shè)備設(shè)計(jì)所涉及的關(guān)鍵技術(shù),包括OneNET網(wǎng)絡(luò)接入技術(shù)、設(shè)備的軟硬件實(shí)現(xiàn)等,并對(duì)節(jié)點(diǎn)設(shè)備和系統(tǒng)進(jìn)行了實(shí)驗(yàn)測(cè)試。測(cè)試結(jié)果表明,設(shè)備可準(zhǔn)確測(cè)量和記錄巖體裂變過(guò)程,技術(shù)方案可行,節(jié)點(diǎn)設(shè)備運(yùn)行可靠。本文的設(shè)計(jì)為礦山安全環(huán)境監(jiān)測(cè)提供了一套可行的技術(shù)方案,可實(shí)現(xiàn)低成本的數(shù)據(jù)存儲(chǔ)和網(wǎng)絡(luò)接入,為智能礦山災(zāi)害監(jiān)測(cè)系統(tǒng)的發(fā)展奠定了技術(shù)基礎(chǔ),具有廣泛的參考價(jià)值。
參考文獻(xiàn):
[1] 林連寶.露采生產(chǎn)工程巖體裂縫類(lèi)型與危害控制 [J].黃金,2006(5):26-29.
[2] 陳爾奎.基于OneNET的礦山綜合監(jiān)控系統(tǒng)的研究 [J].煤炭技術(shù),2017,36(9):195-197.
[2]陳爾奎,張敏,尹曉鋼,等.基于OneNET的礦山綜合監(jiān)控系統(tǒng)的研究 [J].煤炭技術(shù),2017,36(9):195-197.
[3] 中國(guó)移動(dòng).OneNET開(kāi)發(fā)者文檔中心 [EB/OL].https://open.iot.10086.cn/doc/art246.html#68.2017.
[4] 肖玲玲,魏浩.基于DSP的井下巖體裂縫檢測(cè)系統(tǒng)的設(shè)計(jì) [J].電視技術(shù),2013,37(7):167-170.
[5] 謝全敏,吳定洪,王紅彬,等.薄盒式光纖巖體裂縫計(jì)研究 [J].山地學(xué)報(bào),2009,27(6):747-751.
[6] ST Microelectronics. VL53L0X ToF detection sensor datasheet [EB/OL].http://www.st.com/content/st_com/en/search.html#q=VL53L0X-t=keywords-page=1.May 2016.
[7] 董哲,宋紅霞.ZigBee-WiFi協(xié)同無(wú)線傳感網(wǎng)絡(luò)的節(jié)能技術(shù) [J].計(jì)算機(jī)工程與設(shè)計(jì),2015,36(1):22-29.
[8] 李秉榮,劉夫云,魯倪亞.基于RS485和TCP/IP網(wǎng)絡(luò)的分布式稱(chēng)重系統(tǒng) [J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2011,20(9):35-38.
[9] 樂(lè)鑫信息科技.ESP8266用戶(hù)手冊(cè)V03 [EB/OL].https://wenku.baidu.com/view/dd2f8965581b6bd97e19ea37.html.Setp 2,2014.
作者簡(jiǎn)介:宋志鵬(1995-),男,漢族,江西萍鄉(xiāng)人,2014級(jí)通信工程專(zhuān)業(yè)本科生。研究方向:物聯(lián)網(wǎng)技術(shù);廖家明(1995-),男,漢族,江西九江人,2014級(jí)通信工程專(zhuān)業(yè)本科生。研究方向:嵌入式系統(tǒng)與物聯(lián)網(wǎng)技術(shù);張?。?997-),男,漢族,河南信陽(yáng)人,2015級(jí)通信工程專(zhuān)業(yè)本科生。研究方向:嵌入式系統(tǒng)設(shè)計(jì);通訊作者:吳君欽(1966-),男,碩士,教授。研究方向:嵌入式系統(tǒng),無(wú)線寬帶通信。