房崇鑫,張正華,徐 杰,張嘉烽,錢 錦,蘇 權(quán),黃 星
(1.揚州大學(xué) 信息工程學(xué)院,江蘇 揚州 225127;2.揚州國脈通信發(fā)展有限責(zé)任公司,江蘇 揚州 225001)
隨著物聯(lián)網(wǎng)技術(shù)的廣泛運用,無線網(wǎng)絡(luò)數(shù)據(jù)傳輸與監(jiān)測在建設(shè)城市交通、發(fā)展科技農(nóng)業(yè)中的應(yīng)用需求不斷增加[1]。而依靠云計算技術(shù)的發(fā)展[2],原有的多種局域化智慧農(nóng)業(yè)[3]應(yīng)用逐步向公共的共性服務(wù)平臺遷移。在針對情況復(fù)雜多變的野外環(huán)境,如何通過設(shè)備合理利用有限能量依然能維持監(jiān)測系統(tǒng)的正常運轉(zhuǎn)是一個亟待解決的關(guān)鍵問題。利用云服務(wù)技術(shù)也是國內(nèi)外現(xiàn)代化科技設(shè)計的重要研究領(lǐng)域,其中先進的云端數(shù)據(jù)采集方式引起了很多學(xué)者的高度關(guān)注[4]。
眾多終端節(jié)點的低功耗多接口無線傳感器監(jiān)測系統(tǒng)成本低,應(yīng)用方便,易于實現(xiàn)本地中短距離數(shù)據(jù)傳輸和自動控制等功能。但是,因前端傳輸距離的限制,簡單的監(jiān)控系統(tǒng)無法延伸到遠程實現(xiàn)。為此設(shè)計一種結(jié)合GPRS無線通信技術(shù),利用互聯(lián)網(wǎng)云端服務(wù)器實時監(jiān)測數(shù)據(jù)傳輸,從而擴展物聯(lián)網(wǎng)覆蓋范圍的系統(tǒng)。
科技信息的云服務(wù)下,本地遠程數(shù)據(jù)傳輸技術(shù)系統(tǒng)主要有3部分:系統(tǒng)前端的本地實時數(shù)據(jù)傳感采集與ZigBee的收發(fā)功能形成系統(tǒng)的數(shù)據(jù)采集模塊;系統(tǒng)中端由協(xié)調(diào)器與單片機作為數(shù)據(jù)的分析與處理的網(wǎng)關(guān)模塊;系統(tǒng)末端由GPRS無線模塊與云端服務(wù)器作為對數(shù)據(jù)的最終接收與監(jiān)控,從而實現(xiàn)整套遠程監(jiān)測本地實況的系統(tǒng)。系統(tǒng)總體結(jié)構(gòu)如圖1所示。
圖1 系統(tǒng)總體結(jié)構(gòu)
該系統(tǒng)前端采用改進簡化無線協(xié)議后的CC2530型ZigBee星形拓撲結(jié)構(gòu)作為終端節(jié)點,進行溫濕度等數(shù)據(jù)采集[5],將數(shù)據(jù)能在短距離的無線通信下集中發(fā)送到協(xié)調(diào)器上。數(shù)據(jù)監(jiān)測的網(wǎng)關(guān)部分則是在協(xié)調(diào)器后端串口連接STM32F407型單片機對數(shù)據(jù)進行分析。末端通過SIM800C型GPRS無線模塊將采集的信息發(fā)送到云端服務(wù)器上,從遠程計算機即可讀取前端傳感器上的溫濕度等采集情況,監(jiān)控本地實時狀況。
系統(tǒng)前端采用以CC2530芯片為核心的ZigBee無線收發(fā)模塊,經(jīng)簡化協(xié)議棧后,其極高的接收靈敏度和穩(wěn)定的抗干擾性能適用于建筑墻體阻礙、無線噪聲干擾等惡劣的野外采集環(huán)境,同時也縮短了網(wǎng)絡(luò)握手時間,提高了信息交換速度[6]。低成本、高性能和抗干擾能力強是其能建立前端數(shù)據(jù)收集的主要優(yōu)勢[7]。
在此,ZigBee通信模塊的組建選用星形拓撲[8]結(jié)構(gòu)。由一個ZigBee協(xié)調(diào)器作為數(shù)據(jù)的總接收點放置于防水、防風(fēng)的基站里,其他若干個ZigBee節(jié)點可連接溫濕度等傳感器采集農(nóng)田環(huán)境信息放置于野外。比較于直接傳感接收的組織設(shè)備,在本地環(huán)境下延伸了收發(fā)數(shù)據(jù)的距離,并且減少了主從設(shè)備的昂貴成本,也易于保護。通過本地信息的分散收集,ZigBee節(jié)點模塊無線芯片將數(shù)據(jù)發(fā)送到協(xié)調(diào)器上,而協(xié)調(diào)器部分通過嵌入其他設(shè)備再對數(shù)據(jù)進行近一步處理和傳輸。
STM32F4系列是一款高性能的微控制器單片機,它具有自適應(yīng)的加速器,也擁有很高的操作性能,且ZigBee設(shè)備和GPRS無線模塊與STM32F407型單片機具有很高的嵌入吻合度。STM32F407單片機微控制器單片機中融合了一個周期的數(shù)字信號處理器和浮點單元,大大提高了運算速度,可以執(zhí)行很多復(fù)雜計算和數(shù)據(jù)處理[9]。
通過STM32F407單片機可以實現(xiàn)數(shù)據(jù)的傳輸和串接等工作,為后期控制模塊提供了良好的基礎(chǔ)平臺,達到真正的程控網(wǎng)絡(luò)服務(wù)科技發(fā)展。從而加長了本地采集數(shù)據(jù)的距離,可以將STM32F407單片機放置于環(huán)境良好的地方,增加了對主要設(shè)備的保護,保障了前端數(shù)據(jù)采集的穩(wěn)定性與可靠性。
SIM800C是一款四頻切換的GSM/GPRS模塊,可以在低功耗條件下實現(xiàn)語音、SMS和數(shù)據(jù)信息的傳輸[10-11]。內(nèi)置專門穩(wěn)壓電路,可拓展為支持太陽能長期供電。其性能穩(wěn)定,封裝簡便,性價比高,能應(yīng)用于緊湊型野外產(chǎn)品設(shè)計需求。本系統(tǒng)中選用的GPRS功能無線模塊最高工作速率可達到2 Mbps,基本能達到實時數(shù)據(jù)傳輸?shù)哪康腫12]。GFSK調(diào)制能避免無線噪聲干擾,多通信頻道設(shè)計,滿足多點通信和跳頻通信的需求,為后期寬區(qū)域的通信網(wǎng)絡(luò)建立提供基礎(chǔ)。模塊可以通過軟件設(shè)置數(shù)據(jù)傳輸?shù)刂?,只有收到本機地址請求連接才會成功發(fā)送信息,此外還提供中斷指示。工作協(xié)議引擎具有自動數(shù)據(jù)包處理、自動分組事務(wù)處理功能,并且包含了可選的內(nèi)置包應(yīng)答機制,極大地降低了數(shù)據(jù)丟包率。
撰寫STM32F407單片機的數(shù)據(jù)發(fā)送口驅(qū)動,使其能與GPRS無線模塊實現(xiàn)數(shù)據(jù)傳輸。設(shè)置可接收數(shù)據(jù)的遠程計算機識別端口號與IP地址,將數(shù)據(jù)通過GPRS功能發(fā)送至云服務(wù)器上[13],最終實現(xiàn)遠程計算機讀取本地數(shù)據(jù)采集情況的目的。
本系統(tǒng)采用STM32F407單片機作為網(wǎng)關(guān)是軟件系統(tǒng)的關(guān)鍵部分,接收數(shù)據(jù)口通過ZigBee進行數(shù)據(jù)集中采集[14],再加上延時器,對數(shù)據(jù)采集進行頻率上的控制,防止GPRS流量的過度使用。并且可以將采集到的情況顯示在LCD屏幕上,再通過GPRS模塊的AT指令發(fā)送至云服務(wù)器[15]。
本節(jié)主要介紹前端數(shù)據(jù)采集處理、TCP/IP協(xié)議通信、GPRS模塊的AT指令與遠程計算機的數(shù)據(jù)傳輸。
前端數(shù)據(jù)的采集:
DHT11_Read_Data(&temperature,&humidity);
LCD_ShowNum(30+40,150,temperature,2,16);
LCD_ShowNum(30+40,170,humidity,2,16);
delay_ms(1 000);
LED1=!LED1;
OOL[0]=temperature;
OOL[1]=humidity;
以溫濕度為例,采用DHT11溫濕度傳感器,STM32F407單片機每隔1 s讀取ZigBee協(xié)調(diào)器傳遞的信息。伴隨著綠色小燈信號,綠燈閃亮一次表示數(shù)據(jù)讀取成功一次,再將信息顯示在LCD屏幕上。循環(huán)上述指令,以達到每1 s更新一次數(shù)據(jù)。
為了實現(xiàn)不同協(xié)議之間的轉(zhuǎn)換,采用TCP協(xié)議通信程序進行數(shù)據(jù)傳輸[16]。TCP協(xié)議可在數(shù)據(jù)傳送之前將其分割為 IP 包進行信息通信,然后在到達目標設(shè)備時重組。而TCP/IP協(xié)議的源端與終端3次確認性通信更加保障了通信之間的安全性與可靠性。服務(wù)器直接通過TCP是面向連接的協(xié)議,在收發(fā)數(shù)據(jù)前,必須和對方建立準確無誤的連接。一個TCP連接必須要經(jīng)過3次確認才能建立起來[17],而3次確認的目的是使數(shù)據(jù)包同步發(fā)送與接收,經(jīng)過3次確認后,ZigBee協(xié)調(diào)器才向STM32F407單片機正式發(fā)送數(shù)據(jù)。通過private ServerSocket serverSocket()函數(shù)綁定一個端口,然后增加InputStream()函數(shù)與客戶端建立通信,獲取輸入流,讀取信息。等待客戶端連接System.out.printl(),再循環(huán)監(jiān)聽客戶端的連接,達到數(shù)據(jù)打包傳輸?shù)倪B接方法。
云服務(wù)器是一種處理能力可彈性伸縮的計算服務(wù),相比于物理服務(wù)器,管理方式更加簡單高效。多數(shù)據(jù)處理的情況下,云服務(wù)器的優(yōu)勢更為突出。云服務(wù)器可以快速構(gòu)建更穩(wěn)定、更安全的應(yīng)用,方便廣大客戶端使用,還具有多點備份、運行穩(wěn)定和獨享寬帶的特點[18]。其虛擬化和分布式存儲等云計算技術(shù),能將采集后的大數(shù)據(jù)和存儲的歷史資源融合在一起,通過Web方式從遠程計算機中讀取所需相關(guān)數(shù)據(jù),進行深度歸納與分析。
GPRS無線模塊驅(qū)動程序設(shè)計如下:
sim800c_send_cmd("AT+CIPSTATUS","OK",500);
if(strstr((const char*)USART3_RX_BUF,"CONNECT OK"))state=0;
if(strstr((const char*)USART3_RX_BUF,"CLOSED"))
{LCD_Fill(30+40,650,lcddev.width,650+16,WHITE);
Show_Str(30+40,650,200,16,"GPRS連接失敗’’,16,0);
sim800c_send_cmd("AT+CIPCLOSE=1","CLOSE OK",500);
sim800c_send_cmd("AT+CIPSHUT","SHUTOK",500);
sprintf((char*)p,"AT+CIPSTART="%s","%s","%s"",modetbl[mode],ipaddr,port);
if(sim800c_send_cmd(p,"OK",500)==0)state=0;
}
if(state==0)
{LCD_Fill(70,650,lcddev.width,650+16,WHITE);
if(sim800c_send_cmd("AT+CIPSEND",">",100)==0)
{Show_Str(30+40,650,200,16,"數(shù)據(jù)發(fā)送中",16,0);
printf("CIPSEND DATA:%s ",p1);
u3_printf("%s ",p1);
delay_ms(1 000);
if(sim800c_send_cmd((u8*)0X1A,"SEND OK",1 000)==0)
{LCD_Fill(70,650,lcddev.width,650+16,WHITE);
Show_Str(40+30,650,200,16,"數(shù)據(jù)發(fā)送成功",16,0);
}
else {LCD_Fill(70,650,lcddev.width,650+16,WHITE);Show_Str(40+30,650,200,12,"數(shù)據(jù)發(fā)送失敗!",16,0);}
delay_ms(1000);
state=0;
}
else sim800c_send_cmd((u8*)0X1B,0,0);
通過發(fā)送AT指令激活GPRS模塊發(fā)送數(shù)據(jù)功能。若連接失敗,啟動重新連接模塊;若與云端服務(wù)器連接成功,則可在云服務(wù)端的遠程計算機中讀取到前端采集的信息。該段指令循環(huán)發(fā)送,達到將傳感器上大量實時數(shù)據(jù)收集到云服務(wù)器中的目的。GPRS數(shù)據(jù)傳輸程序流程如圖2所示。
圖2 GPRS數(shù)據(jù)傳輸程序流程
ZigBee節(jié)點采集的溫濕度數(shù)據(jù)如圖3所示。
圖3 ZigBee節(jié)點采集的溫濕度數(shù)據(jù)
遠程計算機socket讀取的數(shù)據(jù)如圖4所示。
圖4 遠程計算機socket讀取的數(shù)據(jù)
圖3所示的ZigBee模塊數(shù)據(jù)采集情況中,溫度20 ℃,濕度63%,每隔1 s發(fā)送一次數(shù)據(jù),在登錄云端服務(wù)器后遠程計算機準確無誤地接收上述數(shù)據(jù)。相比于短距離數(shù)據(jù)接收設(shè)備,該系統(tǒng)可以實現(xiàn)云端數(shù)據(jù)采集與儲存,不僅延伸了信息傳遞的距離,還為后期數(shù)據(jù)分析提供了有利基礎(chǔ)。
隨著人工智能化時代的到來,前端本地監(jiān)測與控制技術(shù)仍有著很大的拓撲空間。通過云服務(wù)器實現(xiàn)物聯(lián)網(wǎng)不僅是當今電子科技的熱點,也提高了各行各業(yè)的產(chǎn)業(yè)效率,便于進行大數(shù)據(jù)分析與研究。以低碼率實現(xiàn)野外數(shù)據(jù)采集和傳輸,較曾經(jīng)的人力管理與維護,不僅方便且易于管理。經(jīng)測試,通過云服務(wù)的本地遠程數(shù)據(jù)傳輸技術(shù)可以將前端的數(shù)據(jù)上傳到云端服務(wù)器,且可以從遠程計算機讀取,數(shù)據(jù)結(jié)果準確有效。