知識分享:Air780E軟體之UDP應用示例

电子老师傅發表於2024-11-08
一、UDP概述

UDP(使用者資料包協議,UserDatagramProtocol)是一種無連線的、不可靠的傳輸層協議,主要用於實現網路中的快速通訊。以下是UDP通訊的主要特點:

1.1 無連線通訊:

UDP在傳送資料之前不需要建立連線,這大大減少了通訊的延遲。傳送方只需將資料包封裝成UDP報文,並附上目的地址和埠號,即可直接傳送。

UDP以報文為單位進行資料傳輸,每個報文都是獨立的。這種面向報文的特性使得UDP能夠保持資料的完整性,並且便於進行錯誤檢測和處理。

1.2 高效性:

UDP的頭部結構非常簡單,只包含必要的欄位,如源埠、目的埠、資料長度和校驗和。這種簡潔的頭部設計使得UDP在處理資料包時更加高效,減少了網路延遲。

1.3 實時性:

UDP通訊具有較快的傳輸速度,適用於對實時性要求較高的應用場景,如視訊通話、線上遊戲等。在這些場景中,即使資料包偶爾丟失或延遲,也不會對整體功能產生嚴重影響。

1.4 不可靠傳輸:

UDP不保證資料包的順序性、完整性和可靠性。資料包在傳輸過程中可能會丟失、重複或亂序到達。因此,UDP通訊需要應用層自行處理這些問題,如實現錯誤檢測、資料重傳等機制。

1.5 面向報文:

二、準備硬體環境

“古人云:‘工欲善其事,必先利其器。’在深入介紹本功能示例之前,我們首先需要確保以下硬體環境的準備工作已經完成。”

2.1 Air780E開發板

本demo使用的是Air780E核心板,如下圖所示:

圖片

此核心板的詳細使用說明參考:
https://docs.openluat.com/air780e/product/

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

2.2 SIM卡

請準備一張可正常上網的SIM卡,該卡可以是物聯網路卡或您的個人手機卡。

特別提醒:請確保SIM卡未欠費且網路功能正常,以便順利進行後續操作。

2.3 PC電腦

請準備一臺配備USB介面且能夠正常上網的電腦。

2.4 資料通訊線

請準備一根用於連線Air780E開發板和PC電腦的資料線,該資料線將實現業務邏輯的控制與互動。您有兩種選擇:

  • USB資料線(其一端為Type-C介面,用於連線Air780E開發板)。通常,這種資料線的外觀如下示意圖所示:

圖片

普通的手機USB資料線一般都可以直接使用;

  • 資料線是USB轉TTL串列埠線。通常,這種資料線的外觀如下示意圖所示:

圖片

在本教程中,我們將採用以下資料線配置進行測試和資料檢視:

  • 第一種:USB資料線:此資料線不僅用於為測試板供電,還用於檢視資料日誌。其一端為Type-C介面,連線Air780E開發板;另一端為標準USB介面,連線PC電腦。

  • 第二種:USB轉TTL串列埠線:此資料線主要用於UDP-UART資料的檢視。其一端為USB介面,連線PC電腦;另一端為TTL串列埠介面,連線Air780E開發板,以便進行串列埠通訊和資料傳輸。

2.5 組裝硬體環境

2.5.1 請按照SIM卡槽上的指示方向正確插入SIM卡,務必確保插入方向正確,避免插反導致損壞!

通常,插入SIM卡的步驟如下:

  • 將SIM卡的金屬接觸面朝下,對準卡槽的開口。

  • 用力平穩地將SIM卡推入卡槽,直至聽到“咔嚓”一聲,表示SIM卡已正確安裝到位。

圖片圖片

2.5.2 USB資料線,連線電腦和Air780E開發板,如下圖所示:

圖片

三、準備軟體環境

“凡事預則立,不預則廢。”在詳細闡述本功能示例之前,我們需先精心籌備好以下軟體環境。

3.1 Luatools工具

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

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

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

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

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

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

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

圖片

3.2 燒錄程式碼

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

整體壓縮檔案:內含有檔案一:Core韌體和檔案二:UDP-UART指令碼檔案,如圖所示。

圖片

3.2.1 壓縮檔案:完整檔案包

3.2.2 壓縮包內部檔案

檔案一:Core韌體

檔案二:UDP-UART指令碼檔案

3.2.3 找到燒錄的韌體檔案

官網下載,底層core下載地址:LuatOS底層core注:本demo使用如圖所示韌體

圖片

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

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

3.2.5 識別4G模組的boot引腳

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

具體到Air780E開發板,

  • 當我們模組沒開機時,按著BOOT鍵然後長按POW開機。

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

圖片

3.2.6 識別電腦的正確埠

判斷是否進入BOOT模式:-模組上電,此時在電腦的裝置管理器中,檢視串列埠裝置,如下圖:

圖片

-進入boot下載模式,如下圖所示:

圖片

-這時候,硬體連線上就緒狀態,恭喜你,可以進行燒錄了!

3.2.7 新建專案

首先,確保你的Luatools的版本大於或者等於3.0.6版本.

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

圖片

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

圖片

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

圖片

3.2.8 開始燒錄

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

圖片

圖片

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

圖片

3.3 合宙TCP/UDPweb測試工具

為了方便測試,合宙提供了免費的不可商用的TCP/UDPweb測試工具:合宙TCP/UDPweb工具(luatos.com)

詳細使用說明參考:合宙TCP/UDPweb測試工具使用說明。

圖片

圖片

3.4 PC端串列埠工具

LLCOM的下載連結:LLCOM,詳細使用說明可以直接參考下載網站。

  • 串列埠接線方式:Air780提供三個Uart.

MAIN_UART:通用串列埠,可用於AT命令和資料傳輸最大波特率921600bps,預設波特率自適應9600-115200bps支援硬體流控(RTS/CTS)

AUX_UART:通用串列埠

DBG_UART:用於輸出除錯資訊

圖片

注意:

  • 以上PinOut圖示,對應的V1.8的開發板,版本號在板子絲印上可查閱。

  • V1.4的開發板,由於LCD腳有差異,圖示的LCD_RS/LCD_CLK實際位於開發板管腳編號06/05的UART2/AUX_UART腳,不在編號11/14腳。

  • V1.8的開發板17腳改為VBAT.

3.4.1 LLCOM工具設定:初始配置

圖片

3.4.2 資料傳送前的配置

圖片

四、UDP-UART透傳功能實現的概述

本文教你怎麼使用luatos指令碼語言,就可以讓合宙4G模組連線上一個UDP伺服器,並且模組和伺服器之間實現資料的雙向傳輸!

4.1 本教程實現的功能定義

  • 透過網頁端啟動一個UDP伺服器;

  • 4G模組插卡開機後,連線上UDP伺服器;

  • 4G模組向UDP伺服器傳送"UDPCONNECT",伺服器可以收到資料並且在網頁端顯示;

  • UDP伺服器網頁端向4G模組傳送datafromUDPserver,4G模組可以收到資料並且透過串列埠輸出顯示;

4.2 文章內容引用

  • 780E開發板軟硬體資料

  • 以上介面函式不做詳細介紹,可透過此連結檢視具體介紹:socket-網路介面-LuatOS文件

4.3 核心指令碼程式碼詳解

4.3.1 串列埠初始化

本文示例:串列埠使用MAIN_UART(uart1)

圖片

4.3.2 資料接收回撥:搭建響應橋樑

這裡使用uart.rx介面,和以zbuff的方式儲存從uart1外部串列埠收到的資料--收取資料會觸發回撥,這裡的"receive"是固定值不要修改。

圖片

4.3.3 UDP網路配置:鋪就資料通道

圖片

4.3.4 UDP至串列埠透傳:資料無縫流轉

圖片

4.3.5 串列埠至UDP反透傳:資訊雙向傳遞

圖片

4.4 成果演示與深度解析:影片+圖文全面展示

4.4.1 成果執行精彩呈現

圖片

4.4.2 完整例項深度剖析

圖片

五、總結

UDP-UART彙總:

  • UDP(使用者資料包協議)是一種無連線的傳輸層協議,它提供不可靠的服務,不保證資料包的順序、完整性或正確性,但具有較低的時延和開銷。UDP常用於需要快速傳輸且對丟包不太敏感的應用,如實時音影片、線上遊戲等。

  • UART(通用非同步收發傳輸器)是一種序列通訊協議,用於在計算機和其他裝置之間傳輸資料。UART通訊是非同步的,意味著每個資料包的傳送和接收是獨立的,不需要時鐘訊號來同步。UART通訊通常用於低速裝置之間的連線,如微控制器、感測器等。

  • 將UDP與UART結合起來,通常是在嵌入式系統或物聯網(IoT)應用中,需要將裝置上的資料透過網路傳輸到遠端伺服器或其他裝置時。在這種情況下,UART可能用於裝置內部的序列通訊,而UDP則用於裝置之間的網路通訊。例如,一個基於微控制器的裝置可能透過UART介面收集感測器資料,然後透過UDP協議將這些資料傳送到遠端伺服器進行分析或儲存。

  • 需要注意的是,UDP和UART是不同層次的協議,UDP位於傳輸層,而UART位於物理層和資料鏈路層(在某些上下文中,可能被視為一種簡單的通訊介面)。它們各自在其層次上發揮作用,但可以在某些應用場景中結合使用以實現裝置到網路的通訊。

六、常見問題

6.1 UDP是否支援單向/雙向認證?

UDP本身不直接支援單向或雙向認證。UDP是一種無連線的協議,主要用於實時應用,如IP電話和視訊會議,它不保證資料的可靠交付。雖然UDP本身不提供認證功能,但可以在應用層或透過網路裝置實現使用者認證。這種認證可以在連線建立的起始階段進行,並且可以透過多種方式實現,包括單向認證(如客戶端向伺服器提供認證資訊)和雙向認證(雙方相互驗證身份)。具體實現方式取決於應用場景和需求。

七、擴充套件

7.1 關於TCP和UDP

TCP(TransmissionControlProtocol,傳輸控制協議)和UDP(UserDatagramProtocol,使用者資料包協議)都是網路層之上的傳輸層協議,它們在網路通訊中扮演著重要的角色,但有著顯著的區別。以下是TCP和UDP的簡化對比:

7.2 連線性:

  • TCP:面向連線。在資料傳輸之前,需要先建立連線(三次握手),確保資料傳輸的可靠性。

  • UDP:無連線。資料傳輸前不需要建立連線,直接傳送資料包。

7.3 可靠性:

  • TCP:提供可靠的傳輸服務。透過確認應答、超時重傳、錯誤校驗等機制,確保資料按順序、無錯誤地傳輸。

  • UDP:不保證資料的可靠性。資料包可能會丟失、重複或亂序到達。

7.4 速度:

  • TCP:由於需要建立連線和進行各種可靠性檢查,TCP的傳輸速度相對較慢。

  • UDP:沒有連線建立和可靠性檢查的開銷,UDP的傳輸速度通常更快。

7.5 應用場景:

  • TCP:適用於需要可靠傳輸的應用場景,如網頁瀏覽、檔案傳輸等。

  • UDP:適用於對實時性要求較高、但對資料可靠性要求不高的應用場景,如影片流、音訊流、線上遊戲等。

7.6 流量控制:

  • TCP:具有流量控制和擁塞控制機制,能夠根據網路狀況調整資料傳輸速率。

  • UDP:沒有流量控制和擁塞控制機制,資料傳送速率完全取決於應用程式。

7.7 頭部開銷:

  • TCP:頭部開銷較大,包含源埠、目的埠、序列號、確認號、視窗大小等多個欄位。

  • UDP:頭部開銷較小,僅包含源埠、目的埠、長度和校驗和等欄位。

相關文章