博客專欄

        EEPW首頁 > 博客 > 詳解:低功耗4G模組HTTP網絡協議應用!

        詳解:低功耗4G模組HTTP網絡協議應用!

        發布人:13673998452 時間:2025-01-10 來源:工程師 發布文章

        大家好,今天我們來學習Air780E模組LuatOS開發4G通信中HTTP網絡協議的應用,實現模組和服務器之間數據的傳輸。


        一、HTTP概述


        1.1 簡介

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

        HTTP協議的_主要應用場景_有:基于瀏覽器的網頁獲取與表單提交、文件上傳與下載、移動應用、物聯網設備的數據上報等。


        1.2 請求報文

        圖片

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

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

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

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

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

        ●請求報文示例如下:

        圖片

        1.3 響應報文

        圖片

        ●version:報文協議及版本。

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

        ●phrase:原因短語。

        ●Headerlines:響應報文頭。

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

        ●響應報文示例如下:

        圖片

        注意: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核心板


        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固件版本下載地址

        圖片

        Air780E的底層固件在Luatools解壓后目錄的LuatOS-SoC_V1112_EC618_FULL.soc

        圖片


        4.2.2 燒錄的腳本代碼

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

        下載流程參考下圖:

        圖片

        圖片

        下載的文件解壓,找到

        LuatOS-Air780E-masterdemohttpmain.lua,如圖:

        圖片


        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鍵然后點按重啟鍵即可。

        圖片


        4.3.3 識別電腦的正確端口

        判斷是否進入BOOT模式:模塊上電,此時在電腦的設備管理器中,查看串口設備,會出現一個端口表示進入了boot下載模式,如下圖所示:

        圖片

        當設備管理器出現了3個連續數字的com端口,并且每個數字都大于4,這時候,硬件連接上就緒狀態,恭喜你,可以進行燒錄了!


        4.3.4 用LuatOS工具燒錄
        • 新建項目

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

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

        圖片

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

        圖片

        這時會彈出項目管理和燒錄管理的對話框,如下圖:

        圖片

        • 開始燒錄

        選擇780E板子對應的底層core和剛改的main.lua腳本文件。下載到板子中。

        圖片

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

        圖片

        圖片


        五、API說明


        http客戶端:

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


        參數

        image.png

        返回值

        image.png

        創建HTTP客戶端

        圖片


        六、功能驗證


        6.1 GET請求

        HTTPGET請求是一種用于從指定資源URI(統一資源標識符)請求數據的HTTP方法。它通常用于請求服務器發送資源(如HTML頁面、圖片等)給客戶端,且請求信息包含在URL中。

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

        示例如下:

        圖片

        對應log:

        圖片

        6.2 POST請求

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

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

        示例:

        圖片

        對應log:

        圖片

        6.3 文件上傳

        HTTPPOST請求在文件上傳場景中發揮著關鍵作用。用戶通過POST請求可以將文件數據包含在請求體中發送給服務器,而不是像GET請求那樣通過URL傳遞。這種方式允許上傳大量數據,包括各種類型的文件,如圖片、視頻、文檔等。服務器接收到請求后,會解析請求體中的文件數據,并存儲到服務器上相應的位置。文件上傳是HTTP應用中常見的功能。

        下面根據demo演示HTTP文件上傳的功能,示例代碼如下(具體demo可以點此鏈接跳轉)

        示例:

        圖片


        對應log:

        圖片


        6.4 文件下載

        下面根據demo演示HTTP文件下載的功能,示例代碼如下(具體demo可以點此鏈接跳轉)

        示例:

        圖片


        對應log:

        圖片

        6.5 處理JSON數據

        處理json數據主要有兩個函數,json.encode(t)和json.decode(str),參考示例代碼:

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

        圖片


        6.6 壓縮和解壓

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

        示例:

        圖片

        對應log:

        圖片

        也可以參考例程:

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

        圖片


        七、總結

        本文檔主要介紹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加入白名單才能使用。如果不加入白名單會出現無法訪問服務器的情況。


        *博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。




        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 衡阳县| 龙南县| 广平县| 饶河县| 乌兰浩特市| 邮箱| 柘荣县| 安康市| 富蕴县| 江源县| 赣榆县| 辰溪县| 茂名市| 九寨沟县| 石嘴山市| 禄劝| 凤庆县| 黄大仙区| 红原县| 阳朔县| 诏安县| 隆尧县| 永德县| 南平市| 承德县| 紫阳县| 郓城县| 鄂托克前旗| 山西省| 蕲春县| 白沙| 洞头县| 九寨沟县| 铁岭县| 新余市| 托克逊县| 四平市| 克什克腾旗| 瑞丽市| 密山市| 奈曼旗|