极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11778|回复: 1

【Ameba Arduino】省电模式(1-1)--省电秘籍

[复制链接]
发表于 2016-5-11 10:55:42 | 显示全部楼层 |阅读模式
本帖最后由 Ameba_Arduino 于 2016-5-11 11:02 编辑

转载声明:原文链接 http://makerpro.cc/2016/03/ameba-series-1-1-power-saving-mode/
作者:柯大
为了创造更省电的物联网设备,瑞昱阿米巴(Ameba)开发板加入了省电模式,并提供Arduino开发环境不同的省电API,让设备可以轻易的以电池或太阳能电板维持很长时间的正常运作,以下来介绍实作方式。

6种省电API
Realtek在2016/02/19发布的Ameba IoT/Arduino Solution Version 1.0.5版本中,新增了对Ameba开发板的省电API,共6组API:

要使用Ameba的省电功能,需要在程序中添加一下头文件:
#include <PowerManagement.h>
API 功能说明:
1.        void sleep():
呼叫这个API之后,就允许系统在闲暇的时候进入sleep(但不一定会马上进入sleep),如果Ameba开着WiFi,依照802.11的省电模式定时wake up来听AP发出来的beacon,收完之后如果没事就会继续进入sleep。
如果WiFi资料量比较大的时候,WiFi会离开802.11的省电模式,此时系统也不会进入sleep,所以开着WiFi的耗电量会因为资料量与WiFi环境的干净程度有关。
2.        void active():
呼叫这个API等于是关掉sleep功能,闲暇时间也不允许Ameba sleep。
3.        void deepsleep(uint_32_t duration_ms):
这是最省电的模式,几乎将Aemba所有岛区(岛区概念请见【Ameba Arduino】省电模式前编--认识基础概念)都关闭,经过duration_ms之后会从头开始执行,像是经过reset一样,呼叫这个API之后会马上进入deepsleep。
4.        void setPllReserved(bool reserves):
当Ameba进入sleep,如果PLL clock关掉,会让一些周边设备(ex. UART, I2C, SPI…)无法接收资料,目前预算是保留PLL不关掉,适合关掉的情况:(1)没有用到这些周边设备,(2)用到这些周边设但不需要在Ameba进入sleep之后还接收资料。关掉省电约5.5mA,算是自己需要取舍的电量。
5.        void softReset():
呼叫之后会马上重新开机,这是软件行为,电路上并没有重新上电。
6.        void safeLock():
当Ameba进入deepsleep,会无法烧录程序,为了避免使用者写出的程序开机Ameba即计入deepsleep,所以使用D18这个PIN当做保护,当D18这根PIN被接到GND,就会防止Ameba进入deepsleep或者sleep。
回传值:
True:D18 is connected to GND
False:  D18 is not connected to GND
注:因为Ameba进入deepsleep之后就无法烧录程序,在deepsleep的API里面我们将D18这个PIN当做避免Ameba进入deepsleep的PIN脚,只要将D18接GND,并且从开机即可重新烧录程序。

Ameba常用的省电模式
Ameba提供许多省电模式,最常用的是deepsleep与sleep。
1.        deepsleep mode
当Ameba进入deepsleep mode,会让Ameba出于最省电的模式,他的耗电会小于20uA, 此时大部分元件都关掉了,但低解析度的timer仍然运作并且用来唤醒Ameba。这种模式适合定时运作的情况,像是每个小时起来测量一次温湿度,送出资料,再回到deepsleep。
2.        sleep mode
这个模式是Ameba可以维持WiFi连线的省电模式,它的耗电会因为WiFi资料量有无以及WiFi环境的干净程度有所不同,但是瞬间最低电流会在2.5mA, 任然是相当省电的模式。这种应用适合要远端操控Ameba的情况,像是用手机通过网络通知Ameba马上测量一次温湿度,再回传结果。
省电模式例程
范例一:让Ameba出于WiFi连接的省电模式
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被GND,就不会让Ameba进入sleep模式,于是我们可以测量两种耗电:

注:实际情况里,不会用到那么多,它会因为升压转换造成能力损失,也会因为电池电压随时间而降低造成无法使用到全部的容量。
这里的数据会因为网路状况而不同,让Ameba保持连线的情况下回避让Ameba进入deepsleep要耗电;但让Ameba保持连线来提供使用者做远程操控,这是deepsleep无法做到的,这需要视使用者的应用而定。
范例二:将DHT资料上传到LASS之后进入睡眠
使用Ameba通常都会使用到它的WiFi功能,实际的省电使用情况也会因为如何使用WiFi功能二有所不同。这个范例会先测量DHT的温湿度数据,打开WiFi并连上AP,取得NTP时间,连上LASS的MQTT server,将测量的温湿度数据上传,再进入deepsleep,每10分钟重复这样的动作。
打开范例“File” -> “Examples” -> “AmebaPowerSave” -> “DeepSleepWithDHTLass”修改程序相关设定:
– DHT的型號:DHT11/DHT22/DHT21
– 連上AP的方式:ssid, password
– 目前的GPS位置:latitude & longitude
编译上传之后,测量到的耗电会因为许多因素影响,包括WiFi环境的干净与否,连线是否顺畅,server是否马上回应。但一般应该会在10多秒内完成。
范例测试的结果里,我上传所花的时间是13s,量得的Ameba module耗电平均为1.3mA。这个数据比范例“DeepSleepWithDHT”要大上许多,因为Ameba在工作模式下的耗电通常大于29mA,甚至在WiFi连线时68mA左右,与deepsleep的0.018mA相比,我们要让Ameba尽量维持在deepsleep才会取得最大的省电效益。
为了比较未省电的情况,我们将程序修改如下,让它平常保持WiFi连线,每10分钟测量一次,然后上传至LASS的MQTT server:
void setup()
{
dht.begin();
initializeWiFi();
initializeMQTT();
}
void loop()
{
if (gatherHumidityAndTemperature() == DATA_CNT_FOR_UPLOAD) {
retrieveNtpTime();
if (!client.connected()) {
reconnectMQTT();
}

publishResults();
pDhtData-&gt;dataCount = 0;
}

// store data back to flash memory
FlashMemory.update();
delay(measureInterval * 1000);
}
这中方式测量到的平均耗电为67mA,和我们用2颗AA电池比较耗电

可以看到沒省電的情況下只能用一天,但經過省電並且單獨供電給Ameba module可以使用2.8個月。


关于更多介绍请访问官方主页:http://ameba.realsil.com.cn/
QQ交流群:Ameba Arduino 技术交流群(184666894
其他省电相关:
【Ameba Arduino】省电模式前编--认识基础概念

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2016-5-11 15:34:42 | 显示全部楼层
好东东,支持一下
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-25 20:02 , Processed in 0.042484 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表