STM32的GPRS農田多點(diǎn)圖像傳輸系統設計
摘要:設計了基于32位STM32F103VET6微控制器的農田多點(diǎn)圖像傳輸系統,重點(diǎn)介紹了其軟件和硬件的設計過(guò)程。在Visual C++6.0平臺,運用Windows socket編寫(xiě)PC端多線(xiàn)程的服務(wù)器程序,對農田多個(gè)位置的監測終端設備進(jìn)行圖像傳輸、接收和存儲。該系統實(shí)現了圖像從監測端到PC服務(wù)器的傳輸和保存等功能。農田測試結果表明,該系統運行穩定,圖像傳輸速度較快。
本文引用地址:http://dyxdggzs.com/article/201610/307179.htm引言
農田圖像的監測和傳輸對于農田管理具有指導意義,其中的農田作物圖像含有的信息量大、形象直觀(guān),對農田合理和高效管理起著(zhù)重要作用,因此研究該項技術(shù)十分必要。傳統的農田作物圖像傳輸往往利用總線(xiàn)結構或以太網(wǎng)網(wǎng)絡(luò )等有線(xiàn)方式進(jìn)行圖像傳輸,光纖常用于遠距離的圖像傳輸,這些有線(xiàn)的圖像傳輸方式都不靈活,而且在許多條件惡劣的地方,由于農田需要監控的區域廣、監控的農田作物繁多,需要花費大量人力、物力。隨著(zhù)圖像處理和移動(dòng)網(wǎng)絡(luò )傳輸技術(shù)的快速發(fā)展,無(wú)線(xiàn)的圖像傳輸方式得到技術(shù)人員的青睞。GPRS網(wǎng)絡(luò )具有時(shí)刻在線(xiàn)、網(wǎng)絡(luò )架構成熟、以流量計費等優(yōu)點(diǎn),可根據用戶(hù)需要進(jìn)行農田作物圖像數據量間歇地傳輸。SIM900A模塊是面向中國的GPRS模塊,具有雙頻信號。根據GPRS技術(shù)特點(diǎn),結合農田圖像多監測點(diǎn)的需求,研究和設計了基于SIM900A模塊和STM32F103VET6微控制器的農田多點(diǎn)圖像傳輸系統,結合網(wǎng)絡(luò )套接字通信軟件技術(shù),實(shí)現了對農田多點(diǎn)圖像的遠程監測和圖片的本地存儲。
1 系統總體設計
多點(diǎn)圖像傳輸系統以STM32微控制器為主控芯片,結合網(wǎng)絡(luò )套接字通信軟件技術(shù),實(shí)現圖像處理壓縮和遠程傳輸兩大功能。本設計用STM32F103VET6(以下簡(jiǎn)稱(chēng)STM32)芯片控制CMOS圖像傳感器OV2640獲取圖像,OV2640能夠通過(guò)硬件電路實(shí)現JPEG壓縮算法,在不影響作物觀(guān)測效果的前提下減小了圖像數據量,為圖像的無(wú)線(xiàn)傳輸提供了方便。
圖像傳感器采集模擬信號轉換成相應的數字量,通過(guò)8位并行口發(fā)送給STM32,STM32將數據發(fā)送給SIM900A,數據經(jīng)SIM900A打包成TCP/IP數據包,然后通過(guò)無(wú)線(xiàn)網(wǎng)絡(luò )運營(yíng)商的網(wǎng)關(guān)服務(wù)器,接入Internet,將采集到的圖像數據發(fā)送給服務(wù)器。本設計利用具有公網(wǎng)固定IP地址的微機作TCP服務(wù)器。系統總體結構設計如圖1所示。

2 監控系統硬件設計
通過(guò)STM32控制OV2640采集農田圖像,并通過(guò)GPRS模塊把數據傳輸給服務(wù)器,系統硬件電路主要包括以下幾部分:圖像傳感器模塊、微控制器模塊、GPRS通信模塊,電源管理模塊。圖像采集由OV2640傳感器完成,負責采集農田作物的圖像,并將模擬數據轉換成數字量,微控制器通過(guò)8位并行數據口接收圖像數據。GPRS通信模塊負責把微控制器發(fā)送來(lái)的圖像數據通過(guò)天線(xiàn)傳入Internet,電源管理模塊為系統提供穩定的電源。
2.1 微控制器模塊
STM32F103VET6是高性能、低功耗的32位微控制器,8 MHz的外部晶振經(jīng)倍頻后時(shí)鐘頻率可達到72MHz,豐富的外設資源、大容量的FLASH和SRAM存儲器可以滿(mǎn)足系統設計要求,其較強的運算能力可以保證大批量圖像數據快速傳輸和處理。SPI、UART等豐富的串行接口使得控制器與外部芯片數據交換更加自由靈活。STM32接口的PC0~PC7作為OV2640并行數據交換口,PA9和PA10組成的UART1作為控制OV2640的信號口使用,PA2和PA3組成的UART2與SIM900A進(jìn)行串口通信。
2.2 OV2640圖像傳感器工作原理
為了采集到清晰的農田作物圖像,Omnivision公司的OV2640型圖像傳感器最高圖片輸出分辨率為1600×1200。此傳感器內部集成了JPEG壓縮電路,可以通過(guò)編程實(shí)現原始的200萬(wàn)像素圖片的JPEG壓縮,使得圖像數據量大量減少,便于GPRS網(wǎng)絡(luò )傳輸,功耗也隨之降低。
STM32通過(guò)PC0~PC7端口與OV2640的8位數據線(xiàn)D0~D7通信,行同步信號HREF、像素同步信號PCLK,以及場(chǎng)同步信號VSYNC和SCCB總線(xiàn)的SDA和SCL信號,用于對傳感器設備進(jìn)行圖像采集的過(guò)程控制。圖像傳感器接口電路設計如圖2所示,圖2中AVDD2.8V和DOVDD2.8V由3.3V電源通過(guò)LM1117—2.85芯片得到;AVDD2.8V與DOVDD2.8V通過(guò)0 Ω電阻相連,此方法減少了相互干擾,XCLK由24 MHz的有源晶振輸出提供信號;DVDD1.5V由LM1117—1.5輸出得到74LVC1G00是與非門(mén)電路。

HREF是高電平有效,場(chǎng)同步信號VSYNC是低電平有效。當引腳VSYNC為高電平時(shí),表示一幀數據已經(jīng)準備好;當由高電平變成低電平時(shí),表明開(kāi)始傳輸一幀圖像數據。為了得到有效的像素數據,需要兩個(gè)中斷信號,捕獲場(chǎng)同步VSYNC的信號送入中斷引腳PB8,捕獲HREF和PCLK的與非信號輸出到PB13中斷引腳,使得在行信號無(wú)效時(shí)不輸出像素同步信號,用其輸出信號作為像素數據同步。OV2640的工作模式是由內部寄存器確定的,其與外部的接口為SCCB總線(xiàn),STM32通過(guò)PA9和PA10引腳模擬SCCB總線(xiàn)時(shí)序讀寫(xiě)OV2640寄存器,設置其工作模式,本設計設置了輸出圖像的分辨率、亮度、格式等。STM32工作在主模式,對工作在從模式的OV2640內部的寄存器進(jìn)行配置,配置完成后經(jīng)一段圖像采集時(shí)間后,OV2640即開(kāi)始按照配置的模式工作。本設計圖像輸出格式為JPG,分辨率為640×480。
2.3 圖像處理軟件設計
圖像處理程序負責OV2640初始化配置,以便實(shí)現圖像的采集功能。通過(guò)檢測場(chǎng)同步信號VSYNC判斷一幀圖像的起始位置,程序中設計128個(gè)內存單元,可以使系統運行流暢。中斷程序檢測像素同步信號PCLK來(lái)采集圖像數據,當PCLK為下降沿時(shí),讀取D0~D7口數據,并存入內存,等待發(fā)送信號的到來(lái),這就完成了圖像的采集與發(fā)送。
圖像采集控制程序是基于OV2640指令集編寫(xiě)的。init()函數用于設置圖片大小、通信波特率和圖片壓縮率等圖片參數,初始化的時(shí)候務(wù)必關(guān)閉串口1,start()函數用于發(fā)出拍照命令,get()函數完成獲取圖片信息的功能。
2.4 GPRS通信模塊
SIM900A是2頻的GSM/GPRS模塊,工作頻段為900 MHz或1800 MHz,采用SMT封裝,SIM900A型針對中國地區。SIM900A性能穩定、體積小、支持標準和擴展的AT指令。SIM900A還支持GPRS class8/class10和CS-1、CS-2、CS-3和CS-4的GPRS編碼格式,可以低功耗實(shí)現語(yǔ)音、SMS、數據的傳輸。SIM900A和STM32之間的通信主要是通過(guò)端口RXD與STM32上的UART2~TXD,TXD與UART2~RXD之間的數據交換來(lái)完成。其中,SIM900A上的UART2~TXD是發(fā)送串行數據口,UART2~RXD是接收數據口。
STM32通過(guò)AT指令和SIM900A模塊進(jìn)行通信,這些指令是以普通字符串的形式傳輸的。每個(gè)AT命令執行后,模塊都會(huì )反饋狀態(tài)信息,表明命令執行的結果,方便程序員了解程序的執行情況,要用到AT擴展指令中的TCP/IP型。
2.5 GPRS通信模塊與SIM卡的連接
SIM卡具有5個(gè)引腳,分別為SIM卡時(shí)鐘信號、電源引腳、數據引腳、狀態(tài)引腳和復位引腳。SIM卡的電源電壓為1.8 V,SIM900A模塊對其供電。
2.6 電源管理
STM32的典型供電電壓是3.3 V,本設計采用9 V電源供電,要提供9~3.3 V電壓轉換,以L(fǎng)M2576-ADJ芯片為核心的電源電路可為STM32提供3.3 V的電壓。LM2576-ADJ最大可提供2 A的電流。
SIM900A模塊典型供電電壓值為4 V,天線(xiàn)發(fā)送信號時(shí)的瞬時(shí)最大電流可達到2 A左右,電流增大會(huì )使SIM900A電壓突降,影響系統穩定性和發(fā)射功率。采用低壓差的MIC29302電源芯片和電源引腳并接大容量電容可以解決此問(wèn)題,回差電壓低于0.3 V,可提供高達2.8 A左右的電流,能夠滿(mǎn)足SIM900A峰值電流2 A的要求,9 V電源符合其輸入電壓范圍。
3 監測端圖像發(fā)送軟件設計
在Keil uVision4.12集成環(huán)境下,開(kāi)發(fā)了監測端圖像發(fā)送程序,首先進(jìn)行各模塊的初始化工作,使能STM32相關(guān)中斷,接著(zhù)STM32控制OV2640拍照和圖片的壓縮,壓縮完成后,接著(zhù)將流式數據通過(guò)8位并口存入SRAM為10 428字節的數組中。設置串口2的波特率,并將流式數據通過(guò)串口2發(fā)送至SIM900A,STM32同時(shí)控制SIM900A通過(guò)GPRS網(wǎng)絡(luò )連接TCP服務(wù)器,連接過(guò)程中首先初始化網(wǎng)絡(luò ),即激活移動(dòng)場(chǎng)景,接著(zhù)查詢(xún)附著(zhù)是否成功,否則手動(dòng)附著(zhù),并向Internet上具有設定IP地址的服務(wù)器通過(guò)AT+CIPSTART指令申請建立連接,將AT+CIPSTART指令返回的IP地址和端口號存放到一個(gè)buff中,然后將這個(gè)buff里的內容寫(xiě)入到串口2中。如果之后能夠讀取到返回值“CONNECT OK”,就表示TCP連接已經(jīng)成功建立,失敗則收到“CONNECT FAIL”;TCP連接建立成功后,設置協(xié)議為T(mén)CP,SIM900A請求發(fā)送。
接著(zhù)使用AT+CIPSEND命令發(fā)送信息,監測端將圖片分解成若干個(gè)數據包,按照GPRS編碼格式組建數據包,將數據包發(fā)送到服務(wù)器,需要先發(fā)送數據包頭,為了保證圖片傳送的完整性,每次在發(fā)送下一個(gè)數據包之前,需等待上個(gè)包發(fā)送成功的回復,若發(fā)送成功返回指令“OK”,否則返回“FAIL”,系統重新發(fā)送,以確保數據包被成功交付。
最后等圖片信息包發(fā)送完畢后,發(fā)送AT+CIP-CLOSE指令關(guān)閉連接。此AT命令沒(méi)有返回值,直接將該指令寫(xiě)到串口2中,如果檢測到“CLOSE OK”信息,就表示TCP連接已經(jīng)被關(guān)閉。
服務(wù)器端的監聽(tīng)口接收TCP數據包,由于采用多線(xiàn)程設計,多個(gè)點(diǎn)的圖像監測設備可以同時(shí)發(fā)送圖像數據到服務(wù)器。按程序流程給出進(jìn)行TCP傳輸時(shí)用到的AT擴展指令和相關(guān)緩存區定義。

4 多線(xiàn)程的服務(wù)器端軟件設計
基于Visual C++6.0平臺開(kāi)發(fā)了服務(wù)器端對話(huà)框形式的程序界面,服務(wù)器端程序設計主要運用C/S架構的套接字,服務(wù)器端程序主要包括3大部分:數據流接收、數據文件處理并顯示和圖片的硬盤(pán)存儲。主線(xiàn)程和用戶(hù)子線(xiàn)程分別承擔不同的任務(wù):主線(xiàn)程負責用戶(hù)子線(xiàn)程的創(chuàng )建、界面事件的響應和圖片文件存儲等工作。監測子線(xiàn)程主要完成發(fā)送開(kāi)始采集命令和與監測端進(jìn)行通信的功能,接收完圖像信息后在界面窗口中顯示。各線(xiàn)程運行時(shí)相互獨立,因此每個(gè)監測端與服務(wù)器的數據傳輸互不影響。為了防止出現GPRS網(wǎng)絡(luò )連接中斷的情況,程序中采用了斷點(diǎn)續傳的補救方法,保證了數據傳輸過(guò)程的準確和可靠性。
在單個(gè)監測子線(xiàn)程設計中,首先創(chuàng )建監聽(tīng)的socket(),用于接收來(lái)自網(wǎng)絡(luò )端口的數據流,并且分配足夠大的緩沖區用于存放接收到的數據包。在圖片接收過(guò)程中,服務(wù)器接收的是分包數據流,根據數據包的包頭進(jìn)行數據包的排列,并使用校驗位進(jìn)行數據包校驗。當數據包接收完成后校驗完好性,然后將數據包保存到一個(gè)文件中,最后調用OpenCV中的庫函數完成對生成的文件進(jìn)行解碼顯示。在硬盤(pán)上按照系統要求的文件名建立3個(gè)文件夾,即可自動(dòng)存入3個(gè)不同地點(diǎn)的農田圖片。監測端程序如圖3所示,服務(wù)器端單個(gè)監測子線(xiàn)程的工作流程如圖4所示。

5 系統測試與分析
本設計通過(guò)SCCB總線(xiàn)設置OV2640的圖像大小為JPEG壓縮格式,即分辨率為640×480,經(jīng)過(guò)JPEG壓縮后數據量從185 KB降低至17 KB左右。樣機制作完成后經(jīng)過(guò)多次測試,傳輸速率可達10 Kbps,傳輸中存在斷點(diǎn)情況,續傳功能發(fā)揮了作用。圖像文件發(fā)送到服務(wù)器端時(shí)間測試結果如表1所列。

結語(yǔ)
本文設計的基于STM32的GPRS農田多點(diǎn)圖像傳輸系統,具有體積小、監控范圍大等優(yōu)點(diǎn),克服了現場(chǎng)布線(xiàn)成本高、環(huán)境惡劣等難題,為農田圖像監測和傳輸提出了一種解決方案。由于GPRS通信流量資費、速度和網(wǎng)絡(luò )質(zhì)量的限制,系統傳輸的圖像分辨率不是很高。隨著(zhù)4G網(wǎng)絡(luò )技術(shù)的發(fā)展,該系統的架構很容易升級到4G網(wǎng)絡(luò )進(jìn)行遠程的語(yǔ)音、高清圖像傳輸。
- STM32單片機中文官網(wǎng)
- STM32單片機官方開(kāi)發(fā)工具
- STM32單片機參考設計
評論