樹莓派0降低功耗實踐

2021-10-13 10:14:26 字數 1185 閱讀 8231

安裝lite版本的系統,不帶圖形介面;

最小化安裝各種庫,減少執行的程序數量;

關掉mini hdmi輸出,大約可以節省20-25ma;

關掉板載led,大約可以節省5-10ma;

降低cpu的頻率,這個我沒試。

通過1~4,在沒有負載的情況下,樹莓派0的功耗可以降低到70ma左右。(一篇參考)

我用的max31865模組、雜訊模組執行功耗都在20ma左右,lora模組文件上是發射時110、接收時11ma、休眠時2μa。負載功耗取決於執行的時間佔比,4、5個負載同時連續執行功耗可能超過100ma,因此降低負載功耗關鍵是降低負載的執行時間,即:

降低感測器模組的取樣頻率;

降低通訊模組的收發頻率,沒有收發時使模組處於休眠狀態。

使用樹莓派經常要用到 pyserial 庫,通過樹莓派的uart口接串列埠裝置(如lora)。通訊一般包括收、發兩部分,為了避免丟資料,伺服器程式設計時一般會用單獨的執行緒持續不斷接收報文,**類似:

while self.alive:

msg = uart.read_all()

if msg:#收到新報文

else:#超時收到空報文

這樣的**會給樹莓派0增加 40ma 左右的穩定功耗!

還有乙個庫 pigpio,用來實現軟串列埠和pwm脈衝通訊,我在其他幾篇部落格中測試過,如果用到也需要注意使用方法。

考慮到通訊是影響功耗的重頭,一是lora模組本身,一是pyserial庫,因此要針對性的設計通訊規約,原則上通訊由lora模組發起,而不是伺服器發起lora監聽。由於lora模組之間缺乏協調,相同通道同時傳送會出現訊號在空中碰撞,因此lora模組要根據自己的位址計算傳送時間,比如位址偏差1發射間隔偏差5秒。同時,為了統一裝置的時鐘,伺服器在收到資料後應該反饋帶有時間的報文,裝置收到報文後矯正時鐘,這樣就可以實現通訊的序列了。

在樹莓派0加2塊max31865、1塊雜訊、1塊ttl轉485、1塊lora的情況下,安裝 lite 系統、最小化安裝庫,首測功耗170ma!

關掉板載led和hdmi輸出,功耗為140ma;

將 pyserial 和 pigpio 的呼叫修改為1小時一次,用之前開啟、用完後關閉,lora模組不用時置為休眠狀態,功耗降低到74ma!

超低功耗MCU如何降低功耗

低功耗是mcu的一項非常重要的指標,比如某些可穿戴的裝置,其攜帶的電量有限,如果整個電路消耗的電量特別大就會經常出現電量不足的情況。平時我們在做產品的時候,基本的功能實現很簡單,但只要涉及到關於低功耗的問題就比較棘手了,比如某些可以低到微安級的mcu微控制器,而自己設計的低功耗怎麼測都是毫安級的,電...

(五)降低功耗 並行優化

讓我們從之前的這個公式說起 程式的 cpu 執行時間 指令數 cpi clock cycle time由於減少指令數和降低cpi都不容易做到,因此長期以來計算機科學家和工程師採用的主要優化思路都是提高主頻。一 功耗限制了cpu的極限速度 cpu被稱為超大規模積體電路,這些積體電路由無數的電晶體組成,...

通過降低CPU頻率 達到降低功耗的目的

最近用一台老機子h61 i5 2320 p106 100 作為ai伺服器 系統用的是centos 7。系統對cpu的依賴度不大,能正常開機 集顯能正常輸出就好,主要是依靠 礦卡進行ai計算。然而由於 i5 2320的 tdp 高達95w 開機實測整機待機功耗接近90w cpu gpu 非常的不節能 ...