?合宙4G-Cat.1模組支持三種功耗模式:
- 常規(guī)模式
- 低功耗模式
- PSM+模式
用戶可以根據(jù)不同的應(yīng)用場(chǎng)景,按需選擇不同的合宙4G-Cat.1模組功耗模式,以及三種功耗模式之間的相互轉(zhuǎn)換。
合宙4G-Cat.1模組優(yōu)異的低功耗表現(xiàn),既有來自硬件設(shè)計(jì)的加持,也有軟件協(xié)議算法的幫助。除實(shí)驗(yàn)室數(shù)據(jù)外, 合宙更關(guān)注實(shí)網(wǎng)環(huán)境下的功耗表現(xiàn), 呈現(xiàn)給用戶的效果更多以實(shí)網(wǎng)在線表現(xiàn)為準(zhǔn)。
?
?
很多客戶的實(shí)際應(yīng)用場(chǎng)景,是不需要和服務(wù)器保持長(zhǎng)連接的,一天甚至一周上傳一兩次數(shù)據(jù),就能滿足實(shí)際的項(xiàng)目需求了。
如果用合宙推薦的第二種低功耗模式,有些大材小用,針對(duì)這種情況——可以使用PSM+模式。
今天,帶大家過過PSM+模式下——LuatOS開發(fā)代碼。
一、主要硬件準(zhǔn)備
這里大致說下需要準(zhǔn)備的硬件條件:
- 合宙Air780E全I(xiàn)O開發(fā)板一塊:
測(cè)試前需要將開發(fā)板上端USB下方的C2處ESD吹掉,要不會(huì)有大約20微安的漏電流。 - 支持?jǐn)?shù)據(jù)傳輸?shù)腢SB線一根;
- 一個(gè)可調(diào)電源:
可調(diào)電源最好是能精確的捕捉到μA電流的電源,本次筆者使用的是合宙自研的Air9000P手持可調(diào)電源。
?
二、PSM+超低功耗示例源碼下載
本文示例中用到的代碼,可以在這里gitee.com/openLuat/LuatOS-Air780E/tree/master/demo/pm
需要用的代碼在“780E_Lowpower”文件夾目錄下:
?
如果您手上是其他模組,如Air780EP或者Air780EPS,則可以查看Air780EP/Air780EPS對(duì)應(yīng)倉(cāng)庫(kù)下的 pm文件夾 。
三、PSM+超低功耗示例源碼
接下來,我們開始進(jìn)行PSM+超低功耗示例源碼的大致講解。
3.1 main.lua
LuatOS中,代碼的起始位置是從main.lua第一行開始的,本文使用的是 PSM+模式 ,所以打開第12行的注釋,屏蔽第11行的代碼。
?
3.2 psm_plus.lua
1)設(shè)置服務(wù)器
進(jìn)入psm_plus.lua可以看到:
?
在這里,改成用戶自己使用的服務(wù)器的IP/域名以及端口號(hào);如果僅作測(cè)試,也可以使用合宙提供的測(cè)試服務(wù)器。
進(jìn)入后選擇打開TCP/UDP,根據(jù)用戶服務(wù)器類型自行選擇。
?
打開后,如下圖紅框所示位置即是IP和端口號(hào):
?
local period = 36060*1000 --3小時(shí)喚醒一次
這一句是喚醒時(shí)間的設(shè)置,時(shí)間設(shè)置喚醒的時(shí)間單位為ms。所以如果你有更長(zhǎng)時(shí)間的喚醒需求,如一天喚醒一次,可以改動(dòng)最前面的3為24。
特別提醒:
這個(gè)TCP服務(wù)器僅能當(dāng)作測(cè)試來用,刷新一下網(wǎng)頁或者你電腦網(wǎng)絡(luò)有波動(dòng)斷網(wǎng)一下,就會(huì)斷開,重新打開TCP端口就會(huì)變。
2)獲取喚醒原因
?
上面兩句是獲取了一下當(dāng)前喚醒的原因,是正常開機(jī),還是設(shè)置的定時(shí)器啟動(dòng),或是串口/AGPIO喚醒。
3)testTask函數(shù)
直接拉到psm_plus.lua最后一行;其實(shí)上面所有的函數(shù)都是基于最后一行的task跑的:
?
本句的意思是啟動(dòng)一個(gè)task,在task里運(yùn)行第14行的testTask函數(shù),并傳入了d1Name這個(gè)變量,傳入了netCB這個(gè)回調(diào)函數(shù),以及給testTask傳入了server_ip和server_port這兩個(gè)參數(shù)。
接下來,我們看看testTask這個(gè)函數(shù)的前一小段:
?
先判斷了一下當(dāng)前喚醒是什么原因喚醒的,并將對(duì)應(yīng)原因賦值給了一個(gè)叫做txData的變量,并且判斷了下是上電開機(jī)還是休眠喚醒。
如果是休眠喚醒,則主動(dòng)退出飛行模式(因?yàn)槟=M在休眠的時(shí)候會(huì)進(jìn)入飛行模式,減小因?yàn)榭赡艿木W(wǎng)絡(luò)波動(dòng)引起的功耗增大等異常)。
下面這一段就是與TCP服務(wù)器鏈接的全過程,如果鏈接失敗會(huì)重連3次:
?
?
接下來這段配置了uart1的波特率為9600,方便外部串口設(shè)備從串口喚醒模組(注:9600狀態(tài)下喚醒模組比較方便,如果是115200或其他波特率,可能需要發(fā)送多次數(shù)據(jù)才能走串口喚醒模組)。
如果不影響產(chǎn)品功能,需要將所有AGPIO在休眠狀態(tài)下的高電平輸出關(guān)閉,可以進(jìn)一步節(jié)省耗電,比如本示例中對(duì)GPIO32的操作就是這一原因。
關(guān)于AGPIO和GPIO對(duì)應(yīng)編號(hào),如下圖所示:
?
?
最后這段代碼,啟動(dòng)了深度休眠也就是PSM+模式的定時(shí)器:
?
后面的 period參數(shù), 就是腳本最上面我們?cè)O(shè)置的定時(shí)休眠喚醒時(shí)間;后面進(jìn)入飛行模式,是避免因?yàn)榛揪W(wǎng)絡(luò)波動(dòng)導(dǎo)致的異常功耗;然后,才真正進(jìn)入了PSM+模式。如果進(jìn)入不成功,15秒后會(huì)重啟模組。
- 如果是串口喚醒,那么服務(wù)器會(huì)收到”uart1 wakeup“的數(shù)據(jù);
- 如果是GPIO喚醒,那么服務(wù)器會(huì)收到"pad wakeup";
- 如果是定時(shí)器喚醒,那么服務(wù)器會(huì)收到"timer wakeup";
- 如果當(dāng)前是上電開機(jī)去鏈接服務(wù)器,那么服務(wù)器會(huì)收到"normal wakeup"。
在沒有數(shù)據(jù)發(fā)送的時(shí)候,模組實(shí)測(cè)待機(jī)功耗為下圖的3μA:
?
今天的內(nèi)容就分享到這里啦,你學(xué)會(huì)了嗎?
審核編輯 黃宇
-
4G
+關(guān)注
關(guān)注
15文章
5618瀏覽量
123993 -
超低功耗
+關(guān)注
關(guān)注
5文章
261瀏覽量
19088 -
模組
+關(guān)注
關(guān)注
6文章
1769瀏覽量
32260 -
PSM
+關(guān)注
關(guān)注
1文章
45瀏覽量
14095
發(fā)布評(píng)論請(qǐng)先 登錄
從0到1,10+年資深LabVIEW專家,手把手教你攻克機(jī)器視覺+深度學(xué)習(xí)(5000分鐘實(shí)戰(zhàn)課)
【迅為RK3568開發(fā)板NPU實(shí)戰(zhàn)】別再閑置你的NPU!手把手教你玩轉(zhuǎn)RKNN-Toolkit2 的使用
手把手教你AT指令A(yù)PN設(shè)置:專網(wǎng)連接零門檻!
RT-Thread Nano硬核移植指南:手把手實(shí)現(xiàn)VGLite圖形驅(qū)動(dòng)適配 | 技術(shù)集結(jié)
【精選直播】手把手教你做PC第十二課:WIFI 驅(qū)動(dòng)框架適配
手把手教你如何調(diào)優(yōu)Linux網(wǎng)絡(luò)參數(shù)
正點(diǎn)原子Linux系列全新視頻教程來啦!手把手教你MP257開發(fā)板,讓您輕松入門!
GPU顯卡維修避坑指南:手把手教你識(shí)別行業(yè)套路!
《零基礎(chǔ)開發(fā)AI Agent——手把手教你用扣子做智能體》
《手把手教你做星閃無人機(jī)—KaihongOS星閃無人機(jī)開發(fā)實(shí)戰(zhàn)》系列課程課件匯總
《手把手教你做PC-KaihongOS筆記本電腦開發(fā)實(shí)戰(zhàn)》課件匯總
手把手教你!4G模組Air780EPM——GPIO的設(shè)計(jì)說明
4G模組PSM+超低功耗,手把手教你!
評(píng)論