stm32與sim900之GPRS通信(電腦串口與SIM900通信)
注意:
1 sim900在進(jìn)行GPRS通信的時(shí)候最大電流可以到90MA.瞬間電流SIM900模塊可能高達(dá)2A@4V,即輸入端電流瞬間值可能高達(dá)740mA@12V,故給模塊選擇電源的時(shí)候,要能滿足瞬間電流峰值。
以上這段話摘錄自正點(diǎn)原子的SIM900用戶手冊(cè),也就是說(shuō)你在用SIM900這個(gè)模塊進(jìn)行GPRS數(shù)據(jù)傳輸時(shí),要保證能給這個(gè)模塊提供2A左右的電流,在實(shí)際的測(cè)試當(dāng)中,如果提供的電流過(guò)小,會(huì)造成GPRS通信偶爾幾次通信成功。
2 stm32向SIM900通信的時(shí)候,發(fā)送的每個(gè)AT指令之間是要有時(shí)間間隔的,可以先通過(guò)電腦串口與SIM900進(jìn)行通信有一個(gè)簡(jiǎn)單的認(rèn)識(shí),然后再開始寫程序,調(diào)試。
3 注意SIM卡安裝的方向不要裝反
一 模塊實(shí)物圖
二 通過(guò)電腦串口調(diào)試SIM900
1 SIM900上電后一般會(huì)有指示燈,其中一個(gè)指示燈常亮,表示電源供電正常,另一個(gè)指示燈如果保持亮1秒,熄滅2秒,則表示注冊(cè)到網(wǎng)絡(luò)
2 發(fā)送指令
2.1 發(fā)送指令之前最好先發(fā)送一個(gè)"AT",用于SIM900進(jìn)行串口波特率的同步。
注意AT指令不區(qū)分大小寫,發(fā)送時(shí)應(yīng)勾選發(fā)送新行。
2.2發(fā)送相關(guān)的設(shè)置指令
[cpp]view plaincopy
AT+CGCLASS="B"http://設(shè)置移動(dòng)臺(tái)類別為B,即模塊支持包交換和電路交換模式,但不能同時(shí)支持
[csharp]view plaincopy
AT+CGDCONT=1,"IP","CMNT"http://設(shè)置PDP上下文標(biāo)志1,采用互聯(lián)網(wǎng)協(xié)議(IP)接入點(diǎn)為“CMNET”
[cpp]view plaincopy
AT+CGATT=1//用于設(shè)置附著和分離GPRS業(yè)務(wù)
[cpp]view plaincopy
AT+CIPCSGP=1,"CMNET"http://設(shè)置為GPRS連接,接入點(diǎn)為“CMNET”
[cpp]view plaincopy
AT+CIPCSGP=1,"CMNET"http://設(shè)置TCP連接本地端口號(hào)為2000
注意:1 在輸入AT指令時(shí),所有的符號(hào)都是英文的,中文的會(huì)導(dǎo)致錯(cuò)誤,還有在輸入的時(shí)候,要看清AT指令,不要輸錯(cuò)。
2 在SIM900返回錯(cuò)誤的時(shí)候先檢查指令有沒(méi)有輸入錯(cuò)誤,確保指令沒(méi)有出錯(cuò)的情況下就要檢查為什么AT指令會(huì)出錯(cuò)了,這里建議看一下SIM900的指令手冊(cè),舉個(gè)例子
在當(dāng)時(shí)我第一次測(cè)試的時(shí)候,這個(gè)總是返回錯(cuò)誤,后來(lái)才發(fā)現(xiàn)原來(lái)我的手機(jī)卡欠費(fèi)了,根本不支持GPRS業(yè)務(wù)。所以說(shuō)出了錯(cuò)誤不要干著急,要學(xué)會(huì)分析錯(cuò)誤的原因。
3 花生殼的使用
3.1打開花生殼和網(wǎng)絡(luò)調(diào)試助手
輸入:%20%20%20
[cpp]view%20plaincopy
AT+CIPSTART="tcp","c1594751r4.iok.la","13938"
為什么是"c1594751r4.iok.la","13938",這個(gè)是和花生殼有關(guān)的。
注意:輸入上面的指令后先出現(xiàn)“OK”,要稍等一會(huì)后才會(huì)出現(xiàn)“CONNECT OK”(連接成功),這也就是我在開頭說(shuō)的為什么一定要在程序里面加延時(shí)的原因。
好了,現(xiàn)在就可以向網(wǎng)絡(luò)端發(fā)送數(shù)據(jù)了。
[cpp]view plaincopy
at+cipsend//開始發(fā)送數(shù)據(jù)指令
這次待發(fā)送的數(shù)據(jù)是“hello word",可以看到網(wǎng)絡(luò)調(diào)試助手那里并沒(méi)有收到數(shù)據(jù),那是因?yàn)檫€要發(fā)送十六進(jìn)制的"1A"
注意:要勾選HEX發(fā)送
注意事項(xiàng):1 用花生殼是因?yàn)槲覀儗W(xué)校是內(nèi)網(wǎng),關(guān)于花生殼的時(shí)候我會(huì)接著寫下來(lái)
2 長(zhǎng)期使用GPRS要注意心跳包的維持
3 原則上講現(xiàn)在我們是可以通過(guò)stm32來(lái)模擬這個(gè)過(guò)程與SIM900通信了,但是實(shí)際中卻稍微有一些改動(dòng)。