使Arduino进入休眠状态,然后唤醒


在本文中,我们将按照标题的建议,使Arduino进入休眠状态,并使用中断唤醒它。Arduino的微控制器ATmega328P有6种休眠模式,其中5种可通过**avr/sleep.h**库使用。每种模式都有不同的唤醒模式和不同的功耗。

Arduino的微控制器ATmega328P有6种休眠模式,其中5种可通过**avr/sleep.h**库使用。

  • 空闲模式

  • ADC降噪

  • 掉电

  • 省电

  • 待机

  • 扩展待机

每种模式都有不同的唤醒模式和不同的功耗。

空闲模式最容易唤醒,而待机和掉电模式最难唤醒(只能使用外部中断或看门狗定时器从待机模式唤醒模块)。掉电模式也是最节能的休眠模式。

TWI地址匹配指的是I2C或线地址匹配。只有当微控制器为I2C从机并且主机发送与该微控制器相对应的地址以唤醒它时,微控制器才能通过这种方式唤醒。建议您仔细阅读ATmega328P的数据手册,以了解更多关于休眠模式的信息。

现在,您可以直接使用avr/sleep.h库并在Arduino中探索休眠模式。这里给出了一个示例这里

但是,就像往常一样,有人已经努力创建了一个库。该库称为**Low-Power**。它可以在GitHub上找到这里

它在Arduino IDE的库管理器中不可用。此处解释了安装此类库的方法这里

安装完此库后,转到:**文件 → 示例 → Low-Power → 示例 → idleWakePeriodic**

如您所见,代码非常简单。您包含“**LowPower.h**”库,并且循环中只有一行(不需要设置) -

LowPower.idle(SLEEP_8S, ADC_OFF, TIMER2_OFF, TIMER1_OFF, TIMER0_OFF,
SPI_OFF, USART0_OFF, TWI_OFF);

如您所见,我们正在将Arduino设置为低功耗空闲模式,禁用ADC、定时器、SPI、UART和TWI,并使用看门狗定时器唤醒它。

以上语句适用于Arduino Uno(ATmega328P)。代码注释中还提供了其他微控制器的相应语句。

您可以通过将电流传感器(安培表)与Arduino电源串联连接,并在Arduino休眠时观察电流下降来检查Arduino是否确实处于休眠状态。

更新于: 2021年7月31日

2K+浏览量

开启您的职业生涯

通过完成课程获得认证

开始学习
广告