本篇文章以Air724UG模組為例,解讀低功耗4G模組軟件的語音通話,呈現實用教程供大家參考。
Air724UG模塊的4G通信功能,通過VoLTE技術實現高清語音通話。
在通話過程中,聲音信號通過 MIC 捕捉并轉換為數字音頻數據,經4G網絡實時傳輸至對方設備。同時,Air724UG 支持揚聲器(Speaker)輸出、耳機(Headset)輸出以及聽筒(Handset)輸出等多種音頻輸出模式,確保用戶在不同場景下都能獲得清晰的通話體驗。
這一應用廣泛適用于物聯網設備中的遠程通信、語音交互等場景,為用戶提供便捷、高效的通話服務。
二、準備硬件環境
古人云:工欲善其事,必先利其器。在深入介紹本功能示例之前,我們首先需要確保以下硬件環境的準備工作已經完成。
2.1 Air724UG 開發板
本 demo 使用的是 Air724UG_A14 開發板,如下圖所示:
此開發板的詳細使用說明參考:
https://docs.openluat.com/air724ug/product/
Air724UG 產品手冊中的開發板硬件資料中《EVB_Air724UG_A14 開發板使用說明.pdf》;開發板使用過程中遇到任何問題,可以直接參考這份使用說明 pdf 文檔。
2.2 SIM 卡
請準備一張可正常上網的SIM卡,該卡可以是物聯網卡(一般不能支持)或您的個人手機卡。
特別提醒:
請確保SIM卡未欠費且網絡功能正常,以便順利進行后續操作。
2.3 PC 電腦
電腦操作系統為:
WIN7以及以上版本的WINDOWS系統。
2.4 小喇叭
2.5 數據通信線
請準備一根用于連接 EVB_Air724UG_A14 開發板和 PC 電腦的數據線,該數據線將實現業務邏輯的控制與交互。
USB 數據線:此數據線不僅用于為測試板供電,還用于查看數據日志。其一端為 Micro-B 接口(俗稱老安卓口),用于連接 EVB_Air724UG_A14 開發板;另一端為標準 USB 接口,連接 PC 電腦。
2.6 組裝硬件環境
2.6.1 請按 SIM 卡槽指示方向正確插入 SIM 卡,避免插反損壞
通常,插入 SIM 卡的步驟如下:
將 SIM 卡的金屬卡槽下滑打開。
平穩地將 SIM 卡放入卡槽。
上滑關閉卡槽。
2.6.2 USB 數據線,連接電腦和 EVB_Air724UG_A14 開發板,如下圖所示:
2.6.3 小喇叭和 EVB_Air724UG_A14 開發板連接,如下圖所示:
三、準備軟件環境
“凡事預則立,不預則廢?!痹谠敿氷U述本功能示例之前,我們需先精心籌備好以下軟件環境。
3.1 Luatools 工具
要想燒錄 LuatOS 固件到 4G 模組中,需要用到的調試工具:Luatools;
下載地址:
https://docs.openluat.com/Luatools/
Luatools 工具集具備以下幾大核心功能:
固件與腳本燒錄:便捷地將固件及腳本文件燒錄至目標模組中。
串口日志管理:實時查看模組通過串口輸出的日志信息,并支持保存功能。
串口調試助手:提供簡潔的串口調試界面,滿足基本的串口通信測試需求。
Luatools 下載之后, 無需安裝,放入新建的文件夾后點擊 Luatools_v3.exe 運行,出現如下界面,就代表 Luatools 安裝成功了:
3.2 燒錄代碼
首先要說明一點:腳本代碼, 要和固件的 LuatOS-Air_V4030_RDA8910_TTS_NOLVGL_FLOAT.pac(注:支持 LCD,字庫,圖片,TTS,WIFI Scan,SD 卡,VOLTE) 文件一起燒錄。
整體壓縮文件:內含有四個文件,如圖所示。
3.2.1 壓縮文件:完整文件包
https://docs.openluat.com/air724ug/luatos/app/audio/volte/
3.2.2找到燒錄的固件文件
官網下載,底層 core 下載地址:
https://docs.openluat.com/air724ug/luatos/firmware/
3.2.3正確連接電腦和 4G 模組電路板
使用帶有數據通信功能的數據線,不要使用僅有充電功能的數據線;
3.2.4識別 4G 模組的 BOOT 引腳
在下載之前,要用模組的 BOOT 引腳觸發下載。
具體到 EVB_Air724UG_A14 開發板:
當我們模塊沒開機時,按著下載模式鍵然后長按開機鍵開機。
當我們模塊開機時,按著下載模式鍵然后點按重啟鍵即可。
3.2.5識別電腦的正確端口
判斷是否進入 BOOT 模式:
模塊上電,如果是正常開機運行(沒有進入boot下載模式),此時在電腦的設備管理器中,查看串口設備,如下圖所示(會出現3個或者4個端口):
先按下載模式再按一下重啟,會出現一個端口表示進入了 BOOT 下載模式,如下圖所示:
一旦進入了boot下載模式,表示硬件連接上已經處于就緒狀態,此時就可以使用Luatools工具進行燒錄了!
3.2.6新建項目
首先,確保你的 Luatools 的版本大于或者等于 3.0.6 版本.
在 Luatools 的左上角上有版本顯示的,如圖所示:
Luatools 版本沒問題的話, 就點擊 Luatools 右上角的“項目管理測試”按鈕,如下圖所示:
這時會彈出項目管理和燒錄管理的對話框,如下圖:
3.2.7開始燒錄
選擇 Air724ug 開發板對應的底層 core 和 main.lua 腳本文件。下載到板子中。
一直按下載模式按鍵,再按一下重啟,然后點擊下載底層和腳本,如圖所示:
出現如圖所示,表示已進入 BOOT 模式,可以松開下載模式按鍵,等待下載完成。
下載完成,如圖所示
四、音頻應用-通話(VoLTE)基本用法
4.1 本教程實現的功能定義:
CC 庫在 EVB_Air724UG_A14-LuatOS 中扮演了關鍵角色,它提供了一種高效、靈活且用戶友好的呼叫控制解決方案。本次介紹的目標是幫助開發者迅速了解并精通 CC 庫的 API 接口,以便在 VoLTE 通話中實現精確的呼叫管理和控制功能。
4.2 文章內容引用
EVB_Air724UG_A14 開發板軟硬件資料 :
EVB_Air724UG_A14 產品手冊:https://docs.openluat.com/air724ug/product/
以下接口函數不做詳細介紹,可通過此鏈接查看具體介紹:
audio_API:
https://doc.openluat.com/wiki/21?wiki_page_id=2327#API_9
4.3 API 接口詳解
4.3.1 cc.anyCallExist()
解說:cc.anyCallExist 用于檢查當前是否存在任何活動的通話。這個 API 不需要任何參數。
參數:
無
返回值:
布爾值(true 或 false):如果存在活動的通話,則返回 true;否則返回 false。
舉例:
4.3.2 cc.getState(num)
解說:cc.getState 用于獲取指定通話的狀態。它接收一個通話標識符(可能是通話句柄或電話號碼,具體取決于實現)作為參數,并返回一個表示通話狀態的值(通常是枚舉或常量)。
參數:
num:通話標識符(電話號碼)。
返回值:
通話狀態值(枚舉或常量):表示指定通話的當前狀態,如空閑、來電、正在撥打、已接通、保持等。
舉例:
4.3.3 cc.dial(num, delay)
解說:cc.dial 用于撥打一個電話號碼。它接收兩個參數:要撥打的電話號碼和一個可選的延遲時間(以秒為單位),在撥打之前可以等待一段時間。
參數:
num:要撥打的電話號碼。
delay(可選):可選參數,默認為0延時 delay 毫秒后,才發起呼叫。
返回值:
bool result,true 表示允許發送 at 命令撥號并且發送 at,false 表示不允許 at 命令撥號。
舉例:
4.3.4 cc.hangUp(num)
解說:cc.hangUp 用于掛斷指定通話。它通常接收一個通話標識符(如通話句柄或電話號碼)作為參數,盡管在某些實現中可能不需要參數(如果只有一個活動通話)。
參數:
num(可選):號碼,若指定號碼通話狀態不對,則直接退出,不會執行掛斷,若掛斷時會掛斷所有電話。
返回值:
無。
舉例:
4.3.5 cc.dtmfDetect(enable, sens)
解說:cc.dtmfDetect 用于啟用或禁用雙音多頻(DTMF)信號的檢測。它接收兩個參數:一個布爾值表示是否啟用檢測,以及一個可選的靈敏度值。
參數:
enable:可選參數,默認為niltrue 使能,false 或者 nil 為不使能。
sens(可選):可選參數,默認為3靈敏度,最靈敏為 1。
返回值:
無。
舉例:
4.3.6 cc.accept(num)
解說:cc.accept 用于接聽傳入的通話。它通常接收一個通話標識符作為參數,盡管在某些實現中可能不需要(因為通常只有一個傳入的通話等待接聽)。
參數:
num(可選):號碼,若指定號碼通話狀態不對,則直接退出,不會接通。
返回值:
無
舉例:
4.3.7 cc.transVoice(data, loop, downLinkPlay)
解說:cc.transVoice 通話中發送聲音到對端,必須是 12.2K AMR 格式。
參數:
data:12.2K,AMR 格式的數據。
loop:可選參數,默認為nil是否循環發送,true 為循環,其余為不循環。
downLinkPlay:可選參數,默認為nil聲音是否在本端播放,true 為播放,其余為不播放。
返回值:
布爾值或狀態碼:表示傳輸操作是否成功啟動。具體返回值可能因實現而異。
舉例:
4.3.8 cc.sendDtmf(str, playtime, intvl)
解說:cc.sendDtmf 用于在通話中發送雙音多頻(DTMF)信號。它接收三個參數:一個包含 DTMF 字符的字符串,每個字符的播放時間,以及字符之間的間隔。
參數:
str:dtmf 字符串,僅支持數字、ABCD*#。
playtime:可選參數,默認為100每個 dtmf 播放時間,單位毫秒。
intvl:可選參數,默認為100兩個 dtmf 間隔,單位毫秒。
返回值:
無
舉例
五、音頻應用整體演示
5.1 音頻應用-錄音成果演示與深度解析:視頻 + 圖文全面展示
5.1.11完整實例深度剖析
六、總結
CC 庫的通話管理 API 接口共同構成了通話控制的核心功能,使開發者能夠高效地管理通話的啟動、掛斷、接聽、參數配置以及附加的通話處理功能。通過合理利用這些接口,開發者可以構建出具備出色通話體驗的應用程序,滿足用戶在多種通話場景下的需求。同時,也需關注接口之間的協同配合,以確保通話功能的流暢性和可靠性。
七、常見問題
打不了電話,確認能不能正常注冊上網絡,有沒有欠費。確認卡是否開通 VOLTE 功能, 只有開通 VOLTE 功能才能進行語音通話。固件是否支持 VOLTE 功能,固件需要支持 VOLTE 功能。注:建議使用手機卡測試,普通物聯網卡可能不支持 VOLTE 功能。
audio.setMicGain()通話中設置 mic 增益,必須在通話建立以后設置。
暫不支持視頻通話,且因為只有 30W 像素,效果較差。
八、擴展
通話過程中給對端播放音頻文件:demo 有案例打開代碼中注掉的部分即可進行測試,如圖所示。
分享完畢
審核編輯 黃宇
-
4G
+關注
關注
15文章
5523瀏覽量
119176 -
低功耗
+關注
關注
10文章
2408瀏覽量
103768
發布評論請先 登錄
相關推薦
評論