低功耗4G模組HTTP網路協議應用

电子老师傅發表於2024-11-01

大家好,今天我們來學習合宙Air780E模組LuatOS開發4G通訊中HTTP網路協議的應用,實現模組和伺服器之間資料的傳輸。

一、HTTP概述

1.1 簡介

HTTP是HyperTextTransferProtocol(超文字傳輸協議)的縮寫。HTTP是一個應用層協議,由請求和響應構成,是一個標準的客戶端伺服器模型。HTTP是一個無狀態的協議。HTTP協議通常承載於TCP協議之上,有時也承載於TLS或SSL協議層之上,這個時候,就成了我們常說的HTTPS,所以HTTPS相關的指令只需要參考SSL部分配置連線,其他和http都是一樣的。

HTTP協議的_主要應用場景_有:基於瀏覽器的網頁獲取與表單提交、檔案上傳與下載、移動應用、物聯網裝置的資料上報等。

1.2 請求報文

圖片

低功耗4G模組HTTP網路協議應用

●method:請求方法,GET和POST是最常見的HTTP方法。

●URL:為請求對應的URL地址,它和報文頭的Host屬性組成完整的請求URL。

●Version:協議名稱及版本號。

●Headerlines:HTTP的報文頭,報文頭包含若干個屬性,格式為“屬性名:屬性值”,服務端據此獲取客戶端的資訊。

●Entitybody:是報文體,它將一個頁面表單中的元件值透過param1=value1&m2=value2的鍵值對形式編碼成一個格式化串,它承載多個請求引數的資料。

●請求報文示例如下:

圖片

低功耗4G模組HTTP網路協議應用

1.3 響應報文

圖片

低功耗4G模組HTTP網路協議應用

●version:報文協議及版本。

●statuscode:狀態碼及狀態描述。

●phrase:原因短語。

●Headerlines:響應報文頭。

●Entitybody:響應報文體,即我們真正要的內容。

●響應報文示例如下:

圖片

低功耗4G模組HTTP網路協議應用

注意:sp表示空格,crlf表示回車換行,報文頭和報文體之間要有一行空格

1.4 HTTP請求方法

HTTP客戶端發出請求,告知服務端需要執行不同型別的請求命令,這些命令被稱為HTTP方法。

●GET:獲取資源方法

●POST:傳輸實體資料方法

●HEAD:獲取頭部報文方法

●PUT:傳輸檔案方法

●DELETE:刪除指定資源方法

1.5 HTTP狀態碼

HTTP狀態碼由三個十進位制數字組成,第一個十進位制數字定義了狀態碼的型別。響應分為五類:

●資訊響應(100–199),資訊響應中,伺服器收到請求,需要請求者繼續執行操作;

●成功響應(200–299),資訊響應成功,操作被成功接收並處理;

●重定向,需要進一步操作(300–399),資訊需要被重新定向,需要進一步的操作以完成請求;

●客戶端錯誤(400–499),客戶端錯誤,請求包含語法錯誤或無法完成請求;

●伺服器錯誤(500–599),伺服器錯誤,伺服器在處理請求的過程中發生了錯誤。

二、演示功能概述

本文教你合宙4G模組使用LuatOS開發4G通訊中http網路協議的應用,實現模組和伺服器之間資料的傳輸!

本教程實現的功能定義是:

使用Air780E核心板下載Air780的LuatOS示例程式碼中http的例程進行驗證,包含get請求,post請求,檔案上傳,檔案下載等功能。

三、硬體環境

3.1 Air780E核心板

使用Air780E核心板,如下圖所示:

圖片

低功耗4G模組HTTP網路協議應用

此核心板的詳細使用說明參考:Air780E產品手冊中的<<開發板Core_Air780E使用說明VX.X.X.pdf>>,寫這篇文章時最新版本的使用說明為:開發板Core_Air780E使用說明V1.0.5.pdf;核心板使用過程中遇到任何問題,可以直接參考這份使用說明pdf文件。

3.2 SIM卡

中國大陸環境下,可以上網的sim卡,一般來說,使用移動,電信,聯通的物聯網路卡或者手機卡都行;

3.3 PC電腦

WINDOWS系統,其他暫無特別要求;

3.4 資料通訊線

USB資料線,暫無特別要求;

四、軟體環境

4.1 Luatools工具

要想燒錄AT韌體到4G模組中,需要用到合宙的強大的除錯工具:Luatools;

詳細使用說明參考:Luatools工具使用說明。

Luatools工具集具備以下幾大核心功能:

  • 一鍵獲取最新韌體:自動連線合宙伺服器,輕鬆下載最新的合宙模組韌體。

  • 韌體與指令碼燒錄:便捷地將韌體及指令碼檔案燒錄至目標模組中。

  • 串列埠日誌管理:實時檢視模組透過串列埠輸出的日誌資訊,並支援儲存功能。

  • 串列埠除錯助手:提供簡潔的串列埠除錯介面,滿足基本的串列埠通訊測試需求。

Luatools下載之後,無需安裝,解壓到你的硬碟,點選Luatools_v3.exe執行,出現如下介面,就代表Luatools安裝成功了.

4.2 準備需要燒錄的程式碼

首先要說明一點:指令碼程式碼,要和韌體的bin檔案一起燒錄。

4.2.1 燒錄的底層韌體檔案

底層core下載地址:LuatOS韌體版本下載地址

圖片

低功耗4G模組HTTP網路協議應用

Air780E的底層韌體在Luatools解壓後目錄的LuatOS-SoC_V1112_EC618_FULL.soc

圖片

低功耗4G模組HTTP網路協議應用

4.2.2 燒錄的指令碼程式碼

首先要下載Air780的LuatOS示例程式碼到一個合適的專案目錄,示例程式碼網站:https://gitee.com/openLuat/LuatOS-Air780E

下載流程參考下圖:

圖片

低功耗4G模組HTTP網路協議應用

圖片

低功耗4G模組HTTP網路協議應用

下載的檔案解壓,找到

LuatOS-Air780E-master\demo\http\main.lua,如圖:

圖片

低功耗4G模組HTTP網路協議應用

4.3 燒錄步驟

4.3.1 正確連線電腦和4G模組電路板

使用帶有資料通訊功能的資料線,不要使用僅有充電功能的資料線;

4.3.2 識別4G模組的boot引腳

在下載之前,要用模組的boot引腳觸發下載,也就是說,要把4G模組的boot引腳拉到1.8v,或者直接把boot引腳和VDD_EXT引腳相連。我們要在按下BOOT按鍵時讓模組開機,就可以進入下載模式了。

具體到Air780E開發板:

1、當我們模組沒開機時,按著BOOT鍵然後長按PWR開機。

2、當我們模組開機時,按著BOOT鍵然後點按重啟鍵即可。

圖片

低功耗4G模組HTTP網路協議應用

4.3.3 識別電腦的正確埠

判斷是否進入BOOT模式:模組上電,此時在電腦的裝置管理器中,檢視串列埠裝置,會出現一個埠表示進入了boot下載模式,如下圖所示:

圖片

低功耗4G模組HTTP網路協議應用

當裝置管理器出現了3個連續數字的com埠,並且每個數字都大於4,這時候,硬體連線上就緒狀態,恭喜你,可以進行燒錄了!

4.3.4 用LuatOS工具燒錄

  • 新建專案

首先,確保你的Luatools的版本,上大於3.0.6版本的。

在Luatools的左上角上有版本顯示的,如圖所示:

圖片

低功耗4G模組HTTP網路協議應用

Luatools版本沒問題的話,就點選LuaTOols右上角的“專案管理測試”按鈕,如下圖所示:

圖片

低功耗4G模組HTTP網路協議應用

這時會彈出專案管理和燒錄管理的對話方塊,如下圖:

圖片

低功耗4G模組HTTP網路協議應用
  • 開始燒錄

選擇780E板子對應的底層core和剛改的main.lua指令碼檔案。下載到板子中。

圖片

低功耗4G模組HTTP網路協議應用

點選下載後,我們需要進入boot模式才能正常下載。

圖片

低功耗4G模組HTTP網路協議應用

圖片

低功耗4G模組HTTP網路協議應用

五、API說明

http客戶端:

http.request(method,url,headers,body,opts,ca_file,client_ca,client_key,client_password)

引數

傳入值型別

解釋

string

請求方法,支援GET/POST等合法的HTTP方法

string

url地址,支援http和https,支援域名,支援自定義埠

tabal

請求頭可選例如{[“Content-Type”]=“application/x-www-form-urlencoded”}

string/zbuff

body可選

table

額外配置可選包含timeout:超時時間單位ms可選,預設10分鐘,寫0即永久等待dst:下載路徑,可選adapter:選擇使用網路卡,可選debug:是否開啟debug資訊,可選,ipv6:是否為ipv6預設不是,可選callback:下載回撥函式,引數content_len:總長度body_len:以下載長度userdata使用者傳參,可選userdata:回撥自定義傳參

string

伺服器ca證書資料,可選,一般不需要

string

客戶端ca證書資料,可選,一般不需要,雙向https認證才需要

string

客戶端私鑰加密資料,可選,一般不需要,雙向https認證才需要

string

客戶端私鑰口令資料,可選,一般不需要,雙向https認證才需要

返回值

返回值型別 解釋

int

code,伺服器反饋的值>=100,最常見的是200.如果是底層錯誤,例如連線失敗,返回值小於0

tabal

headers當code>100時,代表伺服器返回的頭部資料

string/int

body伺服器響應的內容字串,如果是下載模式,則返回檔案大小

建立HTTP客戶端

圖片

低功耗4G模組HTTP網路協議應用

六、功能驗證

6.1 GET請求

HTTPGET請求是一種用於從指定資源URI(統一資源識別符號)請求資料的HTTP方法。它通常用於請求伺服器傳送資源(如HTML頁面、圖片等)給客戶端,且請求資訊包含在URL中。

下面根據demo演示HTTP的GET請求用法,示例程式碼如下(具體demo可以點此連結跳轉)

示例如下:

圖片

低功耗4G模組HTTP網路協議應用

對應log:

圖片

低功耗4G模組HTTP網路協議應用

6.2 POST請求

HTTPPOST請求是一種HTTP方法,用於向指定的資源提交資料。與GET請求不同,POST請求的資料包含在請求體中,可以提交大量資料且資料不會顯示在URL中,常用於提交表單資料或上傳檔案等操作。

下面根據demo演示HTTP的POST請求方法提交一個表單,示例程式碼如下(具體demo可以點此連結跳轉)

示例:

圖片

低功耗4G模組HTTP網路協議應用

對應log:

圖片

低功耗4G模組HTTP網路協議應用

6.3 檔案上傳

HTTPPOST請求在檔案上傳場景中發揮著關鍵作用。使用者透過POST請求可以將檔案資料包含在請求體中傳送給伺服器,而不是像GET請求那樣透過URL傳遞。這種方式允許上傳大量資料,包括各種型別的檔案,如圖片、影片、文件等。伺服器接收到請求後,會解析請求體中的檔案資料,並儲存到伺服器上相應的位置。檔案上傳是HTTP應用中常見的功能。

下面根據demo演示HTTP檔案上傳的功能,示例程式碼如下(具體demo可以點此連結跳轉)

示例:

圖片

低功耗4G模組HTTP網路協議應用

對應log:

圖片

低功耗4G模組HTTP網路協議應用

6.4 檔案下載

下面根據demo演示HTTP檔案下載的功能,示例程式碼如下(具體demo可以點此連結跳轉)

示例:

圖片

低功耗4G模組HTTP網路協議應用

對應log:

圖片

低功耗4G模組HTTP網路協議應用

6.5 處理JSON資料

處理json資料主要有兩個函式,json.encode(t)和json.decode(str),參考示例程式碼:

https://gitee.com/openLuat/LuatOS-Air780E/tree/master/demo/json

圖片

低功耗4G模組HTTP網路協議應用

6.6 壓縮和解壓

這個例程用和風天氣的api做演示,請求到的資料配合miniz庫進行解壓,示例程式碼如下(具體demo可以點此連結跳轉)

示例:

圖片

低功耗4G模組HTTP網路協議應用

對應log:

圖片

低功耗4G模組HTTP網路協議應用

也可以參考例程:

https://gitee.com/openLuat/LuatOS-Air780E/tree/master/demo/miniz

圖片

低功耗4G模組HTTP網路協議應用

七、總結

本文件主要介紹4G通訊中http網路協議的應用。講解了HTTP基本原理,GET和POST請求,以及檔案上傳下載、HTTPS加密、JSON資料處理和資料壓縮等高階功能,直接燒錄例程即可測試,旨在實現高效、安全的資料傳輸。

八、常見問題

8.1 HTTP支援多連線嗎

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

8.2 重試多次PDP,HTTP應用一直連線失敗

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

1、使用RESET引腳復位模組

2、極端情況下,直接給模組斷電,再上電,POWERKEY引腳拉低開機

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

因為還有HTTP自帶的請求頭。如何統計流量

8.4 為什麼頻繁請求會失敗?

支援的http連線總數有限數量為tcp連線數量8個,建議一個http連線返回請求結果之後,再去請求下一個連線;不要使用迴圈定時器方式不斷的發起新的http請求。

8.5 專網路卡訪問白名單

用定向Ip的物聯網路卡,需要把域名或IP加入白名單才能使用。如果不加入白名單會出現無法訪問伺服器的情況.

相關文章