AT開發HTTP應用:Air780EP低功耗4G模組

电子老师傅發表於2024-10-16

已經寫了一篇基於Air780EP模組AT開發的FOTA遠端升級指南有客戶朋友詢問能否講講HTTP應用部分?本期特別安排——涵蓋HTTP基本應用流程、GET/POST/SSL請求示例、斷點續傳、常見問題等內容。

Air780EP是一款低功耗4G全網通模組,相容模組行業1618經典封裝,支援OpenCPU開發及全功能數傳AT開發,可廣泛應用於多樣化的物聯網終端。

一、相關準備工作

圖片

AT開發HTTP應用:Air780EP低功耗4G模組

1.1 硬體準備

  • 合宙EVB_Air780EP開發板一套,包括天線、SIM卡;

  • USB線

  • PC電腦

1.2 軟體準備

  • 串列埠除錯工具
    如果沒有準備,推薦使用LLCOM:

  • AT韌體下載

進入AT韌體下載頁面按下Ctrl+F,搜尋AirM2M_780EP_LTE_AT,即可找到Air780EP模組所使用的AT韌體。

本文使用示例為:
AirM2M_780EP_V1007_LTE_AT版本韌體

推薦選用:相關型號韌體名稱後面數字版本號最高的最新relase版本進行除錯。

二、HTTP應用基本流程

合宙低功耗4G模組支援HTTP和HTTPS協議,HTTP應用的基本流程如下:

  1. 啟用PDP

  2. 初始化HTTP服務

  3. 設定HTTP會話引數

  4. 如果要支援SSL,配置SSL引數

  5. 如果使用POST命令,輸入POST資料

  6. 發起HTTP請求

  7. 收到HTTP應答,讀取應答資料

  8. 終止HTTP服務

相關注意事項:

第1步如果出現異常,首先需要排查HTTP連線和請求引數是否正常,透過Postman是否可以請求成功,模組上網是否正常(AT+CEREG?);

第2步到第5步,只要輸入格式正確,基本不會出問題;如果出錯,可以跳過,直接處理第6步的異常;

第6步和第7步如果出現異常:終止HTTP服務,有選擇性的去啟用PDP;然後再有選擇性的啟用PDP,從第2步開始重新執行。

三、HTTP GET請求示例

具體指令和引數使用說明,可參考AT指令手冊:

圖片

AT開發HTTP應用:Air780EP低功耗4G模組

相關注意事項:

01. 請求及應答

傳送AT+HTTPACTION命令後,收到OK僅僅表示4G模組開始處理這條命令,並不表示請求傳送成功,收到了應答。

只有收到+HTTPACTION: n,statusCode,len才表示請求結束,statusCode表示應答成功,其餘都表示應答失敗。

02. 資料大小限制

HTTP應答資料的緩衝區大小為4KB,如果返回的http body資料超過了這個大小,則需要斷點下載——可以使用AT+HTTPPARA命令,透過設定BREAK和BREAKEND引數來實現。

03. HTTP被動斷開

傳送AT+HTTPACTION命令,和伺服器建立了HTTP連線後,如果連線異常被動斷開,會輸出+HTTPACTION: ,,提示。

04. PDP被動啟用

先來看下PDP被動啟用時的AT命令處理序列,如果不理解AT命令含義,請自行參考AT手冊。

+PDP DEACT // 出現PDP去啟用的URC上報
後面如果沒做任何處理,接著做HTTP請求會失敗,可以按照下方的建議處理。

應對處理每次結束,都需要重新走一遍HTTP請求流程:

第一種方法:

AT+CIPSHUT // 關閉移動場景

第二種方法:

AT+CIPSHUT // 關閉移動場景

AT+CGDCONT=5,"IP",""//請填寫實際APN

AT+CGACT=1,5

第三種方法:

AT+CFUN=0 // 進入飛航模式

AT+CFUN=1 // 退出飛航模式

第四種方法:

AT+RESET // 重啟模組

參考下發流程中收到"+SAPBR 1: DEACT"錯誤提示,表示PDP被動去啟用,為異常處理的觸發點。

圖片

AT開發HTTP應用:Air780EP低功耗4G模組

四、HTTP POST請求示例

POST請求流程與GET流程基本一致,只有指令引數:

AT+HTTPACTION=0
變為:
AT+HTTPACTION=1

具體指令和引數使用說明,可參考AT指令手冊:

圖片

AT開發HTTP應用:Air780EP低功耗4G模組

五、HTTPS SSL請求示例

本示例為帶SSL證書雙向驗證功能的HTTPS過程,具體指令和引數使用說明,可參考AT指令手冊:

圖片

AT開發HTTP應用:Air780EP低功耗4G模組

圖片

AT開發HTTP應用:Air780EP低功耗4G模組

六、HTTP斷點續傳示例

在實際的應用場景中,可能需要下載一個非常大的檔案,例如幾百K位元組、幾M位元組,但是4G模組中HTTP可用的記憶體緩衝區Air780EP模組只有4KB左右。當檔案大小超過這個緩衝區時,就要使用斷點續傳功能來分段下載處理了。

下文以“下載一個119345位元組的檔案”為例,來說明如何使用斷點續傳功能(注意:本示例僅僅演示了正常流程的HTTP AT命令,完整流程以及異常處理流程請參考本文應用流程部分)。

圖片

AT開發HTTP應用:Air780EP低功耗4G模組

圖片

AT開發HTTP應用:Air780EP低功耗4G模組

七、常見問題Q&A

以下針對客戶朋友們實際應用中的反饋,整理了HTTP應用中的常見問題:

01. HTTP支援多連線嗎?

目前HTTP僅支援單連線,不支援多連線。

02. HTTPS如何使用?

本文主要描述了基本流程和異常處理,對於HTTPS使用方法沒有做過多描述。這一部分,請自行參考AT指令手冊HTTP章節下《使用方法舉例》中的"帶SSL證書驗證功能的HTTPS流程"使用方法;支援的SSL引數,請自行參考AT+SSLCFG命令說明。如果SSL的引數配置不變,則每次開機執行過程中,僅設定一次即可。

03. 重試多次PDP,HTTP應用一直連線失敗?

如果重試多次PDP啟用,PDP一直啟用失敗,或者HTTP一直請求應答失敗,請嘗試使用如下手段恢復:

  • 使用RESET引腳復位模組;

  • 極端情況下,直接給模組斷電,再上電,POWER KEY引腳拉低開機。

04. HTTP下載的大檔案,如何可靠的傳送給MCU(AT流控)?

需要在斷點續傳流程指令裡開頭加入AT+IFC的配置指令:

AT+HTTPREAD

+HTTPREAD: 3072

...... //此處輸出3072位元組資料

OK

此處的3072位元組資料,是模組透過UART AT口傳送給MCU。在實際傳輸過程中,由於串列埠晶片驅動、MCU端的處理能力、波特率的選擇都存在不確定性,可能會導致MCU端接收到的資料,實際上沒有3072位元組,這就要求UART AT口開啟流控功能。

模組支援硬體流控和軟體流控兩種:

硬體流控,參考如下步驟操作:

  • 模組和MCU的UART口,CTS、RTS要交叉相連

  • MCU端韌體要支援並且開啟硬流控功能

  • MCU端要傳送AT+IFC=2,2命令到模組端,開啟模組端的硬流控功能

軟體流控,參考如下步驟操作:

  • MCU端韌體要支援並且開啟軟流控功能

  • MCU端要傳送AT+IFC=1,1命令到模組端,開啟模組端的軟流控功能

05. 為什麼我只發了10位元組訊息,100次卻消耗了很多流量?

因為還有HTTP自帶的請求頭。

06. 為什麼頻繁請求會失敗?

HTTP連線總數數量有限,且不支援HTTP2多路複用連線,因此建議等一個HTTP連線返回請求結果之後,再去請求下一個連線;不要使用迴圈定時器方式不斷的發起新的HTTP請求。

07. 如何POST檔案?

主要是使用AT+HTTPDATA命令錄入檔案資料後,傳送AT+HTTPACTION=1利用POST上傳。

08. 資料傳送接收快取問題如何解決?

AT版本有快取機制,記憶體中有一個的緩衝區(Air780EP模組AT韌體HTTP快取為4KB),傳送和接受使用的是同一塊緩衝區。

傳送和收到資料後,插入此緩衝區,然後透過AT口輸出URC,提示收到的資料長度;緩衝區滿之後,再收到新資料,會丟棄新收到的資料,並透過AT口輸出URC提示出錯;需要讀取資料時,傳送AT+HTTPREAD命令讀取,可分段讀取,也可全部讀取。

相關文章