更新:
经过几天优化,蓝牙连接下按住按键,功耗从 5.57 mA 降到 0.55 mA,而保持蓝牙连接的闲置状态下,功耗从 470uA 降到 400 uA。
这还没有达到最优化。硬件上,可以加大几个电阻降低功耗;软件上,可以加入休眠模式、调整矩阵扫描频率,进一步省电。量产版本功耗会进一步降低的~
这几天在优化Python键盘的功耗,就来聊一聊功耗。键盘里面跑Python,天生会给人一种功耗很高的感觉,就因为Python的运行速度通常比C慢很多。
那么,跑Python的键盘功耗到底什么水平?
实际测一下才知道,让实测数据来说话,下图中键盘的功耗是0.47mA(这里就用电流来粗糙的表示功耗吧),是电脑通过蓝牙连上键盘情况下的功耗。
连上蓝牙的电流
当击键的时候,万用表测到的峰值在5.67mA。按住按键不放,功耗为5.57mA(这里还要很大的优化空间)。
击键峰值电流
休眠模式还没有实现,键盘长时间没有使用,可以进入休眠状态,然后按任意键唤醒,这样的功耗非常低,休眠具体的功耗实现后再更新。
用万用表测电流,是比较粗略的,只显示一个数值,很多时候我们希望显示一个电流的变化曲线,有个专门为此设计的集成测电流功能的开发板,键盘上的M.2核心模块,可以拆下来,放在开发板上开发测试,优化功耗。
Makerdiary nRF52840 M2 Developer Kit
用Python写了桌面小工具把检测到的电流实时显示出来,用起来是下图这样子的:
点亮和熄灭R、G、B灯的电流变化曲线
图片中阶梯状的曲线是M.2模块依次点亮和熄灭R、G、B灯的电流曲线。这样我们可以分析出哪段代码的功耗具体是多少,以数据为依据优化代码。
继续优化代码去~
另外,文中的键盘是 M60 Keyboard,详见 http://python-keyboard.gitee.io/,开发板为 nRF52840 M2 Developer Kit,见 https://github.com/makerdiary/nrf52840-m2-devkit