使用Arduino控制設(shè)備,讀取數(shù)據(jù),然后通過移動網(wǎng)絡(luò)傳送到服務器。選用的是正點原子的SIM900A模塊。在服務器部署了一個監(jiān)聽程序,Arduino控制SIM900A通過TCP方式把數(shù)據(jù)發(fā)送到服務器。
SIM900A能不能訪問網(wǎng)頁呢?接下來一起了解一下關(guān)于SIM900A訪問HTTP的方法吧。
1、要訪問網(wǎng)頁,總得先上網(wǎng)吧。
那手機是怎么上網(wǎng)的呢?打開“數(shù)據(jù)連接”就行了吧。恩??墒鞘謾C怎么知道怎么接入網(wǎng)絡(luò)呢?想起當年用Hero的時候,無數(shù)次設(shè)置APN,如下圖。
看明白了嗎?手機中有默認的網(wǎng)絡(luò)接入點,當打開“數(shù)據(jù)連接”的時候,手機會接入指定的接入點。那么,再回過頭來看AT+SAPBR指令的參數(shù),原來如此。那我們執(zhí)行如下的AT指令:
?。?)AT+SAPBR=3,1,“APN”,“cmnet”:這條指令設(shè)置接入點名稱(第4張圖第二行)。
?。?)AT+SAPBR=3,1,“PHONENUM”,“12345678900”:設(shè)置電話號碼。
其它的參數(shù)不用這是了吧,因為第4張圖上也沒有設(shè)置。
?。?)AT+SAPBR=4,1:查詢參數(shù)設(shè)置。
?。?)AT+SAPBR=5,1:將本次的參數(shù)設(shè)置保存到RAM,下次就不用設(shè)置了,直接打開就行。
4條指令中,那個“1”是什么意思?其實,我也沒搞的很清楚,就算是個標識吧。
?。?)AT+SAPBR=1,1:打開承載,我的理解是你打開了“數(shù)據(jù)連接”。
?。?)AT+SAPBR=2,1:這條命令可以查看到接入網(wǎng)絡(luò)的狀態(tài)還有IP地址。
好了,現(xiàn)在我已經(jīng)接入網(wǎng)絡(luò)了(返回的第2個參數(shù)是1表示已經(jīng)連接),我的IP地址是“10.129.8.149”(第3個參數(shù))。
2、沒有UC,我咋訪問網(wǎng)頁呢?
慢慢來。先看看“第10章HTTP應用AT指令”,一共7條指令。基本思路就是先初始化,然后設(shè)置參數(shù),激活HTTP,等到相應,然后再讀返回的數(shù)據(jù),最后關(guān)閉。下面,我要訪問我們學院的網(wǎng)站了:http://www.dyxy.net。
?。?)AT+HTTPINIT:初始化HTTP。
(2)AT+HTTPPARA=“CID”,“1”:設(shè)置承載上下文標識,和上面一致。
?。?)AT+HTTPPRAR=“URL”,“http://www.dyxy.net”:設(shè)置你要訪問的那個網(wǎng)站,要加上“http://”協(xié)議的啊。
其它的參數(shù)我們暫且不去設(shè)置。
?。?)AT+HTTPACTION=0:激活HTTP請求,0表示get方式、1表示post方式、2表示head(這個不知道啥意思)。
這個時候要耐心等,在OK之后會返回HTTP的狀態(tài)。我的狀態(tài)如下:
看到“200”了嗎?這說明訪問成功了。那個“0”表示你的訪問方式,剛才我們用get去訪問的。那最后的那個“30188”是什么呢?恩,它是DataLen,也就是用字節(jié)表示的網(wǎng)頁的內(nèi)容的長度。
好吧,那怎么獲取網(wǎng)頁的內(nèi)容呢?AT+HTTPREAD指令現(xiàn)在登場。
(5)AT+HTTPREAD=1,30188:讀取HTTP相應數(shù)據(jù)。1表示從第一個字節(jié)開始讀,讀30188個字節(jié)。
如果我們操作正確、且我們知道HTML是什么的話,我們會驚訝的發(fā)現(xiàn),網(wǎng)頁的內(nèi)容被讀出來了。哈哈哈哈!
(6)AT+HTTPTERM:訪問完了,記得終止HTTP服務啊。
?。?)AT+SAPBR=0,1:最后別忘記關(guān)閉承載。
OK,這樣,我們就實現(xiàn)了SIM900A通過GET方式訪問網(wǎng)頁的問題。
當然,這是非常簡單的操作。我們肯定會遇到這樣那樣的問題,比如:
(1)AT+HTTPREAD指令最多能讀出102400字節(jié)的數(shù)據(jù),那如果某個網(wǎng)頁返回的數(shù)據(jù)量超過了102400該怎么辦?
?。?)怎么通過POST方式提交數(shù)據(jù)?
GET 的請求:
[html] view plain copyAT+HTTPTERM
AT+CSQ
AT+CGATT?
AT+SAPBR=3,1,“CONTYPE”,“GPRS”
AT+SAPBR=1,1
AT+HTTPINIT
AT+HTTPPARA=“URL”,“http://127.0.0.1:3000/v1/test”
AT+HTTPACTION=0 //發(fā)送GET請求,注意返回的狀態(tài)碼
AT+HTTPREAD //read data
POST請求:
?。踙tml] view plain copyAT+HTTPTERM
AT+CSQ
AT+CGATT?
AT+SAPBR=3,1,“CONTYPE”,“GPRS”
AT+SAPBR=1,1
AT+HTTPINIT
AT+HTTPPARA=“URL”,“http://《span style=”font-family: Arial, Helvetica, sans-serif;“》127.0.0.1:300《/span》《span style=”font-family: Arial, Helvetica, sans-serif;“》0/v1/mbdevices?devsn=12345678&devtype=abc”《/span》
AT+HTTPACTION=1 //發(fā)送POST數(shù)據(jù),注意返回的狀態(tài)碼
AT+HTTPREAD //read data
評論
查看更多