周亞強(qiáng) , 馬俊,杜軍
(1.青海師范大學(xué) 計(jì)算機(jī)學(xué)院, 西寧 810008; 2.青海師范大學(xué) 物理系)
* 基金項(xiàng)目:國家級(jí)-教育部春暉項(xiàng)目(Z2011019)。
?
STM32的GPRS農(nóng)田多點(diǎn)圖像傳輸系統(tǒng)設(shè)計(jì)*
周亞強(qiáng)1, 馬俊2,杜軍1
(1.青海師范大學(xué) 計(jì)算機(jī)學(xué)院, 西寧 810008; 2.青海師范大學(xué) 物理系)
* 基金項(xiàng)目:國家級(jí)-教育部春暉項(xiàng)目(Z2011019)。
摘要:設(shè)計(jì)了基于32位STM32F103VET6微控制器的農(nóng)田多點(diǎn)圖像傳輸系統(tǒng),重點(diǎn)介紹了其軟件和硬件的設(shè)計(jì)過程。在Visual C++ 6.0平臺(tái),運(yùn)用Windows socket編寫PC端多線程的服務(wù)器程序,對(duì)農(nóng)田多個(gè)位置的監(jiān)測(cè)終端設(shè)備進(jìn)行圖像傳輸、接收和存儲(chǔ)。該系統(tǒng)實(shí)現(xiàn)了圖像從監(jiān)測(cè)端到PC服務(wù)器的傳輸和保存等功能。農(nóng)田測(cè)試結(jié)果表明,該系統(tǒng)運(yùn)行穩(wěn)定,圖像傳輸速度較快。
關(guān)鍵詞:STM32;OV2640圖像傳感器;SIM900A模塊;圖像傳輸;GPRS
引言
農(nóng)田圖像的監(jiān)測(cè)和傳輸對(duì)于農(nóng)田管理具有指導(dǎo)意義,其中的農(nóng)田作物圖像含有的信息量大、形象直觀,對(duì)農(nóng)田合理和高效管理起著重要作用,因此研究該項(xiàng)技術(shù)十分必要[1]。傳統(tǒng)的農(nóng)田作物圖像傳輸往往利用總線結(jié)構(gòu)或以太網(wǎng)網(wǎng)絡(luò)等有線方式進(jìn)行圖像傳輸,光纖常用于遠(yuǎn)距離的圖像傳輸,這些有線的圖像傳輸方式都不靈活[2-4],而且在許多條件惡劣的地方,由于農(nóng)田需要監(jiān)控的區(qū)域廣、監(jiān)控的農(nóng)田作物繁多,需要花費(fèi)大量人力、物力[5]。隨著圖像處理和移動(dòng)網(wǎng)絡(luò)傳輸技術(shù)的快速發(fā)展,無線的圖像傳輸方式得到技術(shù)人員的青睞。GPRS網(wǎng)絡(luò)具有時(shí)刻在線、網(wǎng)絡(luò)架構(gòu)成熟、以流量計(jì)費(fèi)等優(yōu)點(diǎn),可根據(jù)用戶需要進(jìn)行農(nóng)田作物圖像數(shù)據(jù)量間歇地傳輸[6]。SIM900A模塊是面向中國的GPRS模塊,具有雙頻信號(hào)。根據(jù)GPRS技術(shù)特點(diǎn),結(jié)合農(nóng)田圖像多監(jiān)測(cè)點(diǎn)的需求,研究和設(shè)計(jì)了基于SIM900A模塊和STM32F103VET6微控制器的農(nóng)田多點(diǎn)圖像傳輸系統(tǒng),結(jié)合網(wǎng)絡(luò)套接字通信軟件技術(shù),實(shí)現(xiàn)了對(duì)農(nóng)田多點(diǎn)圖像的遠(yuǎn)程監(jiān)測(cè)和圖片的本地存儲(chǔ)[7-10]。
1系統(tǒng)總體設(shè)計(jì)
多點(diǎn)圖像傳輸系統(tǒng)以STM32微控制器為主控芯片,結(jié)合網(wǎng)絡(luò)套接字通信軟件技術(shù),實(shí)現(xiàn)圖像處理壓縮和遠(yuǎn)程傳輸兩大功能。本設(shè)計(jì)用STM32F103VET6(以下簡稱STM32)芯片控制CMOS圖像傳感器OV2640獲取圖像,OV2640能夠通過硬件電路實(shí)現(xiàn)JPEG壓縮算法,在不影響作物觀測(cè)效果的前提下減小了圖像數(shù)據(jù)量,為圖像的無線傳輸提供了方便。
圖像傳感器采集模擬信號(hào)轉(zhuǎn)換成相應(yīng)的數(shù)字量,通過8位并行口發(fā)送給STM32,STM32將數(shù)據(jù)發(fā)送給SIM900A,數(shù)據(jù)經(jīng)SIM900A打包成TCP/IP數(shù)據(jù)包,然后通過無線網(wǎng)絡(luò)運(yùn)營商的網(wǎng)關(guān)服務(wù)器,接入Internet,將采集到的圖像數(shù)據(jù)發(fā)送給服務(wù)器。本設(shè)計(jì)利用具有公網(wǎng)固定IP地址的微機(jī)作TCP服務(wù)器。系統(tǒng)總體結(jié)構(gòu)設(shè)計(jì)如圖1所示。
圖1 系統(tǒng)總體結(jié)構(gòu)設(shè)計(jì)
2監(jiān)控系統(tǒng)硬件設(shè)計(jì)
圖2 圖像傳感器接口電路設(shè)計(jì)
通過STM32控制OV2640采集農(nóng)田圖像,并通過GPRS模塊把數(shù)據(jù)傳輸給服務(wù)器,系統(tǒng)硬件電路主要包括以下幾部分:圖像傳感器模塊、微控制器模塊、GPRS通信模塊,電源管理模塊。圖像采集由OV2640傳感器完成,負(fù)責(zé)采集農(nóng)田作物的圖像,并將模擬數(shù)據(jù)轉(zhuǎn)換成數(shù)字量,微控制器通過8位并行數(shù)據(jù)口接收?qǐng)D像數(shù)據(jù)。GPRS通信模塊負(fù)責(zé)把微控制器發(fā)送來的圖像數(shù)據(jù)通過天線傳入Internet,電源管理模塊為系統(tǒng)提供穩(wěn)定的電源。
2.1微控制器模塊
STM32F103VET6是高性能、低功耗的32位微控制器,8 MHz的外部晶振經(jīng)倍頻后時(shí)鐘頻率可達(dá)到72 MHz,豐富的外設(shè)資源、大容量的FLASH和SRAM存儲(chǔ)器可以滿足系統(tǒng)設(shè)計(jì)要求,其較強(qiáng)的運(yùn)算能力可以保證大批量圖像數(shù)據(jù)快速傳輸和處理。SPI、UART等豐富的串行接口使得控制器與外部芯片數(shù)據(jù)交換更加自由靈活。STM32接口的PC0~PC7作為OV2640并行數(shù)據(jù)交換口,PA9和PA10組成的UART1作為控制OV2640的信號(hào)口使用,PA2和PA3組成的UART2與SIM900A進(jìn)行串口通信。
2.2OV2640圖像傳感器工作原理
為了采集到清晰的農(nóng)田作物圖像,Omnivision公司的OV2640型圖像傳感器最高圖片輸出分辨率為1600×1200。此傳感器內(nèi)部集成了JPEG壓縮電路,可以通過編程實(shí)現(xiàn)原始的200萬像素圖片的JPEG壓縮,使得圖像數(shù)據(jù)量大量減少,便于GPRS網(wǎng)絡(luò)傳輸,功耗也隨之降低。
STM32通過PC0~PC7端口與OV2640的8位數(shù)據(jù)線D0~D7通信,行同步信號(hào)HREF、像素同步信號(hào)PCLK,以及場同步信號(hào)VSYNC和SCCB總線的SDA和SCL信號(hào),用于對(duì)傳感器設(shè)備進(jìn)行圖像采集的過程控制。圖像傳感器接口電路設(shè)計(jì)如圖2所示,圖2中AVDD2.8V和DOVDD2.8V由3.3V電源通過LM1117-2.85芯片得到;AVDD2.8V與DOVDD2.8V通過0 Ω電阻相連,此方法減少了相互干擾,XCLK由24 MHz的有源晶振輸出提供信號(hào);DVDD1.5V由LM1117-1.5輸出得到74LVC1G00是與非門電路。
HREF是高電平有效,場同步信號(hào)VSYNC是低電平有效。當(dāng)引腳VSYNC為高電平時(shí),表示一幀數(shù)據(jù)已經(jīng)準(zhǔn)備好;當(dāng)由高電平變成低電平時(shí),表明開始傳輸一幀圖像數(shù)據(jù)。為了得到有效的像素?cái)?shù)據(jù),需要兩個(gè)中斷信號(hào),捕獲場同步VSYNC的信號(hào)送入中斷引腳PB8,捕獲HREF和PCLK的與非信號(hào)輸出到PB13中斷引腳,使得在行信號(hào)無效時(shí)不輸出像素同步信號(hào),用其輸出信號(hào)作為像素?cái)?shù)據(jù)同步。OV2640的工作模式是由內(nèi)部寄存器確定的,其與外部的接口為SCCB總線,STM32通過PA9和PA10引腳模擬SCCB總線時(shí)序讀寫OV2640寄存器,設(shè)置其工作模式,本設(shè)計(jì)設(shè)置了輸出圖像的分辨率、亮度、格式等。STM32工作在主模式,對(duì)工作在從模式的OV2640內(nèi)部的寄存器進(jìn)行配置,配置完成后經(jīng)一段圖像采集時(shí)間后,OV2640即開始按照配置的模式工作。本設(shè)計(jì)圖像輸出格式為JPG,分辨率為640×480。
2.3圖像處理軟件設(shè)計(jì)
圖像處理程序負(fù)責(zé)OV2640初始化配置,以便實(shí)現(xiàn)圖像的采集功能。通過檢測(cè)場同步信號(hào)VSYNC判斷一幀圖像的起始位置,程序中設(shè)計(jì)128個(gè)內(nèi)存單元,可以使系統(tǒng)運(yùn)行流暢。中斷程序檢測(cè)像素同步信號(hào)PCLK來采集圖像數(shù)據(jù),當(dāng)PCLK為下降沿時(shí),讀取D0~D7口數(shù)據(jù),并存入內(nèi)存,等待發(fā)送信號(hào)的到來,這就完成了圖像的采集與發(fā)送。
圖像采集控制程序是基于OV2640指令集編寫的。init()函數(shù)用于設(shè)置圖片大小、通信波特率和圖片壓縮率等圖片參數(shù),初始化的時(shí)候務(wù)必關(guān)閉串口1,start()函數(shù)用于發(fā)出拍照命令, get()函數(shù)完成獲取圖片信息的功能。
2.4GPRS通信模塊
SIM900A是2頻的GSM/GPRS模塊,工作頻段為900 MHz或1800 MHz,采用SMT封裝,SIM900A型針對(duì)中國地區(qū)。SIM900A性能穩(wěn)定、體積小、支持標(biāo)準(zhǔn)和擴(kuò)展的AT指令。SIM900A還支持GPRS class8/class10和CS-1、CS-2、CS-3和CS-4的GPRS編碼格式,可以低功耗實(shí)現(xiàn)語音、SMS、數(shù)據(jù)的傳輸。SIM900A和STM32之間的通信主要是通過端口RXD與STM32上的UART2~TXD,TXD與UART2~RXD之間的數(shù)據(jù)交換來完成。其中,SIM900A上的UART2~TXD是發(fā)送串行數(shù)據(jù)口,UART2~RXD是接收數(shù)據(jù)口。
STM32通過AT指令和SIM900A模塊進(jìn)行通信,這些指令是以普通字符串的形式傳輸?shù)?。每個(gè)AT命令執(zhí)行后,模塊都會(huì)反饋狀態(tài)信息,表明命令執(zhí)行的結(jié)果,方便程序員了解程序的執(zhí)行情況,要用到AT擴(kuò)展指令中的TCP/IP型。
2.5GPRS通信模塊與SIM卡的連接
SIM卡具有5個(gè)引腳,分別為SIM卡時(shí)鐘信號(hào)、電源引腳、數(shù)據(jù)引腳、狀態(tài)引腳和復(fù)位引腳。SIM卡的電源電壓為1.8 V,SIM900A模塊對(duì)其供電。
2.6電源管理
STM32的典型供電電壓是3.3 V,本設(shè)計(jì)采用9 V電源供電,要提供9~3.3 V電壓轉(zhuǎn)換,以LM2576-ADJ芯片為核心的電源電路可為STM32提供3.3 V的電壓。LM2576-ADJ最大可提供2 A的電流。
SIM900A模塊典型供電電壓值為4 V,天線發(fā)送信號(hào)時(shí)的瞬時(shí)最大電流可達(dá)到2 A左右,電流增大會(huì)使SIM900A電壓突降,影響系統(tǒng)穩(wěn)定性和發(fā)射功率。采用低壓差的MIC29302電源芯片和電源引腳并接大容量電容可以解決此問題,回差電壓低于0.3 V,可提供高達(dá)2.8 A 左右的電流,能夠滿足SIM900A峰值電流2 A的要求,9 V電源符合其輸入電壓范圍。
3監(jiān)測(cè)端圖像發(fā)送軟件設(shè)計(jì)
在Keil uVision4.12集成環(huán)境下,開發(fā)了監(jiān)測(cè)端圖像發(fā)送程序,首先進(jìn)行各模塊的初始化工作,使能STM32相關(guān)中斷,接著STM32控制OV2640拍照和圖片的壓縮,壓縮完成后,接著將流式數(shù)據(jù)通過8位并口存入SRAM為10 428字節(jié)的數(shù)組中。設(shè)置串口2的波特率,并將流式數(shù)據(jù)通過串口2發(fā)送至SIM900A,STM32同時(shí)控制SIM900A通過GPRS網(wǎng)絡(luò)連接TCP服務(wù)器,連接過程中首先初始化網(wǎng)絡(luò),即激活移動(dòng)場景,接著查詢附著是否成功,否則手動(dòng)附著,并向Internet上具有設(shè)定IP地址的服務(wù)器通過AT+CIPSTART指令申請(qǐng)建立連接,將AT+CIPSTART指令返回的IP地址和端口號(hào)存放到一個(gè)buff中,然后將這個(gè)buff里的內(nèi)容寫入到串口2中。如果之后能夠讀取到返回值“CONNECT OK”,就表示TCP連接已經(jīng)成功建立,失敗則收到“CONNECT FAIL”; TCP連接建立成功后,設(shè)置協(xié)議為TCP,SIM900A請(qǐng)求發(fā)送。
接著使用AT+CIPSEND命令發(fā)送信息,監(jiān)測(cè)端將圖片分解成若干個(gè)數(shù)據(jù)包,按照GPRS編碼格式組建數(shù)據(jù)包,將數(shù)據(jù)包發(fā)送到服務(wù)器,需要先發(fā)送數(shù)據(jù)包頭,為了保證圖片傳送的完整性,每次在發(fā)送下一個(gè)數(shù)據(jù)包之前,需等待上個(gè)包發(fā)送成功的回復(fù),若發(fā)送成功返回指令“OK”,否則返回“FAIL”,系統(tǒng)重新發(fā)送,以確保數(shù)據(jù)包被成功交付。
最后等圖片信息包發(fā)送完畢后,發(fā)送AT+CIPCLOSE指令關(guān)閉連接。此AT命令沒有返回值,直接將該指令寫到串口2中,如果檢測(cè)到“CLOSE OK”信息,就表示TCP連接已經(jīng)被關(guān)閉。
服務(wù)器端的監(jiān)聽口接收TCP數(shù)據(jù)包,由于采用多線程設(shè)計(jì),多個(gè)點(diǎn)的圖像監(jiān)測(cè)設(shè)備可以同時(shí)發(fā)送圖像數(shù)據(jù)到服務(wù)器。按程序流程給出進(jìn)行TCP傳輸時(shí)用到的AT擴(kuò)展指令和相關(guān)緩存區(qū)定義。
char recvbuf[64]= {0x0}; //用于接收串口返回信息
char tmpbuf[64]= {0x0}; //用于存放臨時(shí)信息
"AT+CSTT="CMNET" "
//啟動(dòng)任務(wù)并設(shè)置APN、用戶名、密碼
"AT+CIICR " //激活移動(dòng)場景
"AT+CGATT? "
//查詢附著是否成功,否則手動(dòng)附著
"AT+CIPSTART="TCP","" //向服務(wù)器申請(qǐng)建立連接
"AT+CIPSEND" //發(fā)送信息
"AT+CIPCCFG? " //查詢模塊緩沖區(qū)的大小
"AT+CIPCLOSE " //關(guān)閉連接
4多線程的服務(wù)器端軟件設(shè)計(jì)
基于Visual C++ 6.0平臺(tái)開發(fā)了服務(wù)器端對(duì)話框形式的程序界面,服務(wù)器端程序設(shè)計(jì)主要運(yùn)用C/S架構(gòu)的套接字,服務(wù)器端程序主要包括3大部分:數(shù)據(jù)流接收、數(shù)據(jù)文件處理并顯示和圖片的硬盤存儲(chǔ)。主線程和用戶子線程分別承擔(dān)不同的任務(wù):主線程負(fù)責(zé)用戶子線程的創(chuàng)建、界面事件的響應(yīng)和圖片文件存儲(chǔ)等工作。監(jiān)測(cè)子線程主要完成發(fā)送開始采集命令和與監(jiān)測(cè)端進(jìn)行通信的功能,接收完圖像信息后在界面窗口中顯示。各線程運(yùn)行時(shí)相互獨(dú)立,因此每個(gè)監(jiān)測(cè)端與服務(wù)器的數(shù)據(jù)傳輸互不影響。為了防止出現(xiàn)GPRS網(wǎng)絡(luò)連接中斷的情況,程序中采用了斷點(diǎn)續(xù)傳的補(bǔ)救方法,保證了數(shù)據(jù)傳輸過程的準(zhǔn)確和可靠性。
在單個(gè)監(jiān)測(cè)子線程設(shè)計(jì)中,首先創(chuàng)建監(jiān)聽的socket(),用于接收來自網(wǎng)絡(luò)端口的數(shù)據(jù)流,并且分配足夠大的緩沖區(qū)用于存放接收到的數(shù)據(jù)包。在圖片接收過程中,服務(wù)器接收的是分包數(shù)據(jù)流,根據(jù)數(shù)據(jù)包的包頭進(jìn)行數(shù)據(jù)包的排列,并使用校驗(yàn)位進(jìn)行數(shù)據(jù)包校驗(yàn)。當(dāng)數(shù)據(jù)包接收完成后校驗(yàn)完好性,然后將數(shù)據(jù)包保存到一個(gè)文件中,最后調(diào)用OpenCV中的庫函數(shù)完成對(duì)生成的文件進(jìn)行解碼顯示。在硬盤上按照系統(tǒng)要求的文件名建立3個(gè)文件夾,即可自動(dòng)存入3個(gè)不同地點(diǎn)的農(nóng)田圖片。監(jiān)測(cè)端程序如圖3所示,服務(wù)器端單個(gè)監(jiān)測(cè)子線程的工作流程如圖4所示。
圖3 監(jiān)測(cè)端程序流程
圖4 服務(wù)器端單個(gè)子線程的軟件工作流程
5系統(tǒng)測(cè)試與分析
本設(shè)計(jì)通過SCCB總線設(shè)置OV2640的圖像大小為JPEG壓縮格式,即分辨率為640×480,經(jīng)過JPEG壓縮后數(shù)據(jù)量從185 KB降低至17 KB左右。樣機(jī)制作完成后經(jīng)過多次測(cè)試,傳輸速率可達(dá)10 Kbps,傳輸中存在斷點(diǎn)情況,續(xù)傳功能發(fā)揮了作用。圖像文件發(fā)送到服務(wù)器端時(shí)間測(cè)試結(jié)果如表1所列。
表1 圖像文件發(fā)送到服務(wù)器端時(shí)間測(cè)試結(jié)果
結(jié)語
參考文獻(xiàn)
[1] 楊鑫,申長軍,王克武,等.基于SIM900的苗情圖像無線傳輸系統(tǒng)設(shè)計(jì)[J].中國農(nóng)機(jī)化學(xué)報(bào),2013,34(4):252-255.
[2] 李濤,馬殷元,楊東.基于STM32的GPRS遠(yuǎn)程監(jiān)測(cè)終端設(shè)計(jì)[J].電子世界,2012,32(11):126-127.
[3] 王哲梁,李文鈞.基于GPRS和嵌入式Linux的遠(yuǎn)程圖像監(jiān)控系統(tǒng)[J].物聯(lián)網(wǎng)技術(shù),2013,6(12):65-67.
[4] 王磊,王軍.基于SIM900A的嵌入式遠(yuǎn)程家電控制器設(shè)計(jì)[J].蘇州科技學(xué)院學(xué)報(bào),2014,27(1):76-80.
[5] 程磊,劉波,徐建省,等.基于OV2640的微型膠囊內(nèi)窺鏡系統(tǒng)設(shè)計(jì)[J].傳感器與微系統(tǒng),2014,33(2):73-76,79.
[6] 逢玉俊,李姣,王慶輝.基于GPRS模塊的遠(yuǎn)程毒氣監(jiān)測(cè)系統(tǒng)設(shè)計(jì)[J].沈陽化工大學(xué)學(xué)報(bào),2013,27(2):12-15.
[7] 胡曉光,葉聲華,楊學(xué)友.基于μC/OS-II的CMOS數(shù)字圖像傳感器數(shù)據(jù)檢測(cè)系統(tǒng)[J].儀表技術(shù)與傳感器,2008,24(2):27-29.
[8] 劉亮,王擊,楊澤.基于ARM Cortex-M3和Internet的實(shí)時(shí)數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)[J].工業(yè)控制計(jì)算機(jī),2011,24(11):18-19.
[9] 劉良,賴萬昌,黎明.基于ARM9的GPRS圖像傳輸系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2010,31(7):1477-1480.
[10] 張文霞,王安琪,王文靜,等.基于嵌入式圖像信息采集與傳送系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].電子世界,2013,32(22):132.
周亞強(qiáng)、杜軍(碩士研究生),主要研究方向?yàn)殡娮有畔⒓夹g(shù);馬俊(教授),主要研究方向?yàn)殡娮有畔⒓夹g(shù)、無線電與智能系統(tǒng)。
GPRS Farmland Multipoint Image Transfer System Based on STM32
Zhou Yaqiang1,Ma Jun2,Du Jun1
(1.College of Computer Science,QingHai Normal University,Xining 810008,China;
2.Department of Physics,QingHai Normal University)
Abstract:A farmland image transmission system based on 32-bit microcontroller STM32F103VET6 is designed.This paper introduces the design of its hardware and software.Under the Visual C++ 6.0 platform,the multithread server program operated on PC is designed using the Windows socket.It can transmit,receive and store the images for the multiple terminal equipments.The system completes the function of image transmission and preservation from the surveillance cameras to the PC server.The test results show that the system can run stably,image can be transmissted faster.
Key words:STM32;OV2640 imaging sensor;SIM900A module;image transmission;GPRS
收稿日期:(責(zé)任編輯:楊迪娜2015-04-22)
中圖分類號(hào):TP393.2
文獻(xiàn)標(biāo)識(shí)碼:A