天天看點

ESP8266使用AT指令發送GET方式HTTP請求

ESP8266使用AT指令發送GET方式HTTP請求

    • 寫在前面
    • 好的建議
    • 正式開始
    • 完整流程及示範效果

寫在前面

今天開始調試ESP8266子產品,想要使用它以序列槽AT指令的方式發送GET請求,用來上報資訊給伺服器端。在查找資料和實驗的過程中發現網上的講解并不是詳細,東拼西湊看了幾篇才走下來,在此寫一個盡量“清楚明白”的文章,歡迎大家一起交流。

好的建議

1.建議大家現在每次都記事本上寫AT指令,然後複制到序列槽助手上去,這樣:

  1. 不會誤操作:有的序列槽助手會将回車當作發送指令,容易誤動作。
  2. 記錄可以保留:調過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執行.

完整流程及示範效果

記事本中:

ESP8266使用AT指令發送GET方式HTTP請求

序列槽助手中:

ESP8266使用AT指令發送GET方式HTTP請求

伺服器背景:

ESP8266使用AT指令發送GET方式HTTP請求

Web前端:

ESP8266使用AT指令發送GET方式HTTP請求

繼續閱讀