劉雋寧,朱 鋒
(國(guó)能神東煤炭集團(tuán)有限責(zé)任公司,陜西 榆林 719315)
目前,大數(shù)據(jù)、物聯(lián)網(wǎng)、WiFi等信息化技術(shù)迅速發(fā)展,傳統(tǒng)模式的有線數(shù)據(jù)傳輸方式雖然能夠滿足數(shù)據(jù)傳輸需求,但是成本高、數(shù)據(jù)采集效率低等因素影響了其具體應(yīng)用體驗(yàn),針對(duì)該種情況,雖然一些技術(shù)人員嘗試性地以ZigBee無線傳感器網(wǎng)絡(luò)來完成數(shù)據(jù)信息的采集與傳輸,但是其難以直接與Internet集成,且傳輸距離受限。因此,文章提出一種基于網(wǎng)絡(luò)協(xié)議的無線遠(yuǎn)程數(shù)據(jù)傳輸系統(tǒng),以此來解決遠(yuǎn)程數(shù)據(jù)傳輸過程中的諸多問題,并保證通信的穩(wěn)定性。
以網(wǎng)絡(luò)協(xié)議為基礎(chǔ)的無線遠(yuǎn)程數(shù)據(jù)傳輸系統(tǒng)架構(gòu)中,硬件架構(gòu)包括存儲(chǔ)裝置、顯示裝置、數(shù)據(jù)傳輸裝置、數(shù)據(jù)采集裝置以及微處理器裝置;控制核心選擇STM32處理器,用于處理各項(xiàng)數(shù)據(jù);WiFi裝置用于無線通信,將得到的數(shù)據(jù)信息傳輸?shù)椒?wù)器端;數(shù)據(jù)檢測(cè)裝置選擇溫濕度傳感器,用于采集、提取室內(nèi)環(huán)境各個(gè)時(shí)間段的監(jiān)測(cè)數(shù)據(jù);TFT-LCD顯示屏用于記錄與顯示各個(gè)階段的數(shù)據(jù)信息;以傳輸控制協(xié)議/網(wǎng)際協(xié)議(Transmission Control Protocol/Internet Protocol,TCP/IP)為基礎(chǔ),利用Java技術(shù)、Socket技術(shù)展開網(wǎng)絡(luò)通信協(xié)議編程,保持通信裝置與上位機(jī)的數(shù)據(jù)通信;而多路測(cè)試節(jié)點(diǎn)則是將采集、提取的各項(xiàng)數(shù)據(jù)信息通過WiFi裝置直接傳輸?shù)骄W(wǎng)絡(luò)服務(wù)器,接收端借助通信協(xié)議來對(duì)測(cè)試點(diǎn)數(shù)據(jù)進(jìn)行發(fā)送與獲取[1]。
考慮到處理器的功耗、性能以及成本等因素,選擇STM32F130ZET6芯片當(dāng)作系統(tǒng)處理器,其容量較大,主頻為72 MHz,內(nèi)部裝置512 kB閃存與64 kB SRAM,工作溫度為-40~85 ℃,并在內(nèi)部設(shè)置了多個(gè)設(shè)備接口,應(yīng)用范圍較廣,另外處理器包括停機(jī)、睡眠、待機(jī)等模式。
考慮到系統(tǒng)需采集多個(gè)區(qū)域、多個(gè)室內(nèi)溫度濕度數(shù)據(jù),可選擇DHT11溫濕度傳感器,其內(nèi)部裝置有負(fù)溫度系數(shù)(Negative Temperature Coefficient,NTC)熱敏電阻測(cè)溫元件、感濕元件,可測(cè)量0~50 ℃的溫度,電流、電壓分別為0.5 mA、5 V,其在功耗、性能等方面皆達(dá)到設(shè)計(jì)標(biāo)準(zhǔn)要求[2]。
系統(tǒng)設(shè)計(jì)中以ESP8266裝置來保證WiFi通信穩(wěn)定,該項(xiàng)裝置自成體系,可借助串行外設(shè)接口/安全數(shù)字輸入輸出(Serial Peripheral Interface/Secure Digital Input and Output,SPI/SDIO)接口來連接微處理器,并可在-40~125 ℃的條件下工作,包括無線接入點(diǎn)(Access Point,AP)、單線程單元(Single-Threaded Apartment,STA)、STA+AP共3種模式,可靈活展開網(wǎng)絡(luò)拓?fù)鋄3]。
結(jié)合系統(tǒng)標(biāo)準(zhǔn)要求,對(duì)硬件展開初始化處理,其后開始設(shè)計(jì)模塊功能。針對(duì)ESP8266無線模塊來說,可借助AT指令集進(jìn)行各項(xiàng)網(wǎng)絡(luò)參數(shù)配置,再選擇STA用于TCP客戶端的模式[4]。
TCP/IP協(xié)議包括應(yīng)用層、傳輸層以及Internet層,對(duì)應(yīng)的是應(yīng)用層協(xié)議、TCP/用戶數(shù)據(jù)協(xié)議(User Data Protocol,UDP)傳輸協(xié)議、IP協(xié)議,其中后兩者為基礎(chǔ)部分,前者則是以后兩者為基礎(chǔ)根據(jù)對(duì)應(yīng)項(xiàng)目的具體要求來定制具體的功能。本文研究的系統(tǒng)是以異步通信來完成應(yīng)用層協(xié)議定制,且因上位機(jī)IP與測(cè)試點(diǎn)會(huì)出現(xiàn)變化,故而選擇將兩端設(shè)定成TCP客戶端[5]。
其中應(yīng)用層協(xié)議報(bào)文段包括數(shù)據(jù)信息、客戶ID、異步數(shù)據(jù)與同步數(shù)據(jù)類型選擇位以及用戶密碼4個(gè)部分,具體流程如圖1所示。在接入TCP客戶端后,驗(yàn)證密碼,開啟TCP連接,后續(xù)應(yīng)用層協(xié)議進(jìn)行數(shù)據(jù)類型判斷,如果是接收數(shù)據(jù),則收集用戶ID,再判定其屬于異步或者是同步數(shù)據(jù),若是前者則還需決定是否發(fā)送與存儲(chǔ)。若數(shù)據(jù)長(zhǎng)度與原本設(shè)定的長(zhǎng)度一致,則將數(shù)據(jù)存儲(chǔ)在其對(duì)應(yīng)客戶ID處以備后續(xù)隨時(shí)提取;若數(shù)據(jù)信息為空,則直接發(fā)送存儲(chǔ)數(shù)據(jù),關(guān)閉TCP[6]。
圖1 應(yīng)用層協(xié)議流程
在Java中通過java.net包完成網(wǎng)絡(luò)編程,所用的網(wǎng)絡(luò)協(xié)議是Socket與ServerSocket,其中Socket類用來接收與發(fā)送數(shù)據(jù),ServerSocket類是通過ServerSocket(int port)構(gòu)造。服務(wù)器端口選擇的是8086,因此可通過以下方式來創(chuàng)建端口:ServerSocketssocket=new ServerSocket(8086)。而 數(shù)據(jù)接收與發(fā)送則需依靠Socket類的getOutputStream與getInputStream[7]。
數(shù)據(jù)發(fā)送語句具體為:
在完成系統(tǒng)硬件部分和軟件部分的設(shè)計(jì)后,制作樣機(jī)完成試驗(yàn)測(cè)試,以此來檢驗(yàn)系統(tǒng)本身的可靠性與可行性,具體步驟如下文所述。
(1)選擇某地區(qū)展開應(yīng)用測(cè)驗(yàn),并將監(jiān)測(cè)終端設(shè)置在相互距離超過5 km的位置,包括監(jiān)測(cè)點(diǎn)a、監(jiān)測(cè)點(diǎn)b、監(jiān)測(cè)點(diǎn)c共3個(gè)監(jiān)測(cè)位置。在通電之后,選擇STA模式,連接Internet,設(shè)定TCP客戶端工作模式,直接輸入通信協(xié)議地址47.94.164.217,設(shè)定目標(biāo)端口為8086。成功連接后,會(huì)在TFT-LCD顯示屏處顯示各個(gè)時(shí)間段的溫濕度虛假信息,傳輸給網(wǎng)絡(luò)服務(wù)器。數(shù)據(jù)長(zhǎng)度設(shè)定為37,報(bào)文段選擇testAM000x格式,其中test指的是設(shè)定密碼、AM指的是異步通信、000x指的是各個(gè)監(jiān)測(cè)點(diǎn)ID[8]。
(2)監(jiān)測(cè)端連接網(wǎng)絡(luò)協(xié)議后開啟調(diào)試助手,再選用TCP客戶端以及與上述一致的服務(wù)器地址;建立好連接后,會(huì)有ARM處理器定時(shí)朝著服務(wù)器端不斷發(fā)送數(shù)據(jù)信息,調(diào)試助手在得到各項(xiàng)數(shù)據(jù)后進(jìn)行有效的處理;若是調(diào)取各個(gè)監(jiān)測(cè)點(diǎn)對(duì)應(yīng)的數(shù)據(jù)信息,則必須發(fā)送該測(cè)試點(diǎn)ID報(bào)文段,得到的數(shù)據(jù)格式為日期+時(shí)間+測(cè)試點(diǎn)編號(hào)+濕度+溫度[9]。
(3)以2021年3月19日為例,研究在10:00—18:00期間遠(yuǎn)程數(shù)據(jù)傳輸情況,并每間隔15 min通過數(shù)據(jù)采集裝置采集各個(gè)監(jiān)測(cè)點(diǎn)對(duì)應(yīng)的溫度、濕度數(shù)據(jù),共33組,再將收集的監(jiān)測(cè)點(diǎn)數(shù)據(jù)信息與實(shí)際溫濕度標(biāo)準(zhǔn)值進(jìn)行對(duì)比分析,以此來檢驗(yàn)該項(xiàng)數(shù)據(jù)傳輸系統(tǒng)的準(zhǔn)確性,得到的監(jiān)測(cè)點(diǎn)誤差測(cè)量情況如表1所示。
表1 監(jiān)測(cè)點(diǎn)誤差測(cè)量情況
分析以上誤差數(shù)據(jù)可知,無線遠(yuǎn)程數(shù)據(jù)傳輸系統(tǒng)在實(shí)際測(cè)量過程中不會(huì)出現(xiàn)較多的誤差,且誤差范圍較低,有著極高的準(zhǔn)確率。在進(jìn)行無線傳輸時(shí)不會(huì)受到外界因素過多的影響,整個(gè)過程運(yùn)行穩(wěn)定,且未發(fā)生數(shù)據(jù)丟失等問題,傳輸距離不會(huì)受到限制,能夠精確地測(cè)量各個(gè)監(jiān)測(cè)點(diǎn)的溫濕度,具備較高的可靠性[10]。
文章基于網(wǎng)絡(luò)協(xié)議的無線遠(yuǎn)程數(shù)據(jù)傳輸系統(tǒng)設(shè)計(jì)進(jìn)行了論述與分析,通過Java完成了通信協(xié)議編程,以此來解決以往遠(yuǎn)程數(shù)據(jù)傳輸過程中的距離受限以及成本問題,并具有傳輸穩(wěn)定、效率高等特征,在進(jìn)行硬件部分和軟件部分設(shè)計(jì)后通過具體的試驗(yàn)來驗(yàn)證了其可行性與有效性,建議給與其足夠的重視,分析其實(shí)際應(yīng)用效果,以此來發(fā)揮更大的價(jià)值。