280浏览
查看: 280|回复: 3

[项目] 【花雕学编程】Arduino动手做(230)--ESP32-CAM带定时器唤醒

[复制链接]
【花雕学编程】Arduino动手做(230)--ESP32-CAM带定时器唤醒图1

ESP32-CAM 是一款非常小的摄像头模块,配备 ESP32-S 芯片。除了 OV2640 摄像头和几个用于连接外围设备的 GPIO 外,它还具有一个 microSD 卡插槽,可用于存储使用摄像头拍摄的图像或存储文件以提供给客户。包括乐鑫 ESP32-S Wifi + 蓝牙+BLE 芯片、2MP 摄像头模块 OV2640 和带有 CH340 UART 芯片的 USB 编程适配器。

ESP32-Cam 是一款运行在 ESP32-S 芯片上并使用 OV2640 摄像头的小型摄像头模块。ESP32_Cam 也可以 OV7670 摄像头,但 OV2640 更好(更高的分辨率和内置的 JPEG 编码,这消除了 ESP32-S 的处理任务)。

ESP-32 Cam 规格
ESP-32 系列
它支持 Wi-Fi (802.11b/g/n)
支持蓝牙 (4.2 带 BLE)
内置 LED 闪光灯
9 个 IO 端口
支持 UART、SPI、I2C 和 PWM
内置 micro SD 读卡器
输入电源:3.3V / 5V(据报道,5V 供电比 3.3V 更稳定)

OV2640 摄像头
2 百万像素
阵列尺寸:UXGA (1600 x 1200)
镜头尺寸:1/4 英寸(6.35 毫米)
最大图像传输速率:15 帧/秒


【花雕学编程】Arduino动手做(230)--ESP32-CAM带定时器唤醒图2

驴友花雕  中级技神
 楼主|

发表于 2024-9-21 17:11:52

【花雕学编程】Arduino动手做(230)--ESP32-CAM带定时器唤醒

  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验二百三十:ESP32 CAM开发板 带OV2640摄像头模块 WIFI+蓝牙模块
  项目实验之十八:在ESP32-CAM上带定时器唤醒的简单深度睡眠(这里设置为五秒)

实验开源代码

  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   实验二百三十:ESP32 CAM开发板 带OV2640摄像头模块 WIFI+蓝牙模块
  4.   项目实验之十八:在ESP32-CAM上带定时器唤醒的简单深度睡眠(这里设置为五秒)
  5. */
  6. #include <Arduino.h>
  7. // 定义微秒到秒的转换因子
  8. #define uS_TO_S_FACTOR 1000000ULL  /* 微秒到秒的转换因子 */
  9. // 定义ESP32进入休眠状态的时间(以秒为单位)
  10. #define TIME_TO_SLEEP  5
  11. // 使用RTC数据存储引导计数
  12. RTC_DATA_ATTR int bootCount = 0;
  13. /*
  14.   打印ESP32从睡眠中唤醒的原因
  15. */
  16. void print_wakeup_reason() {
  17.   // 获取唤醒原因
  18.   esp_sleep_wakeup_cause_t wakeup_reason;
  19.   wakeup_reason = esp_sleep_get_wakeup_cause();
  20.   // 根据唤醒原因打印相应信息
  21.   switch (wakeup_reason) {
  22.     case ESP_SLEEP_WAKEUP_EXT0 :
  23.       Serial.println("使用 RTC_IO 的外部信号引起的唤醒");
  24.       break;
  25.     case ESP_SLEEP_WAKEUP_EXT1 :
  26.       Serial.println("使用 RTC_CNTL 的外部信号引起的唤醒");
  27.       break;
  28.     case ESP_SLEEP_WAKEUP_TIMER :
  29.       Serial.println("定时器引起的唤醒");
  30.       break;
  31.     case ESP_SLEEP_WAKEUP_TOUCHPAD :
  32.       Serial.println("触摸板引起的唤醒");
  33.       break;
  34.     case ESP_SLEEP_WAKEUP_ULP :
  35.       Serial.println("ULP 程序引起的唤醒");
  36.       break;
  37.     default :
  38.       Serial.printf("唤醒不是由深度睡眠引起的: %d\n", wakeup_reason);
  39.       break;
  40.   }
  41. }
  42. void setup() {
  43.   // 初始化串口通信,波特率设置为115200
  44.   Serial.begin(115200);
  45.   Serial.println(" ");
  46.   Serial.println("ESP32-CAM 准备就绪!");
  47.   Serial.println(" ");
  48.   delay(1000); // 延时以确保串口监视器打开
  49.   // 增加引导计数并打印每次重启时的计数
  50.   ++bootCount;
  51.   Serial.println("Boot number: " + String(bootCount));
  52.   // 打印ESP32的唤醒原因
  53.   print_wakeup_reason();
  54.   /*
  55.     首先配置唤醒源
  56.     设置ESP32每5秒唤醒一次
  57.   */
  58.   esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * uS_TO_S_FACTOR);
  59.   Serial.println("设置ESP32每 " + String(TIME_TO_SLEEP) + " 秒进入休眠");
  60.   /*
  61.     接下来决定关闭/保持哪些外设
  62.     默认情况下,ESP32会自动关闭唤醒源不需要的外设,
  63.     但如果你想成为高级用户,可以自行配置。
  64.     详细信息请参阅API文档:
  65.     http://esp-idf.readthedocs.io/en/latest/api-reference/system/deep_sleep.html
  66.     下面的行作为配置外设的示例,已注释。
  67.     下面的行关闭了深度睡眠中的所有RTC外设。
  68.   */
  69.   //esp_deep_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_OFF);
  70.   //Serial.println("配置所有RTC外设在睡眠中关闭");
  71.   /*
  72.     现在我们已经设置了唤醒原因,并在需要时设置了
  73.     深度睡眠中的外设状态,现在可以开始进入
  74.     深度睡眠。
  75.     如果没有提供唤醒源但启动了深度睡眠,
  76.     它将永远睡眠,除非发生硬件重置。
  77.   */
  78.   Serial.println("现在进入休眠");
  79.   Serial.flush();
  80.   esp_deep_sleep_start();
  81.   Serial.println("这永远不会被打印");
  82. }
  83. void loop() {
  84.   // 这永远不会被调用
  85. }
复制代码



回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2024-9-21 17:14:01

【花雕学编程】Arduino动手做(230)--ESP32-CAM带定时器唤醒

程序解读
1、微秒到秒的转换因子:通过#define uS_TO_S_FACTOR 1000000ULL定义微秒到秒的转换因子,方便后续时间计算。
2、休眠时间设置:通过#define TIME_TO_SLEEP 5定义ESP32进入休眠状态的时间(以秒为单位),在代码中使用这个常量设置休眠时间。
3、RTC数据存储:使用RTC_DATA_ATTR关键字定义变量bootCount,用于存储ESP32的引导次数,即使在深度睡眠后也能保留数据。
4、唤醒原因打印:函数print_wakeup_reason根据ESP32的唤醒原因打印相应信息,便于调试和了解设备状态。
5、深度睡眠配置:在setup函数中配置ESP32的唤醒源和外设状态,并调用esp_deep_sleep_start函数使ESP32进入深度睡眠模式,节省电能。

实验串口返回情况

【花雕学编程】Arduino动手做(230)--ESP32-CAM带定时器唤醒图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2024-9-21 17:16:22

【花雕学编程】Arduino动手做(230)--ESP32-CAM带定时器唤醒

实验场景图

【花雕学编程】Arduino动手做(230)--ESP32-CAM带定时器唤醒图1
回复

使用道具 举报

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

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail