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