徐 晶,聶思兵,陳 陣,張 鏝,楊濟(jì)寧
(1.內(nèi)江師范學(xué)院計(jì)算機(jī)科學(xué)學(xué)院(人工智能學(xué)院),四川 內(nèi)江 641100; 2.內(nèi)江職業(yè)技術(shù)學(xué)院,四川 內(nèi)江 641111)
當(dāng)今大數(shù)據(jù)時(shí)代,大量數(shù)據(jù)不斷的由數(shù)據(jù)采集終端產(chǎn)生至服務(wù)器便于后續(xù)存儲(chǔ)分析[1],隨著人工智能的發(fā)展,數(shù)據(jù)采集終端由靜態(tài)終端不斷向運(yùn)動(dòng)的智能設(shè)備轉(zhuǎn)變,如四軸飛行器、手持設(shè)備[2]等。應(yīng)用環(huán)境的變更要求數(shù)據(jù)采集終端必須接入網(wǎng)絡(luò)。擁有有線網(wǎng)絡(luò)技術(shù)和移動(dòng)通信技術(shù)的電信網(wǎng)絡(luò)通信技術(shù)成為了入網(wǎng)的核心技術(shù)[3]。
采用高端處理器的數(shù)據(jù)采集終端,多數(shù)使用處理器自帶的以太網(wǎng)模塊[4],外加網(wǎng)絡(luò)接口和網(wǎng)線,便可成功接入網(wǎng)絡(luò),但其價(jià)格昂貴,雖能將數(shù)據(jù)發(fā)送至服務(wù)器,但受網(wǎng)線牽制,難以適應(yīng)復(fù)雜的運(yùn)動(dòng)環(huán)境中的傳輸任務(wù)。而采用低端處理器的數(shù)據(jù)采集終端,僅能使用串口進(jìn)行數(shù)據(jù)通信,面對(duì)當(dāng)今終端與服務(wù)器的交互場(chǎng)景將面臨淘汰,若更換高端芯片,需對(duì)整個(gè)終端進(jìn)行重新設(shè)計(jì),成本較高。
為低成本使老舊設(shè)備方便快捷的擁有無(wú)線通信功能,同時(shí)促進(jìn)低端芯片滿足復(fù)雜運(yùn)動(dòng)環(huán)境,本文設(shè)計(jì)基于GPRS的遠(yuǎn)程無(wú)線串口通訊系統(tǒng)[5,6],只需將數(shù)據(jù)采集終端的串口與系統(tǒng)相聯(lián),直接使用串口程序便可與服務(wù)器進(jìn)行交互。
本系統(tǒng)主要由STM32通過(guò)AT指令對(duì)GPRS模塊進(jìn)行配置初始化,使其工作在TCP模式,方便與服務(wù)器終端進(jìn)行數(shù)據(jù)交互。當(dāng)STM32接收到服務(wù)器終端發(fā)送的數(shù)據(jù)后,會(huì)將收到的數(shù)據(jù)通過(guò)串口發(fā)送給與之連接的遠(yuǎn)程數(shù)據(jù)采集終端,當(dāng)接收到遠(yuǎn)程數(shù)據(jù)采集終端通過(guò)串口發(fā)送的數(shù)據(jù)時(shí),會(huì)將數(shù)據(jù)通過(guò)GPRS模塊轉(zhuǎn)發(fā)給服務(wù)器終端。整個(gè)系統(tǒng)的系統(tǒng)原理圖如圖1所示。
圖1 系統(tǒng)原理圖
如圖1所示,本系統(tǒng)主要包含電源模塊、GPRS模塊、CPU模塊、存儲(chǔ)器模塊、顯示模塊,系統(tǒng)接口模塊。其中,電源模塊為整個(gè)系統(tǒng)提供電壓;GPRS模塊為系統(tǒng)提供無(wú)線遠(yuǎn)程通訊功能;存儲(chǔ)器模塊核心部件為AT24C02,存放整個(gè)系統(tǒng)的初始化參數(shù),系統(tǒng)啟動(dòng)時(shí)會(huì)從存儲(chǔ)器模塊中讀取初始化參數(shù),該參數(shù)可通過(guò)串口發(fā)送約定的命令進(jìn)行修改;顯示模塊負(fù)責(zé)顯示系統(tǒng)的工作狀態(tài);系統(tǒng)接口模塊可提供系統(tǒng)與外部終端的物理接口以及電平轉(zhuǎn)換功能;CPU模塊選用STM32作為系統(tǒng)的核心部件,將系統(tǒng)的其他模塊連接在一起,實(shí)現(xiàn)系統(tǒng)的遠(yuǎn)程串口通訊功能。
GPRS模塊主要由SIM900A作為核心部件,SIM900A采用了ARM926EJ-S架構(gòu),可通過(guò)串口協(xié)議發(fā)送AT命令進(jìn)行控制,與CPU模塊直接相連。SIM900A的TXD與STM32串口2的RXD相聯(lián),SIM900A的RXD引腳與STM32串口2的RXD相聯(lián),STM32通過(guò)串口2發(fā)送AT指令配置SIM900A進(jìn)入GPRS的TCP工作模式,并將工作狀態(tài)通過(guò)顯示模塊顯示,外部終端通過(guò)串口與本系統(tǒng)正確連接,便無(wú)需再用AT命令對(duì)SIM900A進(jìn)行配置,只需進(jìn)行串口數(shù)據(jù)的收發(fā),便可實(shí)現(xiàn)與配置的服務(wù)器進(jìn)行數(shù)據(jù)交互。
接口模塊的核心為SP3232芯片和SP3485芯片,SP3232芯片工作電壓為3.3V,可將TTL電平轉(zhuǎn)換為232電平,作為芯片與電腦等設(shè)備通信的橋梁。SP3485芯片工作電壓為3.3V,可通過(guò)串口實(shí)現(xiàn)485半雙工通信。系統(tǒng)接口模塊與主控芯片STM32單片機(jī)之間使用跳線連接,可通過(guò)跳線靈活的選擇不同的系統(tǒng)接口或通信協(xié)議工作。接口模塊采用D型9針串口和接線端子的物理接口,方便外部終端設(shè)備相聯(lián)。
如圖2,電源模塊主要使用MP2303芯片和AMS117-3.3芯片。MP2303芯片輸入電壓為4.75V~28V,可適應(yīng)大部分場(chǎng)景供電,在終端設(shè)備可提供足夠功率時(shí),則直接從終端設(shè)備連接供電,在終端設(shè)備無(wú)法提供足夠功率時(shí),可使用備用電池等進(jìn)行供電。SIM900A需提供3.2V~4.8V的電源,故將MP2303芯片的輸出電壓設(shè)置在4.8V,其最大能提供3A的電流,可滿足SIM900A的最大供電需求。AMS1117-3.3V通過(guò)二極管將MP2303的輸出電壓作為輸入電壓,為剩余模塊進(jìn)行提供電源。
圖2 電源原理圖
系統(tǒng)初始化程序負(fù)責(zé)整個(gè)系統(tǒng)的初始化操作,如圖3,首先進(jìn)行中斷優(yōu)先級(jí)的初始化;隨后延時(shí)函數(shù)初始化;然后將串口1、3初始化至SIM900A的最高波特率115200;接著判斷是否存在LCD,存在則進(jìn)行LCD的初始化,否則跳過(guò)進(jìn)入內(nèi)存池初始化,至此STM32的初始化工作完成。接著進(jìn)行STM900A的初始化工作,首先檢測(cè)SIM900A模塊是否存在,若不存在,在LCD屏幕顯示或電腦串口打印錯(cuò)誤提示,若SIM900A存在則進(jìn)行SIM卡的檢測(cè),如SIM卡存在問(wèn)題則給出錯(cuò)誤提示,如SIM正常便連續(xù)執(zhí)行AT+CGATT、AT+CIPCSGP等指令,將GPRS模塊設(shè)置為TCP的CLIENT工作模式,最后將串口波特率、工作模式、本機(jī)IP及端口號(hào)、服務(wù)器IP地址及端口號(hào)顯示在LCD屏幕或發(fā)送至串口。
圖3 初始化流程圖
系統(tǒng)主程序主要完成串口數(shù)據(jù)的交互工作和SIM900A的心跳維持。如圖4,首先通過(guò)串口2的RX_STA判別串口2是否接收到終端的數(shù)據(jù),如沒有接收到數(shù)據(jù),將延時(shí)10ms后通過(guò)判別串口3是否接收到來(lái)自SIM900A的數(shù)據(jù),若沒有,程序結(jié)束,繼續(xù)循環(huán)。當(dāng)串口2的RX_STA為1,則串口2接收到終端的數(shù)據(jù),隨后進(jìn)行解析,查看是否包含配置字段,若包含則將數(shù)據(jù)解析后寫入存儲(chǔ)器模塊,再次重啟時(shí)完成新參數(shù)的配置更新,如沒有包含配置字段,則進(jìn)行SIM900A心跳檢測(cè),若不正常,則發(fā)送命令回復(fù)心跳,在心跳正常時(shí)將數(shù)據(jù)發(fā)送至串口3,數(shù)據(jù)便會(huì)通過(guò)SIM9000A發(fā)送至服務(wù)器,在此過(guò)程中會(huì)檢測(cè)數(shù)據(jù)是否發(fā)送成功,沒有發(fā)送成功時(shí)將繼續(xù)發(fā)送至成功。在檢測(cè)到串口3的RX_STA最高位為1時(shí),則SIM900A接收到來(lái)自服務(wù)器的數(shù)據(jù),STM32會(huì)通過(guò)USART2的SR檢查其是否空閑,在其空閑時(shí)將串口3收到的數(shù)據(jù)通過(guò)串口2轉(zhuǎn)發(fā)給終端設(shè)備。
圖4 主程序流程圖
首先通過(guò)調(diào)整天線匹配電阻使得天線阻抗為50Ω,隨后進(jìn)行VCC和GND短路檢測(cè),接著檢測(cè)STM32與SIM900A的地線是否均已連接到GND。然后檢查STM32與SIM900A、STM32與接口模塊的串口通信線是否連接正確,上電后,用萬(wàn)用表測(cè)試各模塊工作電壓是否正常,至系統(tǒng)正常啟動(dòng)顯示信息。
使用串口線將本系統(tǒng)與電腦連接,在串口調(diào)試助手選擇相應(yīng)的串口號(hào),設(shè)置相應(yīng)的波特率,在網(wǎng)絡(luò)調(diào)試助手選擇TCP Server協(xié)議;通過(guò)串口調(diào)試助手發(fā)送命令配置服務(wù)器IP地址后重啟系統(tǒng),通過(guò)網(wǎng)絡(luò)調(diào)試助手發(fā)送信息,在串口調(diào)試助手可收到相應(yīng)的數(shù)據(jù),在串口調(diào)試助手發(fā)送信息,在網(wǎng)絡(luò)調(diào)試助手可收到相應(yīng)的數(shù)據(jù),系統(tǒng)通訊正常。圖5為串口調(diào)試助手收發(fā)數(shù)據(jù)的測(cè)試界面,圖6為網(wǎng)絡(luò)調(diào)試助手收發(fā)數(shù)據(jù)的測(cè)試界面。
圖5 串口調(diào)試助手測(cè)試界面
圖6 網(wǎng)絡(luò)調(diào)試助手測(cè)試界面
系統(tǒng)經(jīng)過(guò)硬件電路設(shè)計(jì)與調(diào)試、軟件設(shè)計(jì)與測(cè)試,最終實(shí)現(xiàn)基于GPRS的遠(yuǎn)程串口通訊系統(tǒng),本系統(tǒng)成本低,使用時(shí)僅需將系統(tǒng)和終端設(shè)備的串口線和地線連接,便可通過(guò)串口代碼將數(shù)據(jù)傳輸至遠(yuǎn)端服務(wù)器,使用方便快捷,不僅可以縮短開發(fā)調(diào)試環(huán)節(jié)時(shí)間,也可作為產(chǎn)品應(yīng)用的無(wú)線通訊工具。