ESP32定时器睡眠模式

ESP32的RTC控制器包含一个内置计时器,可以用于在预设时间后唤醒设备,适合低功耗和时间戳需求的项目。本文介绍了如何启用定时器唤醒,定义睡眠时间,保存数据到RTC存储器,并测试定时器唤醒功能。
摘要由CSDN通过智能技术生成

定时器唤醒

ESP32 可以进入深度睡眠模式,然后在预定义的时间段内唤醒。如果您正在运行需要时间戳或日常任务的项目,同时保持低功耗,则此功能特别有用。

img

ESP32 RTC 控制器具有一个内置计时器,可用于在预定义的时间后唤醒 ESP32。

启用定时器唤醒

让 ESP32 在预定义的时间后唤醒非常简单。在 Arduino IDE 中,您只需在以下函数中以微秒为单位指定休眠时间:

esp_sleep_enable_timer_wakeup(time_in_us)

法典

让我们使用库中的示例来看看它是如何工作的。打开 Arduino IDE,转到 ESP32 >深度睡眠>文件>示例,然后打开 TimerWakeUp 草图。

/*
Simple Deep Sleep with Timer Wake Up
=====================================
ESP32 offers a deep sleep mode for effective power
saving as power is an important factor for IoT
applications. In this mode CPUs, most of the RAM,
and all the digital peripherals which are clocked
from APB_CLK are powered off. The only parts of
the chip which can still be powered on are:
RTC controller, RTC peripherals ,and RTC memories

This code displays the most basic deep sleep with
a timer to wake it up and how to store data in
RTC memory to use it over reboots

This code is under Public Domain License.

Author:
Pranav Cherukupalli <cherukupallip@gmail.com>
*/

#define uS_TO_S_FACTOR 1000000  /* Conversion factor for micro seconds to seconds */
#define TIME_TO_SLEEP  5        /* Time ESP32 will go to sleep (in seconds) */

RTC_DATA_ATTR int bootCount = 0;

/*
Method to print the reason by which ESP32
has been awaken from sleep
*/
void print_wakeup_reason(){
   
  esp_sleep_wakeup_cause_t wakeup_reason;

  wakeup_reason = esp_sleep_get_wakeup_cause();

  switch(wakeup_reason)
  {
   
    case ESP_SLEEP_WAKEUP_EXT0 : Serial.println("Wakeup caused by external signal using RTC_IO"); break;
    case ESP_SLEEP_WAKEUP_EXT1 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值