概述
目录
- 前言
- 功耗一览表
- 方案归纳
- 工具选择
- 休眠测试
- Ra-01/Ra-02休眠测试(SX1278)
- (1)资源链接
- (2)代码以及截图
- Ra-01SC休眠测试(LLCC68)
- (1)资源链接
- (2)代码以及截图
- Ra-06休眠测试(SX127x)
- (1)自动低功耗模式
- (2)SLEEP睡眠模式
- (3) 定时唤醒模式
- 结束
- 联系方式
前言
这两天收到很多小伙伴的问题反馈,就是关于LoRa的休眠功耗,大家熟悉LoRa技术都比较了解,LoRa的发射和接收电流都很大,所以物联网中普通设备的电池是扛不住的,那要如何在物联网内实现低功耗LoRa呢,本文就这个话题和大家展开分享下行业内是如何实现低功耗LoRa的。
本次我们选用的是模组型号是安信可Ra-01(或Ra-02),Ra-01SC,Ra-06这三款,分别代表经典、新款和AT控制版LoRa模组,下面就开始我们的测试工作啦。
功耗一览表
如下表格提供多种模块不同模式下的功耗详细数据,可作为开发测评参考。
模式 | Ra-01/Ra-02 | Ra-01S/Ra-01SH | Ra-01SC |
---|---|---|---|
休眠 | < 3uA | < 3uA | < 3uA |
发射 | 105mA | <140mA | <140mA |
接收 | 12.15mA | 4.5mA | 4.5mA |
模式 | Ra-06 |
---|---|
低功耗 | 400uA(AVG) |
休眠 | <3uA |
定时唤醒 | (定时唤醒按照定时时间周期计算平均值) |
方案归纳
定时上报——这个步骤相对比较简单,我们的节点设备的话约定时间定时上报消息,除了短时间上报之外,其他时间都是处于睡眠,这样对我们平均电流的消耗就会小很多,这也是功耗最低的一种方式;
睡眠唤醒——这个就相对复杂一些,需要用到CAD前导码检测的原理,逻辑顺序的话是这样,我们的节点设备一直处于睡眠和定时起来CAD的周期过程,当我们的网关或者其他发射设备发送前导码,被我们的这个节点设备侦测到了,那么他就会让我们的节点进入收发通道,当收发处理完又重新回到CAD以及睡眠状态,这一整个逻辑就是一个睡眠唤醒的过程了,这个睡眠唤醒与前面的定时上报相比较多了唤醒,所以具有实时性。
以上就是行业内最常用的低功耗方案了,这两种方案足够我们解决大部分的应用场景,同时具备LoRa远距离传输和穿透性强的特性。
工具选择
所谓工欲善其事必先利其器,在做测试的时候手边有一个好的仪器也是会事半功倍的,今天我们用来测试电流功耗的板子是小壁虎开发板,可以在win环境下直观的看到电流波形,经过精密仪器测量,它所测试的数据还是非常准的。
-
开发环境下载链接Simplicity Studio 安装好软件后,插上开发板,再按照提示导入相关依赖环境;
-
打开SimpilicityStudio,在窗口右上角找到Energy Profiler。
休眠测试
低功耗是配合休眠来进行周期性的跳变从而降低功耗的,那么我们在做低功耗产品的时候就要首先测试模块的休眠性能,通过这样的方法我们可以评估一款硬件的低功耗性能。
下面我就用一些真实数据来为大家演示如何进入休眠模式。
Ra-01/Ra-02休眠测试(SX1278)
Ra-01的话用的是SX127x系列的芯片SX1278,我们从规格书上可以看到芯片本身的休眠电流是在1uA以下的,那我们做成模组后的电流也是保持在了3uA以下,下面向大家演示整个操作测试过程(结尾附源码例程)
此源码我们使用的是官方的驱动库,里面已经封好了休眠的接口函数,我们只要在主函数初始化过后让他进入休眠函数内不出来即可。
(1)资源链接
接线以及源码
(2)代码以及截图
int main(void)
{
bool isMaster = true; //一个设置为主机一个设置为从机
//bool isMaster = false;
uint8_t i;
delay_init(); //延时函数初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //NVIC(中断优先级管理)分组配置,注意:这个分组整个程序只能有一次,配置后不要修改,否则会出现很多问题
HALUart1Init(115200,uart1callBackTest);
myPrintf(LEVEL_DEBUG,"init okrn");
if(isMaster){
myPrintf(LEVEL_DEBUG,"this is masterrn");
}else{
myPrintf(LEVEL_DEBUG,"this is slavern");
}
usmart_dev.init(SystemCoreClock/1000000); //初始化USMART
}
// Radio initialization
RadioEvents.TxDone = OnTxDone;
RadioEvents.RxDone = OnRxDone;
RadioEvents.TxTimeout = OnTxTimeout;
RadioEvents.RxTimeout = OnRxTimeout;
RadioEvents.RxError = OnRxError;
Radio.Init( &RadioEvents );
while(1){
adio.Sleep( );,强制休眠状态!!!!!!!!!!!!!!!!!!!!!!!!!!!
Radio.SetChannel( RF_FREQUENCY );
#if defined( USE_MODEM_LORA )
Radio.SetTxConfig( MODEM_LORA, TX_OUTPUT_POWER, 0, LORA_BANDWIDTH,
LORA_SPREADING_FACTOR, LORA_CODINGRATE,
LORA_PREAMBLE_LENGTH, LORA_FIX_LENGTH_PAYLOAD_ON,
true, 0, 0, LORA_IQ_INVERSION_ON, 3000 );
Radio.SetRxConfig( MODEM_LORA, LORA_BANDWIDTH, LORA_SPREADING_FACTOR,
LORA_CODINGRATE, 0, LORA_PREAMBLE_LENGTH,
LORA_SYMBOL_TIMEOUT, LORA_FIX_LENGTH_PAYLOAD_ON,
0, true, 0, 0, LORA_IQ_INVERSION_ON, true );
Ra-01SC休眠测试(LLCC68)
Ra-01SC使用的同样是Semtech的芯片LLCC68,这一款的话和SX1268用的是同一个驱动程序,同样的我们使用官方提供的驱动库做了修改,跑在STM32F103的板子上,代码和测试效果如下。
(1)资源链接
接线以及源码
(2)代码以及截图
void ExampleSX126xSendDemo(void){
uint32_t u32_count=0;
printf("start %s() examplern",__func__);
SX126xRadioEvents.TxDone = SX126xOnTxDone;
SX126xRadioEvents.RxDone = SX126xOnRxDone;
SX126xRadioEvents.TxTimeout = SX126xOnTxTimeout;
SX126xRadioEvents.RxTimeout = SX126xOnRxTimeout;
SX126xRadioEvents.RxError = SX126xOnRxError;
Radio.Init( &SX126xRadioEvents );
Radio.Sleep();
while(1){}///强制睡眠
Radio.SetChannel(LORA_FRE);
Radio.SetTxConfig( MODEM_LORA, LORA_TX_OUTPUT_POWER, 0, LORA_BANDWIDTH,
LORA_SPREADING_FACTOR, LORA_CODINGRATE,
LORA_PREAMBLE_LENGTH, LORA_FIX_LENGTH_PAYLOAD_ON,
true, 0, 0, LORA_IQ_INVERSION_ON, 3000 );//参数:lora模式,发射功率,fsk用的lora设置为0就可以,带宽,纠错编码率,前导码长度,固定长度数据包(一般是不固定的所以选false),crc校验,0表示关闭跳频,跳频之间的符号数(关闭跳频这个参数没有意义),这个应该是表示是否要翻转中断电平的,超时时间
Radio.SetRxConfig( MODEM_LORA, LORA_BANDWIDTH, LORA_SPREADING_FACTOR,
LORA_CODINGRATE, 0, LORA_PREAMBLE_LENGTH,
LORA_SX126X_SYMBOL_TIMEOUT, LORA_FIX_LENGTH_PAYLOAD_ON,
0, true, 0, 0, LORA_IQ_INVERSION_ON, false );
Ra-06休眠测试(SX127x)
Ra-06的含有MCU的一款成品模块,内部是封装好驱动程序了,所以我们的测试就是用程序自带的AT指令进入对应的低功耗,由于这款模块内部是带网关程序的,所以并不能主动进入休眠关断,我们需要通过串口的方式让他进入对应的休眠,请看下面的操作步骤。
(1)自动低功耗模式
这里的低功耗是模块默认的初始状态,电流是在400-500uA之间,处于待机状态,关闭部分的活动后测量出来电流值在500uA左右。
(2)SLEEP睡眠模式
这个模式也相对简单,首先我们需要把Ra-06接入电脑串口,并且打开一个串口调试助手,在默认上电的基础上发送“AT+MODE=1”就可以轻松让他进入休眠状态。
上面的操作过程中我们看到电流和波形在发指令的时候就下降了,测量出睡眠在1uA左右。
(3) 定时唤醒模式
同样的,我们需要把Ra-06接入电脑串口,并且打开一个串口调试助手,在默认上电的基础上发送“AT+MODE=5000”就可以轻松让他进入休眠唤醒状态,指令后面的数值单位是ms,这里就是5s以后回到正常电流。
结束
以上就是本次实测的安信可 Ra-01(Ra-02),Ra-01SC和Ra-06的各种睡眠以及唤醒的测试数据了,针对的是STM32开发板环境,稍微移植就可以在各大单片机上使用,咱们在做应用的时候可以使用如上电流关断方案切入到自己的代码逻辑内,就可以做出自己想要的可控的低功耗设备了。
联系方式
以上就是本期分享的内容,目的在于让大家快速适应新品方案的开发,以上提供的驱动源码联系我们可以免费获取哦。
官方官网:https://www.ai-thinker.com
开发资料:https://docs.ai-thinker.com/
官方论坛:http://bbs.ai-thinker.com
商务合作:sales@aithinker.com
技术支持:support@aithinker.com
公司地址:深圳市宝安区西乡固戍华丰创新港C栋410
联系电话:0755-29162996
最后
以上就是真实小土豆为你收集整理的安信可LoRa模组的睡眠&低功耗运行方案的测试设计详解。前言功耗一览表方案归纳工具选择休眠测试结束联系方式的全部内容,希望文章能够帮你解决安信可LoRa模组的睡眠&低功耗运行方案的测试设计详解。前言功耗一览表方案归纳工具选择休眠测试结束联系方式所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复