新聞中心

EEPW首頁 > 手機(jī)與無線通信 > 設(shè)計(jì)應(yīng)用 > 基于SIM800C的GPRS數(shù)據(jù)傳輸系統(tǒng)設(shè)計(jì)*

基于SIM800C的GPRS數(shù)據(jù)傳輸系統(tǒng)設(shè)計(jì)*

作者:韓進(jìn) 馬雙 時(shí)間:2016-10-27 來源:電子產(chǎn)品世界 收藏
編者按:本文設(shè)計(jì)了一種以GPRS為傳輸方式的無線數(shù)據(jù)傳輸系統(tǒng)。該系統(tǒng)以STM32F207VC為主控芯片,采用最新的SIM800C模塊,以串口通訊方式實(shí)現(xiàn)與主控芯片的通訊,將采集到的數(shù)據(jù)傳輸至服務(wù)器端,軟件方面包括異常處理、心跳包機(jī)制的設(shè)計(jì),大幅提高了GPRS的傳輸穩(wěn)定性。經(jīng)過長(zhǎng)時(shí)間測(cè)試發(fā)現(xiàn),客戶端以TCP/IP協(xié)議與服務(wù)端保持良好連接狀態(tài)。該設(shè)計(jì)可廣泛應(yīng)用于各類單片機(jī)控制系統(tǒng)中,為無線數(shù)據(jù)傳輸提供了一種新的穩(wěn)定的解決方案。

  2.1 模塊AT命令

本文引用地址:http://m.butianyuan.cn/article/201610/311927.htm

  SIM800系列通訊模塊的主要AT指令同SIMCom公司其他型號(hào)的物聯(lián)網(wǎng)通訊模塊的指令大部分相同,可用以兼容各個(gè)不同的硬件版本,用來建立TCP連接的相關(guān)命令及其作用如表1。

  利用STM32的標(biāo)準(zhǔn)庫函數(shù)可以快速對(duì)芯片的USART進(jìn)行初始化,在STM32的main函數(shù)中,上電后主要完成相應(yīng)的時(shí)鐘以及GPIO,使能芯片的USART接口、初始化波特率等。并配置中斷向量,編寫相關(guān)的串口中斷處理程序,作為返回值接收處理函數(shù)的基礎(chǔ)。為測(cè)試系統(tǒng)傳輸數(shù)據(jù)的準(zhǔn)確性,通過STM32的485接口,應(yīng)用Modbus協(xié)議每隔1秒采集一款485型溫濕度傳感器及其他傳感器的數(shù)據(jù)進(jìn)行傳輸,每隔30秒進(jìn)行一次傳輸,并將數(shù)據(jù)保存在DeviceRunStatus_Struct結(jié)構(gòu)體中。

  針對(duì)操作需要初始化STM32的串口,配置運(yùn)行模式,其中,網(wǎng)絡(luò)域名的參數(shù)保存在DNSPara_Struct結(jié)構(gòu)體中,例如,域名地址、DNS服務(wù)器地址1和DNS服務(wù)器地址2。ProtocolPara_Struct結(jié)構(gòu)體中主要存放與IP相關(guān)的參數(shù),例如本地TCP端口m_LocalTcpPort、服務(wù)器Tcp地址m_ServerTcpPort和服務(wù)器地址m_ServerIPAddr。在利用進(jìn)行TCP連接的AT命令時(shí),直接調(diào)用這兩個(gè)結(jié)構(gòu)體內(nèi)的參數(shù)進(jìn)行連接即可。根據(jù)AT命令執(zhí)行后的返回值判斷連接是否成功,此時(shí)令m_RunPara.m_DeviceRunStatus.m_nGprs = 1,置位連接狀態(tài)標(biāo)志。

  2.2 異常處理

  在日常測(cè)試中發(fā)現(xiàn),可能會(huì)由于信號(hào)或環(huán)境的影響導(dǎo)致SIM800C模塊出現(xiàn)異常,模塊串口報(bào)錯(cuò)TCP CLOSED導(dǎo)致連接中斷。軟件設(shè)計(jì)中,在處理此類型問題時(shí),利用_Check_Periodic_Handle()函數(shù)每隔30秒檢查一次連接狀態(tài),若內(nèi)存中的變量m_RunPara.m_DeviceRunStatus.m_nGprs值為0,即連接失敗時(shí),對(duì)SIM800C模塊進(jìn)行重新上電操作,將模塊遠(yuǎn)程自動(dòng)重啟,重新執(zhí)行開機(jī)、配置、連接TCP等一系列動(dòng)作以恢復(fù)模塊的正常運(yùn)行。并在程序中設(shè)定域名最大連接次數(shù)為3次,即在3次域名連接仍未成功則使用IP地址方式進(jìn)行連接,保證域名及IP連接均可正常使用。

  2.2 心跳包機(jī)制

  在模塊與服務(wù)器建立TCP連接后,由于網(wǎng)絡(luò)運(yùn)營(yíng)商的設(shè)置,若在某一時(shí)間段內(nèi)客戶端與服務(wù)端沒有任何數(shù)據(jù)交換,會(huì)將網(wǎng)絡(luò)斷開,導(dǎo)致連接中斷,數(shù)據(jù)無法正常傳輸,為解決這一問題,在TCP通訊協(xié)議內(nèi)加入心跳包機(jī)制,用于長(zhǎng)連接的保持和斷線處理。CMD_HeartTime命令號(hào),在第一次建立連接后,客戶端發(fā)送當(dāng)前設(shè)備時(shí)鐘,服務(wù)端開啟Timer定時(shí)器每隔30秒鐘根據(jù)命令號(hào)進(jìn)入心跳包處理的case語句中執(zhí)行,進(jìn)行雙向?qū)r(shí)操作,這樣既可以保持雙向穩(wěn)定連接,又可以對(duì)物聯(lián)網(wǎng)設(shè)備進(jìn)行RTC更新時(shí)間操作,保證了設(shè)備運(yùn)行的穩(wěn)定性。下位機(jī)軟件代碼如下:

  case CMD_HeartTime:

  if(pNetComm->m_Header.m_nOperation == 0)

  {

  UpdateTimer(pNetComm->unoin.m_TimerPara.m_TimestampL);

  pNetComm->m_Header.m_nOperation = 1;

  chRet = 1;

  }

  break;

  在下位機(jī)收到CMD_HeartTime命令號(hào)時(shí),進(jìn)入該case語句內(nèi),UpdateTimer函數(shù)用于更新設(shè)備的RTC時(shí)鐘,并置TCP數(shù)據(jù)包的頭部m_Header中的.m_nOperation為1,在最后打包結(jié)構(gòu)體數(shù)據(jù)通過TCP協(xié)議發(fā)送給服務(wù)器端。

  將未加入異常處理與心跳包機(jī)制的1號(hào)設(shè)備與經(jīng)過優(yōu)化的2號(hào)設(shè)備運(yùn)行一上午的時(shí)間進(jìn)行對(duì)比,具體連接情況對(duì)比如表2與表3所示。

  測(cè)試發(fā)現(xiàn),1號(hào)設(shè)備會(huì)因網(wǎng)絡(luò)問題超時(shí)而斷開連接,只能靠人工手動(dòng)進(jìn)行復(fù)位重連;2號(hào)設(shè)備在上線后僅因服務(wù)器原因斷開連接,隨后便立即自動(dòng)重連并保持連接至測(cè)試結(jié)束。說明異常處理、心跳包機(jī)制與斷線重連起到了提高設(shè)備傳輸穩(wěn)定性的作用。將2號(hào)設(shè)備接入獨(dú)立IP的云服務(wù)器,通過網(wǎng)頁查看觀測(cè)24小時(shí),發(fā)現(xiàn)無異常掉線問題,數(shù)據(jù)正確穩(wěn)定傳輸。服務(wù)器端部分接收情況如圖6所示。

3 結(jié)論

  論文以STM32F207VCT6為主控芯片,以最新的GPRS模塊SIM800C為物聯(lián)網(wǎng)通訊模塊進(jìn)行無線數(shù)據(jù)傳輸,長(zhǎng)時(shí)間設(shè)備運(yùn)行測(cè)試未發(fā)現(xiàn)掉線及傳輸錯(cuò)誤情況,傳輸情況穩(wěn)定,基于C語言編寫的嵌入式程序代碼可方便地移植到其他類型的單片機(jī)中,方便進(jìn)行二次開發(fā),為物聯(lián)網(wǎng)設(shè)備數(shù)據(jù)的傳輸提供了一種新的穩(wěn)定的解決方案。

參考文獻(xiàn):

  [1]劉火良.STM32庫開發(fā)實(shí)戰(zhàn)指南[M].北京:機(jī)械工業(yè)出版社,2013.

  [2]李濤,馬殷元,楊東. 基于STM32的GPRS遠(yuǎn)程檢測(cè)終端設(shè)計(jì)[J]. 電子世界,2012.

  [3]張逢雪,王香婷,王通生. 基于STM32單片機(jī)的無線智能家居控制系統(tǒng)[J]. 自動(dòng)化技術(shù)與應(yīng)用,2011.

  [4]Simcom. SIMCOM800C硬件設(shè)計(jì)手冊(cè).pdf[EB/OL]. http://simcomm2m.com/UploadFile/TechnicalFile/SIM800C_硬件設(shè)計(jì)手冊(cè)_V1.01.pdf.

  [5]Simcom. SIM800Series AT Command ManualV1.09.pdf[EB/OL].

  http://simcomm2m.com/UploadFile/TechnicalFile/SIM800Series_ATCommandManual_V1.09.pdf.

  [6]Simcom. SIM80系列TCPIP應(yīng)用文檔V1.01.pdf[EB/OL].http://simcomm2m.com/UploadFile/TechnicalFile/SIM800系列_TCPIP_應(yīng)用文檔_V1.01.pdf.


本文來源于中國(guó)科技期刊《電子產(chǎn)品世界》2016年第10期第39頁,歡迎您寫論文時(shí)引用,并注明出處。


上一頁 1 2 下一頁

關(guān)鍵詞: GPRS SIM800C 無線傳輸 201611

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉