ESP8266使用AT指令發送GET方式HTTP請求
- 寫在前面
- 好的建議
- 正式開始
- 完整流程及演示效果
寫在前面
今天開始除錯ESP8266模塊,想要使用它以串口AT命令的方式發送GET請求,用來上報資訊給服務器端,在查找資料和實驗的程序中發現網上的講解并不是詳細,東拼西湊看了幾篇才走下來,在此寫一個盡量“清楚明白”的文章,歡迎大家一起交流,
好的建議
1.建議大家現在每次都記事本上寫AT命令,然后復制到串口助手上去,這樣:
- 不會誤操作:有的串口助手會將回車當作發送指令,容易誤動作,
- 記錄可以保留:調過AT指令的朋友們都知道,我們為了實作一個操作可能會做多次有順序的AT指令,這時,保留正確的操作指令和順序是非常重要的,
2.建議大家保留手敲\r\n的習慣,關閉串口助手的“加回車換行”的選項:
這個選項幾乎所有串口助手都會帶,我建議大家不要勾選,而是手敲\r\n來代替,輸入了什么就發送了什么,這樣十分有利于將正確的AT指令轉移到單片機中,筆者曾經調GSM模塊的時候,很多坑就是栽在這里了,
正式開始
以下操作均關閉”加回車換行”選項
0) 與模塊試連接:(可選)
??AT\r\n
??回應:OK\r\n
可用于檢驗模塊作業是否正常,波特率是否正確
1) 設定 wifi 模式:
??AT+CWMODE=1\r\n
??回應:OK\r\n
設定為STA模式,對應表如下:
| 數字 | WiFi應用模式 |
|---|---|
| 1 | STA(Station)模式 |
| 2 | AP模式 |
| 3 | AP+Station模式 |
2) 重啟生效:
??AT+RST\r\n
??回應:OK\r\n
一次重啟后就不需要重啟了(有的模塊貌似不重啟也行,這個大家就看著來吧)
3) 連接路由:
??AT+CWJAP=“ssid”,“password”\r\n
??回應:OK\r\n(有的模塊回的是CONNECT OK\r\n)
稍等1-2秒中,會回一個GOT IP,看到這個就正式連上路由器了,
4) 查詢設備IP(可選):
??AT+CIFSR\r\n
??回應:192.168.3.106\r\n
5) 連接到服務器:
??AT+CIPSTART=“TCP”,“192.168.2.178”,8888\r\n
??回應:OK\r\n
傳入協議、服務器 IP、埠號,HTTP協議是TCP協議的封裝,所以這里寫TCP即可,
6)開啟透傳模式:
??AT+CIPMODE=1\r\n
??回應:OK\r\n
7)通知模塊開始資料傳輸:
??AT+CIPSEND\r\n
??回應:
這一步操作后,模塊會回復一個“>”,代表接下來的所有串口數碼均為資料,不決議成指令,
8) 發送資料:
??GET /Api/sensor_info_update?id=1&bty=30&temp=0698\r\n\r\n
??回應:服務器回傳的資料
幾點注意:
1.這是用我搭的服務器測驗,上面的http頭少寫了也并沒有報任何錯誤,貌似也沒什么影響,其它博主寫的完整版舉例為:
GET /api/dgnjd8954 HTTP/1.1\r\n
Content-Type: application/json;charset=utf-8\r\n
Host: www.liefyuan.top\r\n
Connection: Keep Alive\r\n\r\n
2.尤其注意GET之后的空格,空格是有意義的
3.注意結尾是兩個\r\n!!!
4.在這里就可以多次與服務器互動了,因為現在是透傳模式,
5.有趣的是這個TCP表現的真的很像HTTP,服務器關閉再開啟,8266不用進行重連操作,直接在透傳界面發資料就可以了,
9)退出透傳:
??+++
??回應:無
注意:這里沒有\r\n了,就是發送+++就行了
10)還想再開始透傳咋辦:
??從步驟7執行.
完整流程及演示效果
記事本中:

串口助手中:

服務器后臺:

Web前端:

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/220953.html
標籤:其他
