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