对于ARM Cortex -M系列的单片机来说,省电一直都是其一个极大的亮点,但是众所周知,wifi的使用会很大的加快电量的使用,使得省电的特色完全表现不出来,因此,在保持WiFi连接的同时使用省电模式,就是我们要找的解决方案,这里以瑞昱的ameba RTL8722双频WiFi+BLE开发板为例,我们来一起看一下如何实现这一功能,以及能耗能得到怎样的改善,
让Ameba处于Wifi连接的省电模式
[size=1.125em]材料准备 - Ameba x 1
- DHT11/DHT22/DHT21 x 1
范例说明
Ameba的deepsleep无法让wifi处于连线状态,如果想让Ameba省电,并且保持wifi连线,可以使用sleep API。
打开范例 “File” -> “Examples” -> “AmebaPowerSave” -> “SleepWithDHTUdpServ”
范例里一样需要设定连线AP的ssid & password
这个范例里,Ameba会先建立wifi连线,进入sleep省电模式,Ameba会当作UDP server,每当接收到UDP封包内容为 ‘H’,就回传湿度,接收到UDP封包为 ‘T’,就回传温度。
与deepsleep不同的地方是,当Ameba打开sleep模式,会自己找寻可以睡眠的时间,当装置闲置时就会进入睡眠。整个睡眠与醒来的动作是自动的,不需要使用者干预。
当Ameba连线之后,我们参考之前测试TCP/UDP的工具Sokit设定Ameba的IP & port。
我们每分钟轮流问一次温湿度,可以看到Ameba都有回应。
这个范例里会侦测D18这根防止进入睡眠的pin脚,如果D18被接地,就不会让Ameba进入sleep睡眠模式,于是我们可以测量两种耗电: (实验所使用的电表为Keysight 34465A)
NOTE: 实际情况里,不会用到那么久,他会因为升压转换造成能量损失,也会因为电池电压随时间而降低造成无法使用到全部的容量。
这里的数据会因为网路状况而有不同,但让Ameba保持连线的情况下会比让Ameba进入deepsleep要耗电。但让Ameba保持连线也提供使用者做远端操控,这是deepsleep无法做到的。这端看使用者的应用而定。
|