在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

深度解析:Air8201如何使用LuatOS進行電源管理功能!

青山老竹農 ? 來源:jf_82863998 ? 作者:jf_82863998 ? 2025-03-25 18:23 ? 次閱讀

物聯網應用場景中,設備續航能力直接影響其部署成本與運維效率。Air8201作為新一代低功耗物聯網通信模塊,其硬件架構已內置多種電源管理單元(PMU),但僅依靠硬件優化難以滿足復雜場景的動態功耗需求。

一、電源管理介紹

電源管理是電子設備中非常重要的一部分,尤其是在移動設備和嵌入式系統中。它直接關系到設備的能效、續航時間和整體性能。以下是關于電源管理的一些基本知識和常見概念的介紹。

1.1 電源管理的定義

電源管理指的是在電子設備內部合理利用和調節電源,以保證各個組件在最佳運行條件下工作,同時延長設備的使用時間和確保能量的有效利用。

1.2 電源管理的目標

延長電池壽命:通過有效的充放電管理,使電池在使用過程中更長久地保持能量。

優化能耗:監測各個部件的能耗,減少不必要的能量消耗。

提供穩定的電力供給:確保設備在不同的負載和環境條件下都能穩定工作。

1.3 常見術語

Vbat(電池電壓):指設備中電池當前的電壓值,通常用于評估電池的狀態。

電池電量百分比:代表電池當前剩余能量的百分比,通常用于用戶界面顯示。

充電狀態:指設備是否正在充電,影響電池電量的監測和管理策略。

電池放電曲線:描述不同電壓下電池剩余電量的關系,幫助計算電量百分比。

電池調節電壓:電池在充放電過程中,可以通過一定控制策略或電路設計,維持電池電壓在一定范圍內的穩定。Air8201 的電池電壓上限值默認為 4.2V,可在代碼中自行更改電池電壓閾值。

快速充電:快速充電是一種技術,它允許電池在較短時間內充入更多電量。快速充電技術包括恒流充電與恒壓充電。在快速充電的恒流階段,充電器會以一個固定的電流給電池充電,直到電池電壓達到一個預設的電壓值(Air8201 默認為 4.2V),隨后切換至恒壓模式,此時電流逐漸減小,直到電池充滿后停止充電。

1.4 常見功能

電量監測:通過 ADC(模數轉換)讀取電池電壓,定期更新電量狀態。

充電檢測:利用 GPIO 中斷檢測充電狀態,判斷電池是否處于充電狀態。

自動關機:根據電量百分比自動關閉設備,以防止電池過度放電。

過壓保護:當充電到達電池電壓閾值時會自動停止充電,待剩余電量與滿電量相差超過 120mA 時恢復充電。

用戶接口:通過長按電源鍵執行關機命令,提升用戶體驗。

路徑管理:當插入 USB 既可以給鋰電池充電,同時也可以給主板供電

1.5 實踐中的應用

在實際應用中,電源管理代碼通常涉及多個功能模塊,包括初始化電源,實時監測電量,響應用戶操作和維護設備狀態。一個良好的電源管理系統能夠顯著提高設備的性能和用戶滿意度。

通過合理的電源管理策略,用戶不僅可以延長設備的使用時間,還可以確保設備在關鍵時刻的穩定性和可靠性。在編寫電源管理程序時,應充分考慮設備的使用場景和用戶的需求。

二、演示功能概述

在本演示中,我們將展示電源管理系統的核心功能模塊,以及如何通過不同的技術手段實現有效的電源管理。這些功能旨在提升設備的性能和用戶體驗,以下是主要演示功能的概述:

1.電量監測:本系統通過 ADC(模數轉換器)實時讀取電池電壓,并定期更新電量狀態。通過精確監測電池電壓,可以讓用戶清晰掌握當前電池剩余電量,避免意外關機帶來的困擾。

2.充電檢測:系統利用 GPIO 中斷技術,能夠快速檢測電池的充電狀態。當設備連接到電源時,將自動判斷電池是否在充電狀態,并相應地調整電源管理策略,以優化充電效率和電池壽命。

3.自動關機:根據監測到的電量百分比,該系統能夠在電量過低時自動關機,以防止電池過度放電。這種智能管理能夠保護電池,延長其使用壽命,確保設備在低電量時不會意外關機。

4.用戶接口:系統提供了便捷的用戶交互接口,用戶可以通過長按電源鍵實現關機操作。提升用戶體驗的同時,確保用戶可以方便地控制設備的電源狀態。

通過這些功能的實現,用戶不僅可以延長設備的使用時間,還能夠保證設備在關鍵時刻的穩定性和可靠性。在實際應用中,這些功能能夠有效地提升設備性能,滿足用戶對電源管理的需求。

三、演示硬件環境

3.1 開發板

本文以Air8201 開發板為例

此開發套件的詳細使用說明參考:Air8201 產品手冊中的Air8201 硬件手冊Air8201 的 LuatOS 快速入門

Air8201 產品手冊:https://docs.openluat.com/air8201/product/)

3.2 SIM

在中國大陸環境下,使用移動,電信,聯通的物聯網卡或者手機卡都可以。

3.3 PC 電腦

PC 電腦推薦使用 Windows10 及以上版本。

3.4 數據通信線

1. USB 轉 Type-C 數據線

它的一端是 USB 接口,另一端是 Type-C 接口。

wKgZO2ficzGAdG3fAAGBhIvgLs4503.png

四、演示軟件環境

4.1 Luatools 下載調試工具

Luatools 工具支持最新固件獲取、固件打包、trace 打印及單機燒錄等功能。

工具使用說明參考:

Luatools 下載和詳細使用:https://docs.openluat.com/Luatools/)

4.2 獲取固件及源碼

1. 底層 core 下載地址:https://docs.openluat.com/air8201/luatos/firmware/

本文使用的固件版本為LuatOS-SoC_V2002_Air8201.soc

wKgZPGfic22AYQpfAAGkgy_JlhY084.png

2. demo 位置

本 demo 的主要功能是對電池管理系統的控制和監測

demo 位置參考:https://gitee.com/openLuat/LuatOS-Air8201/tree/master/demo/pm

五、軟硬件資料

5.1 電池充電器說明

注意注意,鋰電池與鋰離子電池不是同一種電池。鋰電池是一個統稱,而鋰離子電池是鋰電池的其中一種類型。

Air8201 選用了一款高度集成的單電池鋰離子電池充電器,該充電器具有系統電源路徑管理,可供空間有限的便攜式應用使用。功能具有涓流充電、恒流充電、恒壓充電、充電終止和自動充電。而且可以自動調節充電電流與充電電壓,或者進入其他模式。

5.1.1 鋰電池充電過程

鋰離子電池的充電過程可概括為四個階段:涓流充電、恒流充電、恒壓充電以及充電終止。以下為這四個階段的詳細介紹。

wKgZO2fic82AJjcMAACzc0ULHAQ138.png

1.涓流充電:

涓流充電用于先對完全放電的電池單元進行預充,也叫恢復性充電。在電池電壓低于 3V 左右時,先采用最大 0.1C 的恒定電流對電池進行充電。(C 是充放電倍率,表示電池在單位時間內充放電電流與電池額定容量的比值。例如,一個電池的額定容量是 1000mAh,1C 就表示以 1000mA 的電流在單位時間內進行充放電,也表示電池在一小時內完全充放電。)

2.恒流充電:

在涓流充電之后,當電池電壓上升到涓流充電閾值以上時,此時提高充電電流從而進行恒流充電。這個階段的電流通常在 0.2C~1.0C 之間,電池電壓隨著恒流充電過程在逐步升高。恒流充電時的電流并不要求十分精確,準恒定電流也可以。

當在線性充電器設計中,電流經常會隨著電池電壓的上升而上升,應盡量減輕傳輸晶體管上的散熱問題。選擇大于 1.0C 的恒流充電并不會縮短整個充電充電周期時間,這種做法是不可取的。

當以更高電流進行充電時,由于電極反應的過壓以及電池內部阻抗上的電壓上升,電池電壓會更快速地上升。恒流充電階段就會變短,同時下面恒壓充電階段的時間會相應增加,因此總的充電周期時間并不會縮短。

3.恒壓充電:

當電池電壓上升到 4.2V(默認值)時,恒流充電結束,開始恒壓充電階段。在此階段,電流會根據電芯的飽和程度逐漸減少,直到達到一個很小的值,可稱為判滿電流值時,充電終止。

4.充電終止:

與鎳電池不同,此時不建議對鋰離子電池進行連續涓流充電。連續涓流充電會導致金屬鋰出現極板電鍍效應。從而使電池不穩定,并且極大可能導致突然的自動快速解體。

這個階段有兩種典型的充電終止方法:一種是采用最小充電電流判斷,當恒壓充電階段的充電電流減小到判滿電流值時終止充電;另一種是從恒壓充電階段開始計時,持續充電兩個小時后終止充電過程。Air8201 選擇的電池充電器充電終止方法為第一種。

5.充電恢復說明:

充電終止后,當電池放電后剩余電量與滿電量相差超過 120mV 時會恢復充電,轉為恒壓充電階段。

5.1.2 鋰電池放電說明

由于鋰電池內部結構所致,在放電時鋰電池不能全部移向正極,必須要保留一部分鋰離子在負極,從而保證在下次充電時鋰離子能夠暢通地嵌入通道。否則,電池壽命將會大大縮短。

1.放電電壓平臺:

鋰電池在放電過程中,電壓會保持在一個相對穩定的范圍內,這個范圍被稱為放電電壓平臺。對于大多數鋰電池來說,這個平臺大約在 3.7V 到 3.0V 之間。

2.放電電流:

放電電流是指電池在放電過程中的電流強度。放電電流的大小會直接影響到電池的放電時間和壽命。大電流放電時會導致電池溫度升高,也可能會縮短電池壽命。(鋰電池放電電流不應超過電池容量的 3 倍,例如 1000mAH 電池,放電電流應嚴格控制在 3A 以內,否則會導致電池損壞。)

3.放電截止電壓:

為了保證鋰電池放電后石墨層中仍留有部分鋰離子,就需要嚴格限制最低放電截止電壓,也就是要避免過放電。當電池電壓降到這個值時,電池應停止放電。對于大多數鋰電池,這個截止電壓大約是 2.5V 到 3.0V。

Air8201 在代碼中已經設置當電池電量低于 30% 且兩分鐘內沒有充電時自動關機。

4.放電效率:

放電效率是指電池放電過程中電能轉換的效率。鋰電池放電效率可達到 90% 以上。

5.放電深度:

放電深度是指電池放電時放電量與電池總容量的比率。即放電深度=(放電量/電池總容量)*100% 。(例如,如果一個電池的總容量是 1000mAh,放電到 500mAh,那么放電深度就是 50%。)

6.放電速率:

放電速率是指電池單位時間內放電時放電量與電池額定容量的比值,用充放電倍率 C 表示。(例如,一個電池的額定容量為 1000mAh,如果用 200mA 的電流進行放電,其放電倍率為 0.2C,因為 200mA/1000mAh=0.2。)

7.溫度影響:

鋰電池的放電性能受溫度影響較大。在低溫下,電池的放電性能會下降,而在高溫下,電池的壽命可能會縮短。

8.循環壽命:

鋰電池的循環壽命是指電池可以經歷的充放電次數。一般來說,鋰電池的循環壽命可以達到幾百到幾千次,具體還要取決于電池的類型、使用條件和放電深度。

9.自放電:

鋰電池即使在不使用的情況下也會進行自動放電,這種現象稱為自放電。鋰電池的自放電率相對較低,通常每月 1% 到 2%。

5.2 sensor 庫介紹

sensor 庫是一個傳感器操作庫,用于在 LuatOS 環境中處理各種傳感器的數據交互。它支持多個傳感器的操作,包括 DS18B20 溫度傳感器、DHT11/DHT12 溫濕度傳感器、HX711 稱重傳感器、CS1237 傳感器、WS2812B RGB LED 燈帶以及 SC12A 觸摸傳感器等。

此為sensor 庫 API 接口介紹,大家可自行參考測試。

5.3 Air8201 開發板燒錄說明

5.3.1 選擇固件和腳本

1. 打開 Luatools_v3 工具

2. 點擊項目管理測試

wKgZPGfidHOAUbMGAAEtPjKcT_4393.png

3. 根據圖示操作

注意,大家只需要跟著做到第四步即可,第五步跟著后面的操作再做。

wKgZPGfidLGAcAPcAAOlgUj0q_g415.png

5.3.2 燒錄

1. 將 Air8201 開發板通過 USB 數據線連接至電腦,如下圖所示:

由于 Air8201 單板子沒有復位鍵和 BOOT 鍵,所以數據線與 Air8201 開發板之間還需要接一個 USB_BOOT 板,不過大家放心,Air8201 套件里已經包括了 USB_BOOT 板,不需要單獨購買。 而且特別注意,USB_BOOT 板在接 Air8201 開發板時不用區分正反。

wKgZO2fidOSAUZFEAArsWP6UTPM161.png

2. 根據下方操作進行燒錄

此時就需要大家先點擊 Luatools 工具上的 下載腳本下載底層和腳本,再執行下方操作了。

開發板處于未開機狀態:此時先按住下載模式按鍵(BOOT 鍵)不放,再長按開機鍵(POW 鍵)開機,若不出意外開發板將會進入下載模式,Luatools 工具下載進度條會開始跑,這時便可以松開 BOOT 鍵和 POW 鍵,等到工具提示下載完成即可。

開發板已經處于開機狀態:此時可以先按住 BOOT 鍵不放,再短按復位鍵(RST 鍵)后開發板會重啟并進入下載模式。

5.3.3 不同模式下的端口顯示

1. 正常開機模式

wKgZPGfidTGAVprWAADgJ3q0ZSU431.png


六、功能驗證

6.1 ChargeICLogic.lua 中代碼介紹

該文件中的代碼無需修改,大家直接調用這個文件就行。

6.1.1 代碼說明

該文件中的代碼是一個用 Lua 編寫的腳本,主要用于與充電 IC(集成電路)進行交互,進行狀態監測和控制。

6.1.2 代碼逐步解析

1.注釋部分:

這段注釋用于指出代碼的主要功能,即處理充電 IC 相關的邏輯。

wKgZO2fidXyATxVfAABZfInIRfw825.png

2. 電池上限電壓表

此部分定義了電池上限電壓的不同設置值。Vreg 表包含多個十六進制數,每個數對應不同的電池上限電壓。在 V_CTRL 寄存器中,前四位用來設置電池上限電壓,其余位可以用作其他設置。默認情況下,其他位為 0。

wKgZO2fidbWABIx-AACTd5GsNms624.png

3.快速充電電流表:

這部分定義了快速充電電流的設置值。Ichg表中列出的十六進制數對應于不同充電電流的設置。在 I_CTRL 寄存器中,前三位是設置快速充電電流的,其余位是其他設置,默認為 0; 該電流值是通過電阻 Rsns 計算得出的,Air8201 的 Rsns 值為 1KΩ,經過公式計算后得出Ireg=500mA。

wKgZPGfidfSAD5SOAACfk2hhM5o988.png

4.GPIO 引腳初始化:

獲取一個 GPIO 引腳并對其進行設置。pcb.chargeCmdPin()用于獲取充電命令引腳,gpio.setup將引腳GPIO1設置為輸出模式,且初始化電平為高,同時啟用內部上拉。

wKgZPGfidjqAIfEVAACD0m8VpWw601.png


5.任務初始化:

這部分是主任務的初始化。首先等待 1000 毫秒,然后通過sensor.yhm27xx函數與傳感器進行通信,以獲取設備信息。后面再進行傳感器設備中各寄存器參數配置。

wKgZPGfidnuASK-qAACPQ4feVAs418.png


6.傳感器數據讀取:

通過sensor.yhm27xx函數調用來讀取傳感器的數據。 參數說明:gpi``o_pin是傳感器對應引腳,0x04是傳感器設備 ID,0x08是設備信息寄存器的地址。等待 200 毫秒等待數據返回。

wKgZO2fidrSAOEboAACUSKM2mWg992.png

7.設備存在檢查:

當檢測到傳感器存在時,會進行進一步的設置。此時根據不同寄存器的地址設置不同功能。

wKgZO2fiduuAGBtbAAClKGlZzfA043.png

8.電壓跟隨與快速充電電流設置:

讀取 I_CTRL 寄存器并設置電壓跟隨與快速充電電流。如果操作成功,將會再次讀取配置寄存器并確認設置結果,記錄相關的日志信息。 參數說明:gpio_pin是傳感器對應引腳,0x04是芯片設備 ID 號,0x01是 I_CTRL 寄存器地址,0x02是設置電壓跟隨與快速充電電流為 0.5×Ireg。 特別說明:若需要在同一寄存器中設置多個參數,則需要將參數值進行或運算。(例如,要設置電壓跟隨和快速充電電流為 0.5×Ireg,則參數值為 0x02+0x00=0x02 。快速充電電流表可參考下方表格)

I_CTRL 寄存器地址前三位是設置快速充電電流,其余位是其他設置,默認為 0; Ireg 是電阻 Rsns 配置的電流值,Air8201 的電阻 Rsns 值為 1KΩ,通過公式 Ireg=500/Rsns,得出 Ireg=500mA。

wKgZO2fidxmAdeKmAABG8lF5FsQ090.pngwKgZPGfidzyADRAUAABh8tKHxAU763.png

9. 電池上限電壓設置

讀取 V_CTRL 寄存器并設置電池上限電壓。如果操作成功,將會再次讀取配置寄存器并確認設置結果,記錄相關的日志信息。 參數說明:gpio_pin 是傳感器對應引腳,0x04 是芯片設備 ID 號,0x00 是 V_CTRL 寄存器地址,0x00 是設置電池上限電壓為 4.2V,可參考下方表格。

wKgZPGfid3yARGwOAABTFxIX4cw525.pngwKgZO2fid5iAGrkXAABguHcaVnA354.png

10.異常處理:

如果在讀取傳感器信息時返回結果為假,則說明傳感器不存在,記錄警告日志。

wKgZO2fid9OAcUWnAABp_oOqPGU013.png

6.1.3 總結說明

這段代碼的主要功能是與充電 IC 進行交互以監控其狀態,配置其控制參數,并在不同情況下記錄相關的日志信息。通過這種方式,系統能夠檢測充電 IC 的存在與狀態,并進行相應的初始化與配置,以確保充電過程的正常進行。全程使用異步任務管理,提升系統響應能力。

6.2 pcb.lua 中代碼介紹

該文件中的代碼無需修改,大家直接調用這個文件就行。

6.2.1 代碼說明

這段 Lua 代碼定義了一個名為pcb的模塊,其主要功能是管理和操作硬件的某些特性,特別是與 PCB(印刷電路板)相關的設置和狀態。

6.2.2 代碼逐步解析

1.模塊初始化和變量定義:

這里定義了一個表pcb,用于存放后續的函數。定義了存儲系統的 OTP 區域和硬件的默認版本號以及出廠測試結果的初始值。

wKgZO2fieDaAPvBRAADzXHPICMc323.png

2.讀取 OTP 存儲區和解析硬件版本號的函數:

loadParam函數首先檢查 OTP 是否存在,然后讀取 OTP 存儲區中的數據,解碼 JSON 格式的數據以獲取硬件版本號和出廠測試結果。若解碼失敗或缺少數據,則根據設備型號進行版本號的設置。

wKgZO2fieGyADIIAAAGPgREtFMQ985.png

3.GNSS 電源控制功能:

此函數根據硬件版本控制 GNSS 模塊的電源狀態。通過 GPIO 接口進行電源的開啟或關閉。

wKgZO2fieKKAUnpUAAHyE8E7KoI031.png


4.ES8311 電源引腳的獲取:

根據硬件版本返回 ES8311 控制器對應的電源引腳。

wKgZO2fieNqAZbIhAAD8cY7zB_8186.png

5.充電 IC CMD 引腳的獲取:

此函數根據硬件版本返回充電 IC 的命令引腳。

wKgZO2fieSaAQcaHAAD9tM4d-dI545.png


6.出廠測試結果獲取及版本號管理:

提供了獲取當前硬件版本號和出廠測試結果的方法,以及設置硬件版本號的功能。

wKgZO2fieV2Aas-XAAEiCI8GjVM601.png

6.2.3 總結說明

整段代碼的主要功能是提供對印刷電路板(PCB)相關硬件配置和狀態的管理。通過讀取 OTP 存儲區,程序能夠獲取設備的特定參數(如版本號和出廠測試結果)。此外,它還實現對 GNSS 電源、ES8311 音頻編解碼器以及充電 IC 的控制接口,根據不同的硬件版本提供不同的引腳控制方案。

6.3 batteryManage.lua 中代碼介紹

6.3.1 代碼說明

這段代碼是一個電池管理模塊的實現,主要用于監控和管理電池狀態,包括電壓檢測、充電狀態判斷、電量計算和自動關機功能。

6.3.2 代碼逐步解析

1.模塊定義

創建一個名為M的模塊,定義模塊名稱為“batteryManage”。

wKgZPGfieauALFZ8AABqQf-BOi8184.png


2.引入庫

引入了sys和sysplus庫,這些庫提供了系統和附加功能的支持。

wKgZO2fieeCAa9ElAABr_PfbbLU520.png

3.初始化狀態變量

M.vbat: 當前電池電壓。

M.batteryPercent: 電池電量百分比,初始為 50。

M.isCharge: 標識是否正在充電。

M.BATTERY_UPDATE_INTERVAL: 電池信息更新的時間間隔(秒)。

M.noChargeDuration: 記錄未插入電源的時間。

M.CHARGE_THRESHOLD_TIME: 未充電持續時間的閾值(2 分鐘)。

M.blueLed和M.redLed: 用于設置藍燈和紅燈的狀態,分別用 GPIO 接口進行控制。

wKgZPGfiehmAVzZuAAFnvUIA6kw363.png

4.電池放電曲線

定義一個電池放電曲線數組,該數組存儲對應電量的電壓值,用于通過電壓推算電量百分比。

wKgZO2fiekiACXgaAABOAbGbyS4279.png


5.重置未充電時長

重置未充電計時器的函數。

wKgZO2fieo2Ad_PlAACOxEZwmag118.png

6.關機函數

該函數用于發布關機信號,以請求系統關機。

wKgZPGfiesSAa18rAADBm1XZA68664.png

7.充電狀態檢測

使用 GPIO 中斷回調來檢測充電狀態,如果通過 GPIO 引腳檢測到充電狀態發生變化,將更新充電狀態并檢查電池狀態。

wKgZPGfievaASB3WAABoosuax9M865.png

8.電量百分比計算

根據當前電壓M.vbat計算電池百分比。如果電壓在放電曲線數組的范圍內,則返回相應的電量百分比。

wKgZPGfiey2AZFNCAABscG5FhpY087.png

9.定期檢查電池狀態

定期更新電池電量,讀取電壓并計算電量。如果電量低于 30%,且沒有插入電源的時間超過 2 分鐘,則調用關機函數。

wKgZPGfie2KACnAJAABokm3SriM525.png


10.長按電源鍵關機

實現了長按電源鍵的關機邏輯,按下電源鍵 3 秒后進行關機,松開時取消關機。

wKgZO2fie5mAR9UpAABmHfjsG0M102.png


6.3.3 總結說明

整體而言,該模塊負責監控電池的電壓和充電狀態。它能夠定期更新電量百分比,并在必要時自動關機。此外,該模塊還允許用戶通過長按電源鍵來手動關機。其主要功能是確保設備在電量過低時保護系統不受損壞,同時提供充電狀態的實時反饋。

6.3 main.lua 中代碼介紹

6.3.1 代碼說明

該文件中的代碼使用 Lua 語言編寫,主要用于管理和監控設備的電源和電池狀態。

6.3.2 代碼逐步解析

1.項目和版本信息

這部分定義了項目名稱和版本,并記錄日志信息,便于后續的調試和維護。

wKgZPGfie-CAaUkYAACTMxUJXYI933.png

2.庫的引入

在這里,引入了多個必要的庫文件,包括系統管理庫sys、電路板庫pcb、充電邏輯庫和電池管理庫。通過這些庫,程序可以實現對系統的控制和管理。 特別說明:主要功能代碼已經模塊化到 batteryManage 庫文件中。

wKgZO2fifA-AHun8AAD6jl8me_U243.png

3.開機防抖

這部分代碼用于防止開機時的抖動,并點亮紅色指示燈,以表明設備正在啟動。

wKgZPGfifEiAInMrAACSK-0icFU354.png

4.GPIO 設置

通過gpio.setup配置了兩個引腳:一個用于監測充電狀態,另一個用于電源鍵的回調。

wKgZO2fifH2ALU4TAAEExtyauU8466.png

5.關機處理

這段代碼訂閱了系統關機事件,當設備接收到關機信號時,會調用pm.shutdown()函數進行安全關機。

wKgZO2fifK6AYoW1AACRUq5Li90588.png

6.啟動初始檢查

在系統啟動時,首先進行一次電池充電狀態檢查,并設置一個定時器,每 60 秒更新一次電池電量信息。

wKgZO2fifOqAfXu6AADpabwDEa0362.png

7.日志輸出

此段代碼設置了一個定時器,每隔 5 秒輸出一次當前電池狀態的日志信息,包括電壓、電池電量及充電狀態,便于監控和調試。

wKgZO2fifR6ATkniAAFg4sErK0Y416.png

8.程序運行

最后,sys.run()函數用于啟動系統的主循環,讓程序保持運行狀態。

wKgZPGfifU6AKFtiAAAypgLf5jQ593.png

6.3.3 總結說明

該代碼的主要功能是管理和監控嵌入式設備的電源與電池狀態,具備開機防抖、充電狀態檢測、定時更新電池電量和記錄日志等功能。

6.4 完整代碼展示

此處只展示batteryManage.lua和main.lua。其余完整代碼請下載源碼查看。

batteryManage.lua

wKgZPGfifZ6AJkyyABS9wztIKnY923.png

main.lua

wKgZPGfifeaAKgGxAAemB03Qm3k404.png


6.5 運行結果展示

通過 Luatoos 工具查看

wKgZO2fifiCAbAizAAZhJMiAxdc675.png

七、總結

本文介紹了電源管理系統的基本概念、目標以及在實際應用中的實現方式。通過深入分析電源管理的各個功能模塊,我們了解了電量監測、充電檢測、自動關機和用戶接口等關鍵功能。這些功能共同構成了一個高效且智能的電源管理系統,能夠顯著提升設備的性能和用戶滿意度。

在電源管理實踐中,合理的策略和有效的代碼實施是成功的關鍵。通過實時監測電池狀態和智能控制電源操作,不僅能夠延長設備的使用時間,還能確保設備在關鍵時刻的穩定性與可靠性。這對于以移動設備和嵌入式系統為主的應用場景尤其重要。

未來,我們可以繼續探索更為先進的電源管理技術,比如基于人工智能的預測分析和優化算法,以便進一步提高電源管理的智能化水平。這將為設備的使用者帶來更佳的體驗,使電源管理成為每一款電子設備中不可或缺的一部分。

八、常見問題

1.設備無法開啟或頻繁自動關機

檢查電池電量是否低于安全工作水平,確保設備充電。如果電量很低,請連接電源并充電一段時間再嘗試開機。

2.電池電量顯示不準確

確保電池電壓監測模塊正常工作,檢查 ADC 通道是否正確配置。如有必要,重新校準電池電量百分比計算的映射表。

3.充電狀態無法正確識別

檢查充電檢測的 GPIO 引腳連接是否正常,確認是否存在接觸不良或線路損壞的問題。此外,確保所用充電器和數據線與設備兼容。

4.系統在充電時無法正常運行

檢查是否有其他程序或任務占用過多資源,導致系統不穩定。可以考慮優化系統任務的優先級或關閉不必要的功能模塊。

5.長按電源鍵無反應

確認電源鍵的 GPIO 引腳連接正常,確保其可被正常識別。如果仍然無效,請檢查相關代碼對電源鍵的事件處理是否正確。

6.設備發熱嚴重

設備發熱可能是由于充電速率過高或設備運行負載過重引起的。建議降低負載、優化代碼,或調整充電策略。

7.無法更新固件或腳本

檢查 USB 連接是否正常,確保 Luatools 工具正確識別設備。注意遵循燒錄步驟,并確保所用的固件版本與硬件兼容。

sf

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 電源管理
    +關注

    關注

    115

    文章

    6235

    瀏覽量

    145344
  • 物聯網
    +關注

    關注

    2920

    文章

    45406

    瀏覽量

    381597
  • LuatOS
    +關注

    關注

    0

    文章

    83

    瀏覽量

    2074
收藏 人收藏

    評論

    相關推薦

    MQTT應用看這篇!合宙Air780EP_LuatOS_MQTT應用指南

    Air780EP 是合宙的低功耗4G模組之一,支持LuatOS的腳本二次開發,即使是不太懂技術的老板,也能輕松使用 Air780EP開發產品。 本文應各位大佬邀請,詳細講解了Air7
    的頭像 發表于 08-08 17:13 ?2388次閱讀
    MQTT應用看這篇!合宙<b class='flag-5'>Air780EP_LuatOS</b>_MQTT應用指南

    LuatOS是什么?

    合宙新一代物聯網開源操作系統LuatOS,開啟行業嵌入式開發新生態!開源開放,創新突破,讓萬物互聯更簡單!LuatOS是什么?LuatOS特色及應用LuatOS資料下載及技術支持開源開
    發表于 11-08 06:27

    【合宙Air820開發板試用體驗】之三:認識LuatOS-Air

    LuatOS第一次接觸,感覺很新奇。Lua腳本是內嵌在模塊基礎軟件core中運行的(core編譯生成的文件是.lod文件),Lod中有支持Lua運行的環境,Lua腳本就在這個環境中運行。腳本實現功能
    發表于 12-30 18:33

    合宙LuatOS新版發布

    1LuatOS新版固件今日發布合宙LuatOS-SoC@EC618新版固件——適用基于移芯EC618平臺設計研發的Air780EG、Air780E、
    的頭像 發表于 02-07 14:03 ?1333次閱讀
    合宙<b class='flag-5'>LuatOS</b>新版發布

    合宙LuatOS開發板使用手冊——Air700ECQ

    合宙LuatOS開發板使用說明——Air700ECQ
    的頭像 發表于 08-23 16:28 ?743次閱讀
    合宙<b class='flag-5'>LuatOS</b>開發板使用手冊——<b class='flag-5'>Air</b>700ECQ

    合宙LuatOS產品規格書——Air700EMQ

    本文詳細介紹了合宙LuatOS關于Air700EMQ的產品規格信息
    的頭像 發表于 08-28 15:54 ?1014次閱讀
    合宙<b class='flag-5'>LuatOS</b>產品規格書——<b class='flag-5'>Air</b>700EMQ

    合宙LuatOS產品規格書——Air780EQ

    合宙LuatOS——低功耗4G模組——產品規格書——Air780EQ
    的頭像 發表于 08-29 14:37 ?693次閱讀
    合宙<b class='flag-5'>LuatOS</b>產品規格書——<b class='flag-5'>Air</b>780EQ

    LuatOS與ADC:Air780E模組開發的新篇章!

    今天我們學習的是Air780E模組LuatOS開發之ADC應用,希望能幫助到大家。
    的頭像 發表于 11-07 14:12 ?431次閱讀
    <b class='flag-5'>LuatOS</b>與ADC:<b class='flag-5'>Air</b>780E模組開發的新篇章!

    Air780E模組的ADC之旅 LuatOS開發實例

    今天學習一個新的示例,關于Air780E模組LuatOS開發的ADC應用實例,希望大家有所收獲。
    的頭像 發表于 11-11 09:33 ?413次閱讀
    <b class='flag-5'>Air</b>780E模組的ADC之旅  <b class='flag-5'>LuatOS</b>開發實例

    Air780E模組LuatOS開發的位運算(bit)教程篇!

    本次我們要學習的是4G模組Air780E的LuatOS開發,關于位運算(bit)教程分享給大家。
    的頭像 發表于 11-26 11:58 ?325次閱讀
    <b class='flag-5'>Air</b>780E模組<b class='flag-5'>LuatOS</b>開發的位運算(bit)教程篇!

    藏箱子里Air724UG模組LuatOS開發的HTTP示例!

    今天我們來學習的是我珍藏已久的低功耗模組Air724UG的LuatOS開發HTTP示例,獻給大家。
    的頭像 發表于 11-30 09:42 ?432次閱讀
    藏箱子里<b class='flag-5'>Air</b>724UG模組<b class='flag-5'>LuatOS</b>開發的HTTP示例!

    解析Air780E模組LuatOS開發的隨機數(random) 示例篇

    本文主要解析的是低功耗4G模組Air780E的LuatOS開發隨機數(random)實例,我以整理成文分享給大家。
    的頭像 發表于 11-29 20:23 ?364次閱讀
    <b class='flag-5'>解析</b><b class='flag-5'>Air</b>780E模組<b class='flag-5'>LuatOS</b>開發的隨機數(random) 示例篇

    4G模組Air780E的LuatOS開發之位運算(bit)示例

    本文我要說的是低功耗4G模組Air780E的LuatOS開發,關于位運算(bit)示例,我將詳細解析分享給大家。
    的頭像 發表于 12-02 14:33 ?332次閱讀
    4G模組<b class='flag-5'>Air</b>780E的<b class='flag-5'>LuatOS</b>開發之位運算(bit)示例

    Air8201,助力武裝押運槍支定位

    Air8201 工業引擎 ,主打AirTrack超低功耗定位。 導入了眾多位置服務場景,以往的文章都有談及,本期主要講武裝押運槍支定位場景。 ? 一、行業痛點 在武裝押運場景中,槍支實時定位需滿足三
    的頭像 發表于 02-26 14:27 ?124次閱讀
    <b class='flag-5'>Air8201</b>,助力武裝押運槍支定位

    合宙Air8201,助力武裝押運槍支定位

    Air8201 工業引擎 ,主打AirTrack超低功耗定位。 導入了眾多位置服務場景,以往的文章都有談及,本期主要講武裝押運槍支定位場景。 ? 一、行業痛點 在武裝押運場景中,槍支實時定位需滿足三
    的頭像 發表于 02-26 14:27 ?45次閱讀
    合宙<b class='flag-5'>Air8201</b>,助力武裝押運槍支定位
    主站蜘蛛池模板: 苦瓜se影院在线视频网站 | 精品视频一区二区三区四区五区 | 午夜在线视频观看 | 免费观看视频 | 国产福利萌白酱喷水视频铁牛 | 激情理论片| 黄页网站视频免费 视频 | 69久久夜色精品国产69 | 最新仑乱免费视频 | 狠狠色丁香六月色 | 天天舔天天射天天干 | 四虎网站 | 女生扒开尿口让男生舔 | 久久久蜜桃 | 国内一级特黄女人精品毛片 | 三级黄色一级视频 | 国产精品伦理久久久久 | 欧美日韩一区二区视频图片 | 你懂的手机在线 | 亚洲操图 | 男人透女人超爽视频免费 | 一区二区精品 | 欧美资源在线观看 | 亚洲美女视频一区 | 五月婷婷之婷婷 | 黄色美女网站免费看 | 中文字幕成人乱码在线电影 | 欧美一区二区不卡视频 | 美国三级网 | 国产成人高清 | 欧美在线观看一区二区三 | 黄色视屏免费在线观看 | 午夜毛片在线观看 | 性欧美大胆高清视频 | 99久久国产综合精品国 | 国产精品美女一级在线观看 | 大伊人网 | h视频网站在线 | 白嫩美女一级高清毛片免费看 | 五月激情综合丁香色婷婷 | 国产综合精品久久亚洲 |