999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于STM32和SIM900A的無線通信模塊設計與實現

2014-01-15 10:00:12賈振堂
電子設計工程 2014年17期

霍 濤,賈振堂

(上海電力學院 電子與信息工程,上海 200090)

隨著網絡和現代通信技術的不斷發展,遠程無線通信技術經過多年的研究與實際應用,現如今在工業控制領域有了非常重要的地位,并且發揮著越來越大的作用。文中根據廠家的要求,設計的無線通信模塊,主要實現了短信與數據收發功能,并且做到了模塊的穩定,掉線之后能夠自動重連[1]。

1 無線通信模塊整體設計方案

模塊主要有電源部分、主控部分、通信部分、數據傳輸部分4個部分組成[2]。通信模塊采用SIM900A進行無線通信。主控模塊采用STM32作為主控芯片,來控制短信的收發與數據傳輸的順利進行。遠程終端可以是手機或者上位機的數據中心軟件,經過處理之后,儲存下來,方便日后的查詢。本模塊具有低功耗,方便靈活,操作簡單并且穩定,掉線之后可以自動連接,運行過程十分穩定,并且成本較低。

2 無線通信模塊硬件設計

2.1 功能需求

圖1 無線通信模塊結構圖Fig.1 structure diagram

本文設計的無線通信模塊,要求單12V電源輸入,模塊上電運行后有相應的指示燈來指示模塊的運行狀態。另外要求模塊能夠實現短信以及數據透傳兩大主要功能,在手機發送短信給模塊之后,模塊能夠動作,并給出回應。最后要求在建立TCP鏈接時,仍然能夠收發短信。

2. 2 電源部分

在主電路中,主控芯片STM32的工作電壓為2.0~3.6 V,通信芯片SIM900A的工作電壓為3.1~4.6 V,為使模塊各個部分正常工作,必須對兩者進行分別供電,電源供電電路如下:

圖中V12外接12 V電源,經過電容濾波后輸入到LM2576,實現12 V到4 V的轉換,R1、R2在線路中起到分壓作用,D2燈亮起時,表示模塊已經正常供電。LM2576是美國國家半導體公司生產的3 A電流輸出降壓開關型集成穩壓電路,具有完善的保護電路,比較穩定。

圖2 電源模塊Fig.2 Power Module

2.3 主控芯片

圖3 主控芯片STM32Fig.3 Main control chipSTM32

主控模塊采用STM32單片機作為微控制器,該芯片能工作于-40~105°C的溫度范圍,MAX3232芯片用于串行口的電平變換,實現控制器與通信接口之間的通信[3]。串口1與電源電平轉換芯片Max3223相連,USART1_TX輸出,所以在配置GPIO時,定義該口的模式為推拉輸出,USART1_RX為輸入,定義為懸浮輸入模式。串口2與SN65LBC184D通信,實現數據的收發,USART2_RTS、USART2_RX為輸入端口,模式定義為懸浮輸入模式,USART2_CTS、USART2_TX為輸出端口,模式定義為推拉輸出。串口3用來控制SIM900A芯片,USART3_RTS、USART3_RX為輸入端口,模式定義為懸浮輸入,USART3_CTS、USART3_TX為輸出端口,模式定義為推拉輸出。

2.4 通信芯片

通信芯片采用SIMCom公司的新型緊湊型產品SIM900A,它屬于雙頻GSM/GPRS模塊,完全采用SMT封裝形式,性能穩定,外觀精巧,性價比高,并且能夠滿足用戶的多種需求[4]。在實現斷線自動重連功能時,涉及到DCD、RI兩個引腳的使用。DCD引腳用來實現模數轉換,當模塊掉線時,會給DCD引腳一個高電平,當這個電平被DCD引腳檢測到之后,模塊就是采取相應的動作,來重新連接上線。RI引腳在模塊上線之后,就一直保持高電平,在有電話和短信進來的時候,RI管腳就會有一個低電平出現,當RI引腳檢測到這個低電平的時候,模塊就會采取相應動作,進入到短信或者電話模式。

3 無線通信模塊軟件設計

3.1 STM32的底層配置

為了實現STM32單片機與SIM900A模塊之間的數據通信,實現短信收發與數據傳輸兩大功能[5]。首先要搭建開發平臺,在工程中加入需要用到的庫函數以及配置文件,然后配置系統時鐘、中斷控制器、輸入輸出的GPIO以及相應的串口[6]。在配置這些參數的時候,首先需要對照原理圖進行編寫,然后查看芯片用到哪些端口和這些端口的作用,這樣才能保證無誤。接下來就要對各個部分進行配置,以保證模塊能夠正常運行[3]。

圖4 SIM900A通信芯片Fig.4 SIM900Acommunication chip

3.1.1 串口配置

開發環境搭建好之后,就可以配置端口參數了。對于本模塊,設置USART傳輸的比特率為9 600 b/s,字長為8 bit,1 bit停止位,無檢驗模式。在對串口1、2、3初始化之后,打開串口的中斷響應函數:USART_ITConfig(USART1,USART_IT_RXNE,ENABLE)(以串口1為例),使能相應的串口:USART_Cmd(USART1,ENABLE),這樣串口的配置就基本完成了。

3.1.2 中斷控制器的配置

首先配置優先級分組,設置先占優先級1位,從優先級3位。本模塊定義了5個全局中斷,分別為:兩個RTC全局中斷、USART1全局中斷、USART2全局中斷、USART3全局中斷,分別對每一個中斷配置優先級,使能串口再初始化即可。需要注意的是,PC15管腳作為EXTI15的外部中斷輸入管腳,當該管腳的電平為低電平的時候觸發,模塊進入短信模式,因此給這個中斷一個比較高的優先級,所以定義該中斷先占優先級1位,從優先級0位。在設置優先級的時候,必須根據模塊的運行情況,選擇最優的中斷分組和優先級,才能保證程序運行時,能夠快速的響應中斷。

3.2 無線通信模塊短信功能的實現

1)短信收發具體過程

短信功能的實現主要涉及到兩個關鍵部分,一個是AT命令,另一個是串口的讀寫。AT命令是主控芯片STM32和SIM900A之間的通信協議,完成對SIM900A的控制。短信的收發主要有兩種模式,一種是文本模式,該模式只支持英文內容,另一種是PDU模式。本模塊在完成初始化之后,首先通過USART向SIM900A發送“AT+回車”命令來檢查AT命令是否正常工作,如果返回OK,則表示能夠進行接下來的短信功能[2]。

SIM900A的短信功能主要分為兩個部分,第一:讀取短消息。讀取短消息的設置命令為:AT+CMGR,該命令生效后有兩個返回值:index和mode,index就是接收到的短信的編號,我們將接收到的index內容放在一個長度為30的buf中,再將buf寫入到串口3中,然后再讀取串口3中的內容,這樣,短信的編號就獲取完畢[7]。獲取了短信的編號之后,就能去獲取短信的具體內容,而短信的內容則存放在alpha中,它處于響應的第三個位置,通過get_fw(at_string,phnum,19,2)可將短信的內容取出來,這樣短信的內容就獲取到了。第二:發送短消息。發送短消息的設置命令為:AT+CMGS,首先將發送短信的電話號碼存入到一個buf中,將這個buf寫入到串口3中,以此獲取手機號碼。而短信在發送的時候,短信內容之前會帶一個“>”號,在程序設計時,只要檢測到“>”號時,后面的內容也就是短信發送的內容,最后將短信的內容寫到串口3即可[4]。

2)相應的AT命令

表1 短消息功能的AT命令Tab.1 Short message function’s AT command

3.3 短信命令的定義

本模塊自定義了許多短消息命令來設置或者查詢模塊的參數,具體為:SIP:IP地址設置命令、SPT:端口號設置命令、DID:ID號設置命令、ACON:自動連接命令、PRT:打印命令、LIVE:心跳操作命令、CSQ:信號強度查詢命令。這些指令通過短信的方式來實現對模塊的操作[4]。

拿SIP來舉例,它的實現過程為:首先把短信中的‘=’之前的字符取出來存放在sms_cmd中,然后將sms_cmd與SIP、SPT、DID、ACON、PRT、LIVE、CSQ 來比較,如果等于其中一個,則程序跳轉到相應的部分來執行相應的操作。這里,strcmp(sms_cmd,"SIP")==0,程序跳轉到SIP部分來執行IP部分的操作。然后,將‘=’之后的字符取出來存放在sms_para中。通過字符串比較函數來判斷它是‘?’還是數字。如果是‘?’,則表示該短信命令是一個查詢命令,就只需要用輸出顯示IP號給用戶看。如果是數字,則表示該短信命令是一個設置命令,就需要重新設置某些參數值,來改變模塊的運行過程[7]。對于SIP,如果‘=’之后是數字,就表示該短信是用戶用來設置模塊的IP地址的。此時,就要把當前的IP值賦給模塊的IP值就可以了。最后輸出顯示IP地址設置成功,則SPT部分的操作就完成了。

4 無線通信模塊數據傳輸的實現

4.1 數據格式的定義

數據包的具體格式如下:

數據包頭已經定義為S_PACKET_HEADER結構類型,link_id為DWORD類型,對于發送,填寫目標link_id,對于接收到的數據包,則為源link_id(由服務器自動轉換填寫),結束標志為0x01,數據Data則根據具體的命令而各不相同。

4.2 登陸、退出的協議過程

后臺軟件根據指定的服務器地址和端口號發起TCP連接請求,連接成功后開始命令交互。工作過程描述如下:

1)后臺軟件首先采用CMD_LOGIN命令,登陸到通信服務器,在登陸成功之前,發送其他任何命令服務器都不處理。發送CMD_LOGIN:FORWARD給服務器,攜帶數據為S_TERMINAL。該命令的目標link_id設為0,表示發送給服務器,而不是給其他終端。

2)服務器在CMD_LOGIN:RESPONSE_OK中將其他在線模塊的信息發送過來,從而在客戶端應用程序形成在線模塊列表。后臺若收到 CMD_LOGIN::RESPONSE_FAILED回應,則失敗。收到CMD_LOGIN:RESPONSE_OK回應,則成功,攜帶數據為S_TERMINAL。

表2 數據包的格式Tab.2 Packet format

3)后臺軟件定時發送 CMD_KEEP_LIVE命令,以維持鏈路不被網絡和服務器終止。每個在線設備必須在一定的時間間隔內向服務器發送CMD_KEEP_LIVE信息。服務器將對此作檢查,若某設備在一定的時間間隔內沒有發送CMD_KEEP_LIVE信息,則認為該設備已經“死亡”,服務器將斷開其連接。

4)后臺軟件 可對模塊列表中的任意模塊進行操控。

5)后臺軟件退出時,用戶設備應首先發送CMD_LOGOFF命令到服務器,告訴服務器 “我要退出”,該命令的目標link_id設為0。在發送CMD_LOGOFF:FORWARD給服務器時,不需要攜帶數據。

圖5 登陸、退出的協議過程Fig.5 The agreement process of log in and withdrawal

4.3 數據傳輸具體過程

首先要定義建立TCP連接與關閉TCP連接的函數,涉及到的AT指令為AT+CIPSTART和AT+CIPCLOSE。建立TCP連接時,先把AT+CIPSTART指令寫到串口3中,然后該指令生效后,會返回一個“CONNECT”,之后只要檢測到有返回值“CONNECT”,就表示TCP連接已經建立成功。關閉TCP連接與建立TCP連接類似,AT+CIPCLOSE指令生效后會返回一個“CLOSE OK”,只要檢測到“CLOSE OK”,就表示 TCP連接已經關閉[4]。

TCP連接建立好以后,透傳模式就已經被開啟,此時就可以實現數據的發送與讀取。

當用戶要發送數據時,就必須根據數據包的結構來發送數據,首先把包頭寫入到串口3中,如果有數據,則把數據內容和接收對象一并寫入到串口3中,這樣數據的發送就完成了。

讀取數據時,只要有數據過來,就一次一個字節,把數據存放到user_string[i]中,然后i++,再次接收數據[7]。

至于數據讀取到什么時候結束,本程序定義了3種結束的情況:1)如果用戶定義了數據的長度,就讀取到最后一個字節才結束。2)如果用戶沒有定義數據的長度,就在讀取到回車符的時候結束。3)如果遇到既沒有已定義的數據包長度,又沒有讀取到回車符的情況時,就在數據存放的長度超過user_string[i]總長度的四分之三的時候結束,或者在超過100毫秒沒有數據發過來的時候結束數據的讀取。

4.4 相應的AT命令

表3 數據傳輸功能的AT命令Tab.3 Data transmission function’s AT command

5 斷線重連的處理

5.1 TCP鏈接的關閉和建立

TCP鏈接的建立涉及到的AT命令是at+cipstart,該指令有兩個返回值,分別是模塊的IP地址和端口號。首先將at+cipstart指令返回的當前模塊的IP地址和端口號存放到一個buf中,然后將這個buf寫入到串口3中,如果之后能夠讀取到返回值“CONNECT”,就表示TCP鏈接已經建立好[2]。

TCP鏈接的關閉涉及到的AT命令是at+cipclose,該指令沒有返回值,可以直接將該指令寫到串口3中,如果檢測到“CLOSE OK”,就表示TCP鏈接已經被關閉。

5.2 DCD的檢測

當TCP建立起來之后,DCD引腳的電壓值便由高電平變為低電平,因此DCD引腳的電平狀態可以用過來指示TCP的連接情況。在程序中,本文設置時鐘在檢測DCD引腳的狀態值,當該引腳的電平值由高電平變為低電平時,就表示模塊模塊已經掉線,然后模塊就重新開始登陸,直到登陸上為止。

5.3 TCP鏈接下的短信收發

本文定義了一個全局中斷,當有短信或者電話到達模塊時,RI引腳的電平便會由高電平變為低電平,此時便會觸發全局中斷,模塊立即轉而處理短信收發或者數據傳輸。

圖6 RI引腳在短信和電話時的電平變化Fig.6 RI pin’s level change in the SMS and Ring

6 測試效果

本模塊在設計完成之后,在實驗室穩定運行了2周時間,沒有出現什么問題。然后又進行了特殊情況的測試,在模塊斷電后恢復供電,數據中心斷電后重新上電的情況下,都能夠重新連接上線,并且能夠繼續穩定運行。隨后模塊又被送到廠方使用,在被使用了3周之后,廠方反應模塊運行情況良好,沒有掉線的情況[8]。

7 結論

本文設計的無線通信模塊,是利用STM32來控制SIM900A芯片,來實現短消息的收發與數據的無線傳輸。本設計完成了無線通信的硬件部分和軟件部分的設計與實現[9]。在多次運行試驗時,本模塊沒有出現掉線以及發熱等問題,非常穩定。本次設計成本較低,運行穩定可靠,應用范圍十分廣泛,利用SIM900A,降低了模塊的成本,使其更加具有商業價值。

[1]蔡紅娟,翟晟,蔡苗,等.基于STM32的GSM智能家居控制系統設計[J].自動化技術與應用,2013,32(8):37-40.CAI Hong-juan,QU Sheng,CAI Miao,et al.GSM smart home control system design based on the STM32[J].Techniques and Applications of Automation,2013,32(8):37-40.

[2]李濤,馬殷元,楊東.基于STM32的GPRS遠程監測終端設計[J].電子世界,2012(11):126-127.LITao,MAYin -yuan,YANGDong.GPRSremote monitoring terminal design based on the STM32[J].Electronic World,2012(11):126-127.

[3]孫啟富,孫運強,姚愛琴,等.基于STM32的通用智能儀表設計與應用[J].儀表技術與傳感器,2010(10):34-36.SUN Qi-fu,SUN Yun-qiang,YAO Ai-qin,et al.Universal design and application of intelligent instrument based on STM32[J].InstrumentTechnique and Sensor,2010(10):34-36.

[4]翟順,王衛紅,張衎,等.基于SIM900A的物聯網短信報警系統[J].現代電子技術,2012,35(5):86-89.QU Shun,WANG Wei-hong,ZHANG Kan,etal.IOT SMSalarm system based on SIM900A[J].Modern Electronic Technology,2012,35(5):86-89.

[5]張逢雪,王香婷,王通生,等.基于STM32單片機的無線智能家居控制系統[J].自動化技術與應用,2011,30(8):98-101.ZHAGN-Ying-xue,WANG Xiang-ting,WANG Tong-sheng,et al.Microcontroller wireless smart home control system based on the STM32 [J].Techniques and Applications of Automation,2011,30(8):98-101.

[6]甘志偉,閆凱.基于SIM900A的無線數據采集卡設計與實現[J].山西電子技術,2013(1):55-58.GAN Zhi-wei,YAN Kai.Wireless data acquisition card’s design and implementation based on SIM900A[J].Shanxi Electronic Technology,2013(1):55-58.

[7]宋維.一種基于STM32的SMS短消息收發系統[J].電腦知識與技術,2012,8(20):4800-4802.SONG Wei.SMS short messaging system based on STM32[J].Computer Knowledge and Technology,2012,8 (20):4800-4802.

[8]鄭優訊,李宗伯.基于STM32微處理器的GPRS數據傳輸技術的研究[J].微型機與應用,2012,31(21):60-61,64.ZHEGN You-xun,LI Zong-bo.GPRS data transmission technology’s research based on STM32 microprocessor[J].Microcomputer&Its Applications,2012,31(21):60-61,64.

[9]郝雯,沈金鑫,梅成.基于STM32單片機的存儲式數據采集系統設計[J].電子設計工程,2013,21(17):80-82.HAO Wen,SHEN Jin-xin,MEIChegn.Thestoreddata acquisition system design based on STM32 MCU[J].Electronic Design Engineering,2013,21(17):80-82.

主站蜘蛛池模板: 午夜视频www| 国产黄网站在线观看| 国产精品任我爽爆在线播放6080 | 亚洲综合精品香蕉久久网| 51国产偷自视频区视频手机观看 | 国产三级国产精品国产普男人| 国产精品自在在线午夜| 996免费视频国产在线播放| 五月婷婷丁香综合| 毛片免费在线视频| 欧美成人精品欧美一级乱黄| 国产日韩欧美一区二区三区在线| 成人综合在线观看| 亚洲国产精品人久久电影| 亚洲综合网在线观看| 在线观看国产一区二区三区99| 午夜影院a级片| 欧美一级在线看| 亚洲第一在线播放| 欧美午夜视频| 久热中文字幕在线| 亚洲国语自产一区第二页| 色综合久久无码网| 亚洲天堂久久新| 黄色网页在线观看| 无码专区第一页| 波多野结衣一区二区三区88| 玖玖精品视频在线观看| 欧美精品一区二区三区中文字幕| 亚洲中文字幕久久无码精品A| 国产91蝌蚪窝| 网友自拍视频精品区| 欧美日本在线播放| 国产乱子伦无码精品小说| 特级欧美视频aaaaaa| 不卡国产视频第一页| 日韩av资源在线| 国产午夜福利亚洲第一| 亚洲资源站av无码网址| 国产成人做受免费视频| 国产精品成人一区二区不卡| 欧美不卡视频一区发布| 国产丰满大乳无码免费播放| 日韩在线网址| 国产午夜福利片在线观看| 久久久久国产一区二区| 色播五月婷婷| 亚洲日韩国产精品综合在线观看| 尤物在线观看乱码| 欧美成人国产| 福利在线不卡一区| 伦伦影院精品一区| AV无码一区二区三区四区| 国产精品妖精视频| 高清无码手机在线观看| 欧美曰批视频免费播放免费| 欧美日韩精品在线播放| 97青草最新免费精品视频| 国产特级毛片aaaaaaa高清| 亚洲第一区在线| 二级特黄绝大片免费视频大片| 国产精品国产三级国产专业不| 亚洲熟女偷拍| 亚洲视频免费在线| 日韩小视频在线播放| 99热最新网址| 国产在线观看一区精品| 99这里精品| 成人免费一级片| 欧美日韩一区二区在线播放| 国产a v无码专区亚洲av| 国产原创自拍不卡第一页| 91综合色区亚洲熟妇p| 国产欧美精品午夜在线播放| 少妇露出福利视频| 国产网站黄| 91免费在线看| 91午夜福利在线观看精品| 亚洲色图欧美| 最新精品久久精品| 911亚洲精品| 亚洲欧洲日韩综合色天使|