基本信息
文件名称:Arduino 系列:Arduino MKR WiFi 1010 (基于 SAMD21)_(14).低功耗模式应用.docx
文件大小:26.54 KB
总页数:23 页
更新时间:2025-06-27
总字数:约1.21万字
文档摘要

PAGE1

PAGE1

低功耗模式应用

低功耗模式概述

ArduinoMKRWiFi1010是一款专为低功耗应用设计的微控制器。它基于SAMD21微处理器,并集成了Wi-Fi功能,使其在物联网(IoT)应用中非常受欢迎。低功耗模式对于延长电池寿命和提高能效至关重要,尤其是在远程传感器、可穿戴设备和环境监测等应用场景中。

低功耗模式主要有以下几种:

睡眠模式(SleepMode):在该模式下,微控制器大部分功能被关闭,但某些低功耗外围设备仍然保持运行。

深度睡眠模式(DeepSleepMode):在这种模式下,微控制器几乎所有的功能都被关闭,仅保留最基本的时钟和唤醒功能。

待机模式(StandbyMode):在待机模式下,微控制器的内核和大部分外围设备被关闭,但保留RAM和实时时钟(RTC)的状态。

睡眠模式

原理

在睡眠模式下,ArduinoMKRWiFi1010的CPU和大部分外围设备会被关闭,但某些低功耗外围设备(如定时器和中断)仍然保持运行。这种模式可以显著降低功耗,同时仍能响应外部事件(如中断)。

内容

要进入睡眠模式,可以使用LowPower库。该库提供了多种方法来控制微控制器的功耗,并允许开发者选择不同的睡眠深度。

代码示例

以下是一个简单的示例,展示如何使用LowPower库使ArduinoMKRWiFi1010进入睡眠模式,并通过外部中断唤醒。

#includeLowPower.h

#includeMKRWiFi.h

//定义外部中断引脚

constintinterruptPin=2;

voidsetup(){

//初始化串口通信

Serial.begin(9600);

while(!Serial){

;//等待串口连接

}

//设置中断引脚为输入模式

pinMode(interruptPin,INPUT_PULLUP);

attachInterrupt(digitalPinToInterrupt(interruptPin),wakeUp,FALLING);

}

voidloop(){

//打印进入睡眠前的消息

Serial.println(Goingtosleepnow);

//进入睡眠模式

LowPower.sleepNow();

//唤醒后的消息

Serial.println(Wakeup!Interruptdetected);

}

//中断处理函数

voidwakeUp(){

//什么都不做,唤醒后直接返回loop

}

代码解释

库引入:#includeLowPower.h和#includeMKRWiFi.h分别引入低功耗库和Wi-Fi库。

引脚定义:constintinterruptPin=2;定义外部中断引脚为数字引脚2。

串口初始化:Serial.begin(9600);初始化串口通信,波特率为9600。

引脚设置:pinMode(interruptPin,INPUT_PULLUP);设置中断引脚为上拉输入模式。

中断附着:attachInterrupt(digitalPinToInterrupt(interruptPin),wakeUp,FALLING);附着中断到引脚2,当引脚电平从高到低变化时触发中断。

进入睡眠模式:LowPower.sleepNow();调用LowPower库的sleepNow方法,使微控制器进入睡眠模式。

中断处理函数:voidwakeUp(){}定义中断处理函数,这里不执行任何操作,唤醒后直接返回loop函数。

深度睡眠模式

原理

在深度睡眠模式下,ArduinoMKRWiFi1010的CPU和大部分外围设备都会被关闭,只保留最基本的时钟和唤醒功能。这种模式下的功耗极低,但唤醒时间会相对较长。

内容

要进入深度睡眠模式,同样可以使用LowPower库。在进入深度睡眠模式之前,需要确保所有必要的数据已经保存到非易失性存储器中,以防止数据丢失。

代码示例

以下是一个示例,展示如何使ArduinoMKRWiFi1010进入深度睡眠模式,并通过定时器唤醒。

#includeLowPower.h

#includeMKRWiFi.h

//定义唤醒时间(单位:毫秒)

constunsignedlongwakeUpTime=60000;//1分钟

voidsetup()