宋志鵬 張健 廖家明 吳君欽



摘 要:本文針對礦山企業信息化和智能化的應用特點,在OneNET智能云平臺的基礎上,采用STM32F103和ESP8266芯片,設計了一套礦山巖體災變數據采集技術方案。在文中詳細討論了該方案分層模型、網絡結構、協議接口、數據采集節點軟硬件的設計與實現等內容。經實驗測試,結果表明采用該技術方案設計的數據采集系統可準確地測量和記錄巖體裂變過程,技術方案可行,節點設備運行可靠,具有應用推廣價值。
關鍵詞:礦山安全;物聯網;WIFI模塊;OneNET智能云;激光測距
中圖分類號:TN929.5;TP391.44 文獻標識碼:A 文章編號: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 引 言
在礦山采掘過程中,巖爆等巖體動力災害屬于常發事件,威脅著作業人員和設備的安全,另外盜采活動也經常擾亂礦山正常開采秩序。為了最大限度地降低巖爆、盜采活動給礦山帶來的安全隱患,有必要對巖爆等巖體動力災害孕育及演化過程進行長時間的連續監測[1],并定期進行巖體穩定性給予評價,指導礦山實現安全生產。
在礦山巖體災變數據采集系統的設計和實施過程中,需要解決分散采集和數據集中存儲之間的矛盾。礦山監控節點高度分散在數平方公里甚至數十平方公里的范圍內[2]。有線傳輸方案設計復雜、布線工程大、成本高、維護難,所以難于實施;而基于無線傳傳輸又沒有成熟的工業級產品可用,組網開發難度大。所以針對礦山的特殊應用,按常規概念開發的產品系統不能滿足其要求。
隨著無線物聯網技術日趨成熟以及開放智能云平臺[3]的出現,低成本高效能的礦山災變數據采集系統的設計和實現成為可能。本文針對礦業企業的信息化、智能化的應用特點,設計了一套礦山災變數據采集系統技術方案。設計方案采用中移物聯OneNET智能云平臺,該平臺是一個開放的智能云平臺。中國移動已為物聯網用戶提供了一套完整的智能硬件接入API技術方案,網絡層的數據庫、應用層的APP客戶端都有成熟技術方案,可直接使用案例模板,無需編寫軟件代碼,大幅降低了開發難度的同時,也降低了開發成本,用戶可專注于硬件和特殊應用開發。本文先概要介紹OneNET平臺的功能模型、網絡結構、開發流程、接入協議等,然后重點討論巖體裂縫距離測量、數據采集節點設備技術方案、節點設備軟硬件實現等內容。
1 OneNET智能云平臺概述
1.1 OneNET應用系統功能分層模型
如圖1所示,OneNET開放智能云平臺[3]系統功能分為三層:設備接入層、智能云平臺網絡層和應用層。每一層所含功能或設備可以根據應用的實際需求增加或減少。
1.2 OneNET應用系統軟硬件組成
采用OneNET平臺設計的應用系統一般由下列四部分組成:(1)智能云大數據業務服務器與服務軟件(A);(2)有線/無線接入網關路由器(B);(3)有線/無線感知節點監測及控制設備(C);(4)大數據應用層APP軟件(D)。圖2是基于OneNET的應用系統網絡拓撲結構圖。
應用系統的數據傳輸流程為:監測節點設備將感知測量的數據經智能云網關路由器,上傳至智能云大數據服務平臺,然后大數據平臺將數據分類記錄在數據庫中,由應用層軟件分析和處理數據庫所記錄的海量數據,最終輸出各類監測預警數據。
1.3 OneNET設備開發流程
在設備開發前,必須在OneNET上進行注冊用戶、創建產品和設備,添加數據流等必要操作。開發設備基本流程如下:(1)用戶注冊,在OneNET上注冊開發者賬號,創建專屬的“開發者中心”;(2)創建產品和設備,登錄進入“開發者中心”相關頁面,選擇“設備接入方式”和“設備接入協議”,確認完成產品設備的創建,并為設備添加必要數據流和數據點;(3)注冊完成之后,根據平臺提供的API協議及要求,設計開發設備的軟硬件技術方案;(4)設備開發完成,設備即可接入智能云,啟動各類應用服務,上傳數據和控制命令等。更詳細的開發流程說明參見“OneNET開發者文檔中心”,即文獻[3]。
1.4 OneNET設備接入有關概念
在描述接入協議和API接口之前,需對設備APIKey、數據流、數據點等幾個關鍵概念作簡要說明。
設備APIKey:用戶在設備云中創建的一臺設備,OneNET后臺將為該真實設備分配一個獨立的且唯一的ID號,稱為“設備ID”,并為訪問該臺設備資源分配一個“設備APIKey”。
數據流(Datastream):一個數據流可以理解為一類數據,如傳感器的溫度、位置的經緯度、空氣的濕度等。用戶可以自定義數據流名稱,即數據流ID,一臺設備可以添加多個數據流。
數據點(Datapoint):即一個數據流中某一個具體的數據值。數據點采用鍵值對(“Key-Value”)的方式存儲。其中Key的組成包括設備ID、數據流ID和時間等信息,value部分可以為任何數據對象,如整數、字符串或者JSON數據類型。
2 OneNET設備接入協議
2.1 OneNET支持協議類型
OneNET支持符合當前行業應用的多種協議的解析和轉換。公開協議包括EDP、MODBUS、MQTT以及HTTP等,還支持定制私有協議。由于各協議都有專門的協議描述文檔,本文僅對開發中使用的HTTP等協議做簡要描述。
2.2 HTTP接入協議
HTTP協議:HTTP協議是建立在TCP/IP傳輸控制層協議之上的應用層協議,本文僅對應用層協議做詳細描述。應用層之下的TCP/IP協議棧已相當成熟,在嵌入式設備開發中可完全通過軟件實現,也可用具備透明傳輸功能的TCP/IP硬件模塊來實現。
如圖3所示,使用HTTP協議接入智能云架構模型可簡化為客戶/服務器(C/S)結構,智能云提供一組服務,即數據存儲服務和HTTP訪問服務。智能設備和應用終端都是HTTP客戶端,傳輸請求總是由客戶端發起,服務器對請求做出響應。
智能設備通過HTTP協議中的GET/POST/PUT等方法上傳命令/數據等,從HTTP響應獲取下傳指令/數據,所有數據庫操作必須經由Web服務器作為中介,使用SQL語句進行訪問。
OneNET/HTTP接入協議:OneNET支持設備采用HTTP協議接入平臺,HTTP協議具有接入鑒權、控制命令下發、告警出發等功能,適合平臺與平臺、設備與平臺間的數據對接。
OneNET/HTTP接入協議就是一組API接口,包括“設備”“數據流”“數據點”和“觸發器”等10大類操作API接口。設備/數據流等有關操作API多在設備的注冊和后臺管理中使用,OneNET平臺已開發好相關服務軟件,無需編寫代碼,在本監測節點設備的開發過程中,僅用到數據點的上傳API協議,故在2.3節中以示例方式給出新增數據點操作API的用法,更詳細的其他API解釋見參考文獻[3]。
2.3 HTTP/POST數據包格式
OneNET平臺的新增數據點(鍵-值對)上傳API接口用于上傳數據打包,使用HTTP/POST方法傳送數據。HTTP協議POST方法傳輸報文由URL、包頭和正文三部分組成,上傳數據點API接口協議是描述如何填寫URL、HTTP頭、HTTP正文。下面是上傳采集數據點API最簡示例描述:
HTTP方法:POST
URL示例:
{ api.heclouds.com/devices/device-ID/datapoints?
type=3\r\n }
HTTP包頭示例: //api-key:設備注冊生成的字符串
{ api-key: 242RprHyALimOZLCKiXeT7IRdLM= \r\n
Content-Type:application/json\r\n }
HTTP內容示例: //上傳:溫度、濕度鍵值對
{ "temperature":22.5,"humidity":"95.2%" \r\n }
請求返回示例:
{"errno":0,\r\n"error": "succ"\r\n }
在上傳示例中,除帶下畫線字段外,都由OneNET定義,無需更改,帶下畫線部分需根據注冊及數據信息填入設備ID、api-key等。注意:“{”、“}”是API字段內容描述性分界符,實際傳輸數據包中不包含這兩個符號,“\r\n”是C語言轉義字符,代表回車換行等不可見字符,“//”符號后面的文字代表注解。
3 數據采集設備功能需求
3.1 設備功能需求
設計目標:實現礦區安全環境與巖體災變數據實時監測與記錄等功能。主要監測變量包括:危險巖體裂縫距離、溫度、濕度、水浸和有害氣體等。
主要功能:(1)實時高效地對礦區安全隱患點的多個參量進行監測;(2)對監測數據進行長期連續記錄與存儲;(3)綜合分析巖體災變數據,給出巖體裂縫距離變化曲線;(4)使可連接節點設備數量大于200。
圖4是巖體位移災變數據采集系統功能框圖,其中基本數據的處理與顯示子系統有現成模板可參考,通信子系統選用成熟商用設備組網,所以工作重點是數據采集子系統設計。
在節點設備設計過程中,首先需在OneNET云端注冊設備,添加數據流,創建和編輯應用界面。因在節點設備的軟件設計過程中,涉及設備及數據流注冊信息,所以在此僅需對設備注冊和數據流內容作出說明。
3.2 設備及數據流注冊
在使用OneNET智能云服務前,先注冊設備、并為設備添加數據流。一般礦區有幾十個甚至幾百個監測節點,一個監測點注冊一個設備,每個設備下掛多個數據流。本項目在OneNET智能云中注冊了2臺開發用測試設備,其中一臺設備ID為11283817,表1是該設備所掛載的數據流等注冊信息。
4 數據采集節點設備設計
本采集系統設計的關鍵和難點是數據采集子系統設計,即節點設備的軟硬件開發。節點設備開發內容包括:硬件結構設計、測距方案選擇、網絡接口設計和軟件代碼實現等方面。
4.1 節點設備硬件結構
如圖5所示,接入設備的硬件組成包括:STM32F103/LCD等組件構成的MCU部基本系統、I2C接口激光測距模塊、UART接口WIFI模塊和溫濕度等其他傳感器模塊。
在低成本、低功耗設備的設計中,網絡接口設計是關鍵,本設計采用硬件TCP/IP協議棧,解決了低成本MCU聯接網絡關鍵問題。
4.2 巖體裂縫距離測量技術方案
巖體裂縫距離測量技術方案主要包括:(1)基于圖像識別的裂縫檢測[4];(2)光纖位移傳感器測量[5];(3)激光測距法[6]等。前兩種技術方案開發的檢測設備技術復雜且成本高,難以批量應用,第三種方法技術成熟可靠,成本低廉,并且安裝簡便,可大批量應用。
VL53L0X是法意半導體開發的第二代智能激光測距傳感器,用于測量巖體裂縫距離,其安裝位置如圖6所示。測距工作原理為:傳感器主動發射激光脈沖,測量反射激光的飛行時間(ToF),根據ToF可計算傳感器到反射體間的距離。VL53L0X最大測距長度為兩米,精確度在±3%范圍內,采用I2C接口與MCU聯接,接口電路如圖6。測距模塊主要用來測量巖體裂縫的動態變化實時數據。
圖6 激光傳感器安裝示意圖
4.3 網絡接口設計
在低功耗硬件設計中,因MCU處理能力有限,一般選用固化了TCP/IP協議棧的網絡通信模塊聯接網絡,可選模塊種類有GPRS、3G/4G、NB-IoT、WIFI等。當節點設備需要連接更多數量的傳感器和控制器時,可以進一步與ZigBee[7]無線傳感器網絡、MODBUS[8]工控網絡連接,這時節點拓展成一個工控網絡,應用就更為復雜了。本設計設備直接與傳感器接口。
本文所設計節點設備與智能云通信接口采用ESP8266 WIFI模塊,該模塊具有功耗超低、UART-WIFI透傳等特征,模塊內置完整的TCP/IP協議棧,MCU使用串口AT命令操作模塊,實現SOCKET接口及網絡TCP/IP協議功能,更詳細的說明見參考文獻[9]。
4.4 軟件設計與實現
如圖7是節點設備內部程序流程圖,節點設備軟件開發主要包括下列內容:(1)STM32串行口讀寫函數與AT命令發送函數編寫;(2)編寫ESP8266模塊初始化函數,啟動服務器鏈接SOCKET通信,實現TCP/IP應用層數據的透明傳輸;(3)采集數據與打包,根據OneNET接入API協議,編寫HTTP數據打包函數;(4)發送HTTP數據包,接收并處理HTTP回應數據包,實現相關硬件操作功能。
軟件開發中,一些關鍵宏定義和功能函數原型定義如下:
#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); //激光測距模塊數集采集函數
unsigned int HTTP_PostPkt(char *pbuf, char *key,
char *dev_id, char *ds_id, char *val);
上述代碼段說明:(1)CWJAP宏,是WIFI訪問參數,包含WIFI_ID及密碼;(2)CIPSTART宏,包含中移物聯服務器地址及端口號,由OneNET給定;(3)API_KEY宏,設備綁定的訪問參數;(4)DEV_ID、DS_ID,即注冊設備ID、數據流ID等;(5)USART3串口讀、寫、清除操作函數;(6)GetDistance距離數據采集函數;(7)HTTP_PostPkt()是HTTP/POST數據包封裝函數。
HTTP_PostPkt()是與OneNET接口的關鍵函數,下面是經過實驗測試的打包函數和上傳數據示例代碼,它可正確完成POST數據包的封裝。
unsigned int HTTP_PostPkt(
char *pbuf, //pbuf報文緩存指針
char *key, //key是API_KEY指針
char *dev_id, //dev_id指設備ID
char *ds_id, //ds_id上傳數據流ID(鍵名)
char *val ) { //val指字符串形式的數據點(值)
char dataBuf[100] = {0}; //定義dataBuf參數
char lenBuf[10] = {0}; //定義lenBuf參數
//①格式化鍵值對,生成包正文數據和正文長度字符串
sprintf(dataBuf, ",;%s,%s", ds_id, val);
sprintf(lenBuf, "%d", strlen(dataBuf)); //計算長度
//②設備ID號寫入包頭
*pbuf = 0;
strcat(pbuf, "POST /devices/"); strcat(pbuf, dev_id);
strcat(pbuf, "/datapoints?type=5 HTTP/1.1\r\n");
//③API-KEY寫入包頭
strcat(pbuf, "api-key:");
strcat(pbuf, key); strcat(pbuf, "\r\n");
//④OneNET定義API接口主機名寫入包頭
strcat(pbuf, "Host:api.heclouds.com\r\n");
//⑤正文數據dataBuf長度寫入包頭
strcat(pbuf, "Content-Length:");
strcat(pbuf, lenBuf); strcat(pbuf, "\r\n\r\n");
//⑥添加數據到POST包數據正文段中
strcat(pbuf, dataBuf);
return( strlen(pbuf)); //返回POST格式數據包長度
}
void main(void){
//…
USART3_Clear();
//⑦上傳示例代碼,調用打包函數
len = HTTP_PostPkt ( \
buf, API_KEY , DEV_ID, DS_ID1 , val );
USART3_Write(buf, len); //串口透明傳輸TCP/IP報文
//…
}
5 實驗與測試
礦區巷道水浸和有害氣體的預警相對簡單,與之相比,巖體裂縫的災變過程就比較復雜,它是一個長期緩變過程,緩變積累到一定程度,就可能發生現實災變,且不同地質地貌的變化規律不盡相同。所以必須首先部署大量的采集節點,收集大量的巖體裂變數據,并記錄裂變過程。只有當數據積累到一定數量時,才能分析災變規律。本項目的數據采集實驗測試階段僅部署了少量實驗性的數據采集點,采集的數據可通過Web客戶端或Android APP顯示。Web版OneNET客戶端APP界面有多種數據顯示方式,常見的有曲線顯示、儀表顯示等。圖8是通過PC瀏覽器打開本應用鏈接顯示的部分數據截圖,子圖(a)為某一個巖體裂縫距離變化曲線,子圖(b)為打開APP時刻采集記錄到的某巷道溫度和濕度數值。
(a)某巖體裂縫距離變化曲線
(b)值儀表顯示的某巷道溫濕度數據
實驗測試表明,所設計的數據采集節點設備工作穩定,數據測量精確,巖體位移精度達mm級別,可記錄微小緩慢的變化。
6 結 論
本文針對礦山環境安全監測問題的特點,提出了一種基于智能云的礦山巖體裂變數據采集節點設備技術方案。概要介紹了OneNET平臺功能模型和網絡接口協議,重點分析了數據采集節點設備設計所涉及的關鍵技術,包括OneNET網絡接入技術、設備的軟硬件實現等,并對節點設備和系統進行了實驗測試。測試結果表明,設備可準確測量和記錄巖體裂變過程,技術方案可行,節點設備運行可靠。本文的設計為礦山安全環境監測提供了一套可行的技術方案,可實現低成本的數據存儲和網絡接入,為智能礦山災害監測系統的發展奠定了技術基礎,具有廣泛的參考價值。
參考文獻:
[1] 林連寶.露采生產工程巖體裂縫類型與危害控制 [J].黃金,2006(5):26-29.
[2] 陳爾奎.基于OneNET的礦山綜合監控系統的研究 [J].煤炭技術,2017,36(9):195-197.
[2]陳爾奎,張敏,尹曉鋼,等.基于OneNET的礦山綜合監控系統的研究 [J].煤炭技術,2017,36(9):195-197.
[3] 中國移動.OneNET開發者文檔中心 [EB/OL].https://open.iot.10086.cn/doc/art246.html#68.2017.
[4] 肖玲玲,魏浩.基于DSP的井下巖體裂縫檢測系統的設計 [J].電視技術,2013,37(7):167-170.
[5] 謝全敏,吳定洪,王紅彬,等.薄盒式光纖巖體裂縫計研究 [J].山地學報,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協同無線傳感網絡的節能技術 [J].計算機工程與設計,2015,36(1):22-29.
[8] 李秉榮,劉夫云,魯倪亞.基于RS485和TCP/IP網絡的分布式稱重系統 [J].計算機系統應用,2011,20(9):35-38.
[9] 樂鑫信息科技.ESP8266用戶手冊V03 [EB/OL].https://wenku.baidu.com/view/dd2f8965581b6bd97e19ea37.html.Setp 2,2014.
作者簡介:宋志鵬(1995-),男,漢族,江西萍鄉人,2014級通信工程專業本科生。研究方向:物聯網技術;廖家明(1995-),男,漢族,江西九江人,2014級通信工程專業本科生。研究方向:嵌入式系統與物聯網技術;張?。?997-),男,漢族,河南信陽人,2015級通信工程專業本科生。研究方向:嵌入式系統設計;通訊作者:吳君欽(1966-),男,碩士,教授。研究方向:嵌入式系統,無線寬帶通信。