国产成人精品久久一区二区,韩国精品久久久久久无码,国产精品国产高清国产av,欧美99久久无码一区人妻a片,亚洲高清码在线精品av,午夜人妻久久久久久久久,伊人热热久久原色播放www ,亚洲女教师丝祙在线播放
你的位置:首頁 > 互連技術 > 正文

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

發(fā)布時間:2019-11-05 來源:霍濤,賈振堂 責任編輯:wenwei

【導讀】設計一個可以實現(xiàn)短信收發(fā)與數(shù)據(jù)無線傳輸?shù)哪K的要求,本文采用了ARM Cortex—M3內核的主流產品STM32作為主控芯片,采用SIMCom公司的SIM900A作為通信芯片。在查閱大量相關文獻以及相關芯片的數(shù)據(jù)手冊之后,本文設計了一個遠程無線通信模塊。該模塊在實驗室試運行一周后,沒有出現(xiàn)掉線的情況,數(shù)據(jù)收發(fā)的速度也很快。該模塊具有性能穩(wěn)定,外形小巧,性價比高等優(yōu)點。廠方投入使用之后,反應良好。
 
隨著網絡和現(xiàn)代通信技術的不斷發(fā)展,遠程無線通信技術經過多年的研究與實際應用,現(xiàn)如今在工業(yè)控制領域有了非常重要的地位,并且發(fā)揮著越來越大的作用。文中根據(jù)廠家的要求,設計的無線通信模塊,主要實現(xiàn)了短信與數(shù)據(jù)收發(fā)功能,并且做到了模塊的穩(wěn)定,掉線之后能夠自動重連。
 
1、無線通信模塊整體設計方案
 
模塊主要有電源部分、主控部分、通信部分、數(shù)據(jù)傳輸部分4個部分組成。通信模塊采用SIM900A進行無線通信。主控模塊采用STM32作為主控芯片,來控制短信的收發(fā)與數(shù)據(jù)傳輸?shù)捻樌M行。遠程終端可以是手機或者上位機的數(shù)據(jù)中心軟件,經過處理之后,儲存下來,方便日后的查詢。本模塊具有低功耗,方便靈活,操作簡單并且穩(wěn)定,掉線之后可以自動連接,運行過程十分穩(wěn)定,并且成本較低。
 
2、無線通信模塊硬件設計
 
2.1 功能需求
 
本文設計的無線通信模塊,要求單12V電源輸入,模塊上電運行后有相應的指示燈來指示模塊的運行狀態(tài)。另外要求模塊能夠實現(xiàn)短信以及數(shù)據(jù)透傳兩大主要功能,在手機發(fā)送短信給模塊之后,模塊能夠動作,并給出回應。最后要求在建立TCP鏈接時,仍然能夠收發(fā)短信。
 
基于STM32和SIM900A的無線通信模塊設計
圖1 無線通信模塊結構圖
 
2.2 電源部分
 
在主電路中,主控芯片STM32的工作電壓為2.0~3.6 V,通信芯片SIM900A的工作電壓為3.1~4.6 V,為使模塊各個部分正常工作,必須對兩者進行分別供電,電源供電電路如下:
 
圖中V12外接12 V電源,經過電容濾波后輸入到LM2576,實現(xiàn)12 V到4 V的轉換,R1、R2在線路中起到分壓作用,D2燈亮起時,表示模塊已經正常供電。LM2576是美國國家半導體公司生產的3 A電流輸出降壓開關型集成穩(wěn)壓電路,具有完善的保護電路,比較穩(wěn)定。
 
基于STM32和SIM900A的無線通信模塊設計
圖2 電源模塊
 
2.3 主控芯片
 
主控模塊采用STM32單片機作為微控制器,該芯片能工作于-40~105℃的溫度范圍,MAX3232芯片用于串行口的電平變換,實現(xiàn)控制器與通信接口之間的通信。串口1與電源電平轉換芯片Max3223相連,USART1_TX(輸出,所以在配置GPIO時,定義該口的模式為推拉輸出,USART1_ RX為輸入,定義為懸浮輸入模式。串口2與SN65LBC184D通信,實現(xiàn)數(shù)據(jù)的收發(fā),USART2_RTS、USART2_RX為輸入端口,模式定義為懸浮輸入模式,USART2_CTS、USART2_TX為輸出端口,模式定義為推拉輸出。串口3用來控制SIM900A芯片,USART3_RTS、USART3_RX為輸入端口,模式定義為懸浮輸入,USART3_CTS、USART3_TX為輸出端口,模式定義為推拉輸出。
 
基于STM32和SIM900A的無線通信模塊設計
圖3 主控芯片STM32
 
2.4 通信芯片
 
通信芯片采用SIMCom公司的新型緊湊型產品SIM900A,它屬于雙頻GSM/GPRS模塊,完全采用SMT封裝形式,性能穩(wěn)定,外觀精巧,性價比高,并且能夠滿足用戶的多種需求。在實現(xiàn)斷線自動重連功能時,涉及到DCD、RI兩個引腳的使用。DCD引腳用來實現(xiàn)模數(shù)轉換,當模塊掉線時,會給DCD引腳一個高電平,當這個電平被DCD引腳檢測到之后,模塊就是采取相應的動作,來重新連接上線。RI引腳在模塊上線之后,就一直保持高電平,在有電話和短信進來的時候,RI管腳就會有一個低電平出現(xiàn),當RI引腳檢測到這個低電平的時候,模塊就會采取相應動作,進入到短信或者電話模式。
 
基于STM32和SIM900A的無線通信模塊設計
圖4 SIM900A通信芯片
 
3 、無線通信模塊軟件設計
 
3.1 STM32的底層配置
 
為了實現(xiàn)STM32單片機與SIM900A模塊之間的數(shù)據(jù)通信,實現(xiàn)短信收發(fā)與數(shù)據(jù)傳輸兩大功能。首先要搭建開發(fā)平臺,在工程中加入需要用到的庫函數(shù)以及配置文件,然后配置系統(tǒng)時鐘、中斷控制器、輸入輸出的GPIO以及相應的串口。在配置這些參數(shù)的時候,首先需要對照原理圖進行編寫,然后查看芯片用到哪些端口和這些端口的作用,這樣才能保證無誤。接下來就要對各個部分進行配置,以保證模塊能夠正常運行。
 
3.1.1 串口配置
 
開發(fā)環(huán)境搭建好之后,就可以配置端口參數(shù)了。對于本模塊,設置USART傳輸?shù)谋忍芈蕿? 600 b/s,字長為8 bit,1bit停止位,無檢驗模式。在對串口1、2、3初始化之后,打開串口的中斷響應函數(shù):USART_ITConfig(USART1,USART_IT_RXNE,ENABLE)(以串口1為例),使能相應的串口:USART_Cmd(USART1,ENABLE),這樣串口的配置就基本完成了。
 
3.1.2 中斷控制器的配置
 
首先配置優(yōu)先級分組,設置先占優(yōu)先級1位,從優(yōu)先級3位。本模塊定義了5個全局中斷,分別為:兩個RTC全局中斷、USART1全局中斷、USART2全局中斷、USART3全局中斷,分別對每一個中斷配置優(yōu)先級,使能串口再初始化即可。需要注意的是,PC15管腳作為EXTI15的外部中斷輸入管腳,當該管腳的電平為低電平的時候觸發(fā),模塊進入短信模式,因此給這個中斷一個比較高的優(yōu)先級,所以定義該中斷先占優(yōu)先級1位,從優(yōu)先級0位。在設置優(yōu)先級的時候,必須根據(jù)模塊的運行情況,選擇最優(yōu)的中斷分組和優(yōu)先級,才能保證程序運行時,能夠快速的響應中斷。
 
3.2 無線通信模塊短信功能的實現(xiàn)
 
1) 短信收發(fā)具體過程
 
短信功能的實現(xiàn)主要涉及到兩個關鍵部分,一個是AT命令,另一個是串口的讀寫。AT命令是主控芯片STM32和SIM900A之間的通信協(xié)議,完成對SIM900A的控制。短信的收發(fā)主要有兩種模式,一種是文本模式,該模式只支持英文內容,另一種是PDU模式。本模塊在完成初始化之后,首先通過USART向SIM900A發(fā)送“AT+回車”命令來檢查AT命令是否正常工作,如果返回OK,則表示能夠進行接下來的短信功能。
 
SIM900A的短信功能主要分為兩個部分,第一:讀取短消息。讀取短消息的設置命令為:AT+CMGR,該命令生效后有兩個返回值:index和mode,index就是接收到的短信的編號,我們將接收到的index內容放在一個長度為30的buf中,再將buf寫入到串口3中,然后再讀取串口3中的內容,這樣,短信的編號就獲取完畢。獲取了短信的編號之后,就能去獲取短信的具體內容,而短信的內容則存放在alpha中,它處于響應的第三個位置,通過get_fw(at_string,phnum,19,2)可將短信的內容取出來,這樣短信的內容就獲取到了。第二:發(fā)送短消息。發(fā)送短消息的設置命令為:AT+CMGS,首先將發(fā)送短信的電話號碼存入到一個buf中,將這個buf寫入到串口3中,以此獲取手機號碼。而短信在發(fā)送的時候,短信內容之前會帶一個“>”號,在程序設計時,只要檢測到“>”號時,后面的內容也就是短信發(fā)送的內容,最后將短信的內容寫到串口3即可。
 
2)相應的AT命令
 
基于STM32和SIM900A的無線通信模塊設計
 
3.3 短信命令的定義
 
本模塊自定義了許多短消息命令來設置或者查詢模塊的參數(shù),具體為:SIP:IP地址設置命令、SPT:端口號設置命令、DID:ID號設置命令、ACON:自動連接命令、PRT:打印命令、LIVE:心跳操作命令、CSQ:信號強度查詢命令。這些指令通過短信的方式來實現(xiàn)對模塊的操作。
拿SIP來舉例,它的實現(xiàn)過程為:首先把短信中的‘=’之前的字符取出來存放在sms_cmd中,然后將sms_cmd與SIP、SIT、DID、ACON、PRT、LIVE、CSQ來比較,如果等于其中一個,則程序跳轉到相應的部分來執(zhí)行相應的操作。這里,strcmp(sms_cmd,“SIP”)==0,程序跳轉到SIP部分來執(zhí)行IP部分的操作。然后,將‘=’之后的字符取出來存放在sms_para中。通過字符串比較函數(shù)來判斷它是‘?’還是數(shù)字。如果是‘?'''',則表示該短信命令是一個查詢命令,就只需要用輸出顯示IP號給用戶看。如果是數(shù)字,則表示該短信命令是一個設置命令,就需要重新設置某些參數(shù)值,來改變模塊的運行過程。對于SIP,如果''''=’之后是數(shù)字,就表示該短信是用戶用來設置模塊的IP地址的。此時,就要把當前的IP值賦給模塊的IP值就可以了。最后輸出顯示IP地址設置成功,則SPT部分的操作就完成了。
 
4、 無線通信模塊數(shù)據(jù)傳輸?shù)膶崿F(xiàn)
 
4.1 數(shù)據(jù)格式的定義
 
數(shù)據(jù)包的具體格式如下:
 
數(shù)據(jù)包頭已經定義為S_PACKET_HEADER結構類型,link_id為DWORD類型,對于發(fā)送,填寫目標link_id,對于接收到的數(shù)據(jù)包,則為源link_id(由服務器自動轉換填寫),結束標志為0x01,數(shù)據(jù)Data則根據(jù)具體的命令而各不相同。
 
基于STM32和SIM900A的無線通信模塊設計
 
4.2 登陸、退出的協(xié)議過程
 
后臺軟件根據(jù)指定的服務器地址和端口號發(fā)起TCP連接請求,連接成功后開始命令交互。工作過程描述如下:
 
1)后臺軟件首先采用CMD_LOGIN命令,登陸到通信服務器,在登陸成功之前,發(fā)送其他任何命令服務器都不處理。發(fā)送CMD_LOGIN:FORWARD給服務器,攜帶數(shù)據(jù)為S_TERMINAL。該命令的目標link_id設為0,表示發(fā)送給服務器,而不是給其他終端。
 
2)服務器在CMD_LOGIN:RESPONSE_OK中將其他在線模塊的信息發(fā)送過來,從而在客戶端應用程序形成在線模塊列表。后臺若收到CMD_LO GIN:;RESPONSE_FAILED回應,則失敗。收到CMD_LOGIN:RESPONSE_OK回應,則成功,攜帶數(shù)據(jù)為S_TERMINAL。
 
3)后臺軟件定時發(fā)送CMD_KEEP_LIVE命令,以維持鏈路不被網絡和服務器終止。每個在線設備必須在一定的時間間隔內向服務器發(fā)送CMD_ KEEP_LIVE信息。服務器將對此作檢查,若某設備在一定的時間間隔內沒有發(fā)送CMD_KEEP_LIVE信息,則認為該設備已經“死亡”,服務器將斷開其連接。
 
4)后臺軟件可對模塊列表中的任意模塊進行操控。
 
5)后臺軟件退出時,用戶設備應首先發(fā)送CMD_LOGOFF命令到服務器,告訴服務器“我要退出”,該命令的目標link_id設為0。在發(fā)送CMD _LOGOFF:FORWARD給服務器時,不需要攜帶數(shù)據(jù)。
 
基于STM32和SIM900A的無線通信模塊設計
圖5 登陸,推出的協(xié)議過程
 
4.3 數(shù)據(jù)傳輸具體過程
 
首先要定義建立TCP連接與關閉TCP連接的函數(shù),涉及到的AT指令為AT+CIPSTART和AT+CIPCLOSE。建立TCP連接時,先把AT+CIPSTART指令寫到串口3中,然后該指令生效后,會返回一個“CONNECT”,之后只要檢測到有返回值“CONNECT”,就表示TCP連接已經建立成功。關閉TCP連接與建立TCP連接類似,AT+CIPCLOSE指令生效后會返回一個“CLOSE OK”,只要檢測到“CLOSE OK”,就表示TCP連接已經關閉。
 
TCP連接建立好以后,透傳模式就已經被開啟,此時就可以實現(xiàn)數(shù)據(jù)的發(fā)送與讀取。
 
當用戶要發(fā)送數(shù)據(jù)時,就必須根據(jù)數(shù)據(jù)包的結構來發(fā)送數(shù)據(jù),首先把包頭寫入到串口3中,如果有數(shù)據(jù),則把數(shù)據(jù)內容和接收對象一并寫入到串口3中,這樣數(shù)據(jù)的發(fā)送就完成了。
 
讀取數(shù)據(jù)時,只要有數(shù)據(jù)過來,就一次一個字節(jié),把數(shù)據(jù)存放到user_string[i]中,然后i++,再次接收數(shù)據(jù)。
 
至于數(shù)據(jù)讀取到什么時候結束,本程序定義了3種結束的情況:1)如果用戶定義了數(shù)據(jù)的長度,就讀取到最后一個字節(jié)才結束。2)如果用戶沒有定義數(shù)據(jù)的長度,就在讀取到回車符的時候結束。3)如果遇到既沒有已定義的數(shù)據(jù)包長度,又沒有讀取到回車符的情況時,就在數(shù)據(jù)存放的長度超過user_string[i]總長度的四分之三的時候結束,或者在超過100毫秒沒有數(shù)據(jù)發(fā)過來的時候結束數(shù)據(jù)的讀取。
 
4.4 相應的AT命令
 
基于STM32和SIM900A的無線通信模塊設計
 
5 、斷線重連的處理
 
5.1 TCP鏈接的關閉和建立
 
TCP鏈接的建立涉及到的AT命令是at+cipstart,該指令有兩個返回值,分別是模塊的IP地址和端口號。首先將at+cipstart指令返回的當前模塊的IP地址和端口號存放到一個buf中,然后將這個buf寫入到串口3中,如果之后能夠讀取到返回值“CONNECT”,就表示TCP鏈接已經建立好。
 
TCP鏈接的關閉涉及到的AT命令是at+cipclose,該指令沒有返回值,可以直接將該指令寫到串口3中,如果檢測到“CLOSE OK”,就表示TCP鏈接已經被關閉。
 
5.2 DCD的檢測
 
當TCP建立起來之后,DCD引腳的電壓值便由高電平變?yōu)榈碗娖剑虼薉CD引腳的電平狀態(tài)可以用過來指示TCP的連接情況。在程序中,本文設置時鐘在檢測DCD引腳的狀態(tài)值,當該引腳的電平值由高電平變?yōu)榈碗娖綍r,就表示模塊模塊已經掉線,然后模塊就重新開始登陸,直到登陸上為止。
 
5.3 TCP鏈接下的短信收發(fā)
 
本文定義了一個全局中斷,當有短信或者電話到達模塊時,RI引腳的電平便會由高電平變?yōu)榈碗娖剑藭r便會觸發(fā)全局中斷,模塊立即轉而處理短信收發(fā)或者數(shù)據(jù)傳輸。
 
6、 測試效果
 
本模塊在設計完成之后,在實驗室穩(wěn)定運行了2周時間,沒有出現(xiàn)什么問題。然后又進行了特殊情況的測試,在模塊斷電后恢復供電,數(shù)據(jù)中心斷電后重新上電的情況下,都能夠重新連接上線,并且能夠繼續(xù)穩(wěn)定運行。隨后模塊又被送到廠方使用,在被使用了3周之后,廠方反應模塊運行情況良好,沒有掉線的情況。
 
7 、結論
 
本文設計的無線通信模塊,是利用STM32來控制SIM900A芯片,來實現(xiàn)短消息的收發(fā)與數(shù)據(jù)的無線傳輸。本設計完成了無線通信的硬件部分和軟件部分的設計與實現(xiàn)。在多次運行試驗時,本模塊沒有出現(xiàn)掉線以及發(fā)熱等問題,非常穩(wěn)定。本次設計成本較低,運行穩(wěn)定可靠,應用范圍十分廣泛,利用SIM900A,降低了模塊的成本,使其更加具有商業(yè)價值。
 
(作者:霍濤,賈振堂,上海電力學院電子與信息工程)
 
 
推薦閱讀:
 
精密性能Max,這款雙極性電源解決方案你得了解
自動駕駛安全如何保障?底層傳感器信號鏈才是關鍵!
“擁擠”的ToF應用場景下,如何避免多個ToF測量信號的干擾?
開關霍爾傳感器DRV5032在TWS耳機設計的應用
舉2個例子教你電源時序控制的正確方法,你get了沒?
特別推薦
技術文章更多>>
技術白皮書下載更多>>
熱門搜索
壓控振蕩器 壓力傳感器 壓力開關 壓敏電阻 揚聲器 遙控開關 醫(yī)療電子 醫(yī)用成像 移動電源 音頻IC 音頻SoC 音頻變壓器 引線電感 語音控制 元件符號 元器件選型 云電視 云計算 云母電容 真空三極管 振蕩器 振蕩線圈 振動器 振動設備 震動馬達 整流變壓器 整流二極管 整流濾波 直流電機 智能抄表
?

關閉

?

關閉

主站蜘蛛池模板: 国产av国片精品一区二区| 亚洲人成色77777在线观看大战p | 国产第一页屁屁影院| 国产女精品视频网站免费蜜芽| 一本精品中文字幕在线| 男人用嘴添女人私密视频| 99精品热这里只有精品 | 久久久综合亚洲色一区二区三区| 日日干夜夜操高清视频| 国产成人综合日韩精品无码不卡| 一本色道久久综合亚洲精品| 高潮毛片无遮挡高清视频播放| 67pao国产成视频永久免费| 无遮挡啪啪摇乳动态图gif| 鲁鲁网亚洲站内射污| 2023国产精品一卡2卡三卡4卡| 国产精品好好热av在线观看| 国产a∨天天免费观看美女| 久久久久久曰本av免费免费| 国产乱子伦一区二区三区=| 国产第一页屁屁影院| 妺妺窝人体色www在线小说| 五十路熟妇亲子交尾| 窝窝午夜理论片影院| 成人无码区免费视频网站| 欧美精品色婷婷五月综合| 亚洲爆乳少妇无码激情| 久久久噜噜噜久久熟女aa片| 国产第一页屁屁影院| 人妻无码人妻有码中文字幕在线| 欧美丰满熟妇xxxx| 国产精品无码制服丝袜| 久久不见久久见免费影院| 人人爽人人爽人人片a∨| 亚洲中文字幕日产乱码高清app| 国产内射一区亚洲| 亚洲精品国产成人一区二区| 无码纯肉动漫在线观看| av成人午夜无码一区二区| 欧美丰满熟妇xxxx| 色妞www精品视频二|