王新龍,陳 偉
(長(zhǎng)治學(xué)院 計(jì)算機(jī)系,山西 長(zhǎng)治 046011)
在農(nóng)業(yè)現(xiàn)代化進(jìn)程中,傳統(tǒng)的作業(yè)質(zhì)量檢測(cè)方式有很多缺陷,如測(cè)量數(shù)據(jù)誤差大、測(cè)量不及時(shí)等。為了檢測(cè)農(nóng)機(jī)深松作業(yè)的達(dá)標(biāo)情況,需要對(duì)農(nóng)機(jī)深松作業(yè)時(shí)的深度進(jìn)行實(shí)時(shí)監(jiān)測(cè),并且將測(cè)量數(shù)據(jù)通過(guò)無(wú)線網(wǎng)絡(luò)傳輸至后臺(tái)服務(wù)器,在后臺(tái)服務(wù)器再進(jìn)一步進(jìn)行相應(yīng)處理。文章研究了利用超聲波傳感器測(cè)距原理進(jìn)行農(nóng)機(jī)深松作業(yè)深度自動(dòng)檢測(cè)的技術(shù)和方法,通過(guò)GPRS將測(cè)量數(shù)據(jù)無(wú)線傳輸至網(wǎng)絡(luò)服務(wù)器,同時(shí)可以方便地在客戶端進(jìn)行及時(shí)查看。
本系統(tǒng)主要由超聲波深度檢測(cè)數(shù)據(jù)采集模塊、GPRS數(shù)據(jù)傳輸模塊、云服務(wù)器搭建模塊組成。系統(tǒng)總體框圖如圖1所示。
其中,超聲波深度檢測(cè)數(shù)據(jù)采集可以對(duì)農(nóng)機(jī)深松作業(yè)的深度進(jìn)行實(shí)時(shí)檢測(cè);GPRS數(shù)據(jù)傳輸模塊可以將采集到的數(shù)據(jù)同步上傳至云服務(wù)器。
實(shí)驗(yàn)系統(tǒng)的硬件主要由M26四頻段GSM/GPRS無(wú)線模塊、HC-SR04超聲波測(cè)距模塊組成[1]。對(duì)于HC-SR04超聲波測(cè)距模塊以及M26模塊都是作為分模塊完成其各自功能,為實(shí)現(xiàn)硬件整合需要一個(gè)主控模塊。在綜合考慮性能、成本、功耗的因素的影響后,實(shí)驗(yàn)采用了STM32系列中的STM32F103C8T6作為本次研究的主控芯片模塊。
實(shí)驗(yàn)選用HC-SR04的超聲波測(cè)距模塊,HC-SR04超聲波測(cè)距模塊能夠?qū)崿F(xiàn)2 cm-400 cm的非接觸式距離感測(cè)功能,測(cè)距精度可達(dá)高到3 mm,該模塊由超聲波發(fā)射器,接收器和控制電路組成。
在對(duì)HC-SR04超聲波測(cè)距模塊進(jìn)行控制時(shí),基于Arduino電子平臺(tái)的便捷性與靈活性,該實(shí)驗(yàn)選用了一款基于ATmega328處理器型號(hào)為nano的Arduino開(kāi)發(fā)板作為HC-SR04超聲波測(cè)距模塊的控制板,以接受HC-SR04超聲波測(cè)距模塊所測(cè)量的數(shù)據(jù)。
對(duì)于作業(yè)點(diǎn)的經(jīng)緯度獲取及GPRS無(wú)線數(shù)據(jù)傳輸功能,試驗(yàn)中采用了移遠(yuǎn)通信技術(shù)有限公司研發(fā)的M26模塊,該模塊是一款工業(yè)級(jí)的四頻段GSM/GPRS無(wú)線模塊。它的工作頻段是:GSM850 MHz,GSM900 MHz,DCS1800 MHz和 PCS1900 MHz。M26提供GPRS數(shù)據(jù)傳輸,GSM短信業(yè)務(wù),并支持GPRS multi-slot class1~12(默認(rèn)為 class12)、GPRS 編碼格式 CS-1、CS-2、CS-3 和 CS-4。
后臺(tái)云服務(wù)器的運(yùn)行與搭建主要基于java平臺(tái)以及騰訊云服務(wù)器平臺(tái),通過(guò)java提供的TCP/IP網(wǎng)絡(luò)服務(wù)支持及數(shù)據(jù)庫(kù)接入,搭建基本的服務(wù)器平臺(tái),再通過(guò)基于騰訊云服務(wù)器平臺(tái)的外網(wǎng)接入功能,實(shí)現(xiàn)遠(yuǎn)程客戶端接入及GPRS數(shù)據(jù)傳輸功能,進(jìn)行農(nóng)機(jī)深松作業(yè)中的深度測(cè)量研究。
實(shí)驗(yàn)中選擇了騰訊云服務(wù)器平臺(tái),并在申請(qǐng)的云服務(wù)器平臺(tái)上搭建了實(shí)驗(yàn)所用云主機(jī),以便實(shí)現(xiàn)深度測(cè)量數(shù)據(jù)接收。
HC-SR04超聲波測(cè)距模塊在實(shí)際運(yùn)用時(shí),根據(jù)其模塊使用時(shí)序圖(圖2),分為如下三個(gè)步驟:
(1)使用IO口中的TRIG引腳口觸發(fā)測(cè)距,即給該IO口輸入10 us以上的高電平信號(hào)。
(2)HC-SR04超聲波測(cè)距模塊接收到觸發(fā)信號(hào)后能夠自動(dòng)通過(guò)超聲波發(fā)射口發(fā)送8個(gè)40 khz的方波,同時(shí)在超聲波接收口自動(dòng)檢測(cè)是否有信號(hào)返回;
(3)當(dāng)有信號(hào)返回時(shí),通過(guò)IO口ECHO口輸出一個(gè)高電平方波,高電平方波持續(xù)的時(shí)間就是超聲波從發(fā)射到返回的時(shí)間。因此測(cè)量距離公式為:測(cè)試距離=(高電平時(shí)間*聲速(340M/S))/2。實(shí)際測(cè)量深度時(shí),作業(yè)深度=機(jī)手長(zhǎng)度-測(cè)試距離。
圖2 HC-SR04超聲波測(cè)距模塊時(shí)序圖
實(shí)驗(yàn)采用了STM32系列中的STM32F103C8T6作為本次研究的主控芯片模塊,將HC-SR04超聲波測(cè)距模塊以及M26模塊通過(guò)硬件線路連線接入STM32F103C8T6芯片,正確連接后,運(yùn)行控制程序?qū)崿F(xiàn)模塊各自功能。
圖3STM32F103C8T6與M26模塊連線圖
實(shí)驗(yàn)通過(guò)串口連接傳輸相應(yīng)AT指令至M26模塊之中,以使M26模塊對(duì)應(yīng)完成基站定位獲取經(jīng)緯度及GPRS數(shù)據(jù)傳輸功能,如圖3所示。將STM32F103C8T6芯片與M26進(jìn)行線路連接,主要是進(jìn)行串口連線,即將M26模塊的TX引腳與STM32F103C8T6的RX引腳相連。將M26模塊的RX引腳與STM32F103C8T6的TX引腳,再將兩個(gè)芯片共同接地線,即可進(jìn)行M26模塊與STM32F103C8T6芯片的串口通信,可通過(guò)串口由STM32F103C8T6芯片向M26模塊發(fā)送AT指令,使M26模塊進(jìn)行相應(yīng)工作。
將超聲波測(cè)距模塊也接入STM32F103C8T6芯片上,由于在進(jìn)行超聲波測(cè)距時(shí),對(duì)于HC-SR04超聲波測(cè)距模塊的控制芯片是Arduino nano開(kāi)發(fā)板,因此直接與STM32F103C8T6芯片相連線的并不是HC-SR04超聲波測(cè)距模塊,而是這款基于ATmega328處理器的Arduino nano開(kāi)發(fā)板,其基本工作原理是:開(kāi)發(fā)板控制HC-SR04超聲波測(cè)距模塊進(jìn)行測(cè)距并得到測(cè)量數(shù)據(jù),通過(guò)串口將得到的測(cè)量數(shù)據(jù)傳輸至STM32F103C8T6主控芯片。主要連線同樣是進(jìn)行串口連線,將Arduino nano開(kāi)發(fā)板的TX引腳與STM32F103C8T6的RX引腳相連,將Arduino nano開(kāi)發(fā)板的RX引腳與STM32F103C8T6的TX引腳,再將兩個(gè)芯片共同接地線,即可進(jìn)行Arduino nano開(kāi)發(fā)板與STM32F103C8T6芯片的串口通信[2][3]。
由于STM32F103C8T6芯片具有5個(gè)USART,實(shí)驗(yàn)中同時(shí)將M26模塊和Arduino nano開(kāi)發(fā)板與STM32F103C8T6主控芯片進(jìn)行串口連線,因此可以進(jìn)行多個(gè)串口通信,而在進(jìn)行多個(gè)串口通信時(shí)只需設(shè)置好串口響應(yīng)優(yōu)先級(jí)及搶占優(yōu)先級(jí)即可。在進(jìn)行兩個(gè)串口同時(shí)通信時(shí),采用了關(guān)閉響應(yīng)原理,在進(jìn)行一個(gè)串口通信時(shí),人為關(guān)閉另一個(gè)串口響應(yīng),如此交替進(jìn)行串口數(shù)據(jù)傳輸,避免了因串口中斷搶占問(wèn)題引發(fā)的數(shù)據(jù)丟失、出錯(cuò)等問(wèn)題。
(1)STM32F103C8T6主控芯片在得到了Arduino nano開(kāi)發(fā)板通過(guò)串口傳來(lái)的深度數(shù)據(jù)之后,啟動(dòng)M26模塊的基站定位獲取經(jīng)緯度服務(wù)以得到經(jīng)緯度數(shù)據(jù),同時(shí)將經(jīng)緯度數(shù)據(jù)與深度數(shù)據(jù)打包,通過(guò)M26模塊的GPRS數(shù)據(jù)傳輸服務(wù)即可將打包數(shù)據(jù)傳輸至后臺(tái)服務(wù)器[4]。
通過(guò)M26模塊進(jìn)行數(shù)據(jù)傳輸,其AT指令為:“AT+QIOPEN=[
在測(cè)試實(shí)驗(yàn)經(jīng)緯度獲取及GPRS數(shù)據(jù)發(fā)送時(shí),通過(guò)使用網(wǎng)絡(luò)調(diào)試助手這款軟件直接進(jìn)行網(wǎng)絡(luò)協(xié)議、IP地址及端口號(hào)的相應(yīng)設(shè)置,從云主機(jī)上即可正常接收數(shù)據(jù)[5]。
通過(guò)java語(yǔ)言開(kāi)發(fā)平臺(tái),引入相應(yīng)封裝類(lèi)“java.net.ServerSocket”啟動(dòng)一個(gè)服務(wù)器,在此類(lèi)的變量后,通過(guò)語(yǔ)句“new ServerSocket(端口號(hào))”便可開(kāi)放相應(yīng)的服務(wù)器端口以實(shí)現(xiàn)數(shù)據(jù)收發(fā)[6-8]。
(2)客戶端設(shè)備連接云主機(jī)服務(wù)器成功后,即可向服務(wù)器發(fā)送處理打包好的數(shù)據(jù)。
(3)實(shí)驗(yàn)測(cè)得:在長(zhǎng)時(shí)間連續(xù)進(jìn)行下,設(shè)備仍能進(jìn)行正常工作,服務(wù)器同時(shí)可以正常接受并處理數(shù)據(jù),并在服務(wù)器端動(dòng)態(tài)顯示數(shù)據(jù)庫(kù)中最新存入的十個(gè)由設(shè)備發(fā)送來(lái)的數(shù)據(jù),測(cè)試結(jié)果見(jiàn)圖4。
圖4 服務(wù)器端動(dòng)態(tài)顯示最十個(gè)數(shù)據(jù)
文章提出了一種農(nóng)機(jī)松作業(yè)時(shí)作業(yè)深度的檢測(cè)方法,并且結(jié)合物聯(lián)網(wǎng)技術(shù)對(duì)測(cè)試過(guò)程進(jìn)行了聯(lián)網(wǎng)監(jiān)測(cè),從測(cè)試數(shù)據(jù)與實(shí)際作業(yè)數(shù)據(jù)對(duì)比來(lái)看,測(cè)量數(shù)據(jù)準(zhǔn)確,測(cè)量效果較理想。該研究所采用的方法技術(shù),未來(lái)可以在其他測(cè)距監(jiān)控場(chǎng)合得以應(yīng)用,這種方法是可行且高效的。
長(zhǎng)治學(xué)院學(xué)報(bào)2018年2期