374浏览
查看: 374|回复: 12

[项目] 【花雕学编程】Arduino动手做(230)---ESP32-Cam 延时摄影

[复制链接]
【花雕学编程】Arduino动手做(230)---ESP32-Cam 延时摄影图1

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-8 18:21:06

【花雕学编程】Arduino动手做(230)---ESP32-Cam 延时摄影

  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验二百三十:ESP32 CAM开发板 带OV2640摄像头模块 WIFI+蓝牙模块
  项目实验之十一:德国 bitluni 比特鲁尼:ESP32-Cam 延时摄影

下载ESP32CamTimeLapse库
链接:https://github.com/bitluni/ESP32CamTimeLapse

【花雕学编程】Arduino动手做(230)---ESP32-Cam 延时摄影图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2024-9-8 18:38:03

【花雕学编程】Arduino动手做(230)---ESP32-Cam 延时摄影


一个  ESP32 CAM 摄像头用于录制延时镜头。它通过 Web 界面进行控制,并将图像存储到 micro SD 卡中。ffmpeg 用于将 Jpeg 图像转换为 mp4 视频。虽然由于固定焦距,宏距摄影效果不佳,但风景摄影看起来不错。

实验开源代码


  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   实验二百三十:ESP32 CAM开发板 带OV2640摄像头模块 WIFI+蓝牙模块
  4.   项目实验之十一:德国 bitluni 比特鲁尼:ESP32-Cam 延时摄影
  5. */
  6. #include <WiFi.h> // 引入WiFi库
  7. #include "file.h" // 引入文件系统库
  8. #include "camera.h" // 引入摄像头库
  9. #include "lapse.h" // 引入时间间隔处理库
  10. const char* ssid = "zhz3"; // WiFi名称
  11. const char* password = "z156721"; // WiFi密码
  12. void startCameraServer(); // 声明启动摄像头服务器的函数
  13. void setup()
  14. {
  15.   Serial.begin(115200); // 初始化串口通信,波特率为115200
  16.   Serial.setDebugOutput(true); // 设置串口调试输出
  17.   Serial.println(); // 打印空行
  18.   initFileSystem(); // 初始化文件系统
  19.   initCamera(); // 初始化摄像头
  20.   Serial.println("ESP32-Cam 已经正确连接!");
  21.   WiFi.begin(ssid, password); // 连接WiFi
  22.   while (WiFi.status() != WL_CONNECTED) // 等待WiFi连接成功
  23.   {
  24.     delay(500); // 延迟500毫秒
  25.     Serial.print("."); // 打印连接进度
  26.   }
  27.   Serial.println(""); // 打印空行
  28.   Serial.println("WiFi连接"); // 打印WiFi连接成功信息
  29.   startCameraServer(); // 启动摄像头服务器
  30.   Serial.print("相机就绪!使用 'http://"); // 打印摄像头服务器地址前缀
  31.   Serial.print(WiFi.localIP()); // 打印本地IP地址
  32.   Serial.println("' 连接"); // 打印连接提示信息
  33. }
  34. void loop()
  35. {
  36.   unsigned long t = millis(); // 获取当前时间(毫秒)
  37.   static unsigned long ot = 0; // 上一次时间
  38.   unsigned long dt = t - ot; // 计算时间差
  39.   ot = t; // 更新上一次时间
  40.   processLapse(dt); // 处理时间间隔
  41. }
复制代码


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2024-9-8 18:47:15

【花雕学编程】Arduino动手做(230)---ESP32-Cam 延时摄影

实验串口返回情况

【花雕学编程】Arduino动手做(230)---ESP32-Cam 延时摄影图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2024-9-8 18:53:14

【花雕学编程】Arduino动手做(230)---ESP32-Cam 延时摄影

这里详细解释一下这段程序的每个部分及其功能:

1、引入库文件


  1. #include <WiFi.h> // 引入WiFi库,用于连接WiFi网络
  2. #include "file.h" // 引入文件系统库,用于文件操作
  3. #include "camera.h" // 引入摄像头库,用于摄像头初始化和操作
  4. #include "lapse.h" // 引入时间间隔处理库,用于处理时间间隔任务
复制代码



这些库文件提供了程序所需的功能,例如WiFi连接、文件操作、摄像头控制和时间间隔处理。

2、定义WiFi名称和密码


  1. const char* ssid = "zhz3"; // 定义WiFi名称
  2. const char* password = "z156721"; // 定义WiFi密码
复制代码


这里定义了WiFi网络的名称和密码,用于连接到指定的WiFi网络。

3、声明函数


  1. void startCameraServer(); // 声明启动摄像头服务器的函数
复制代码


声明了一个函数startCameraServer,该函数将在后面定义并用于启动摄像头服务器。

4、setup函数


  1. void setup()
  2. {
  3.         Serial.begin(115200); // 初始化串口通信,设置波特率为115200
  4.         Serial.setDebugOutput(true); // 启用串口调试输出
  5.         Serial.println(); // 打印空行,分隔输出内容
  6.         initFileSystem(); // 初始化文件系统,准备文件操作
  7.         initCamera(); // 初始化摄像头,准备摄像头操作
  8.         WiFi.begin(ssid, password); // 开始连接WiFi网络
  9.         while (WiFi.status() != WL_CONNECTED) // 等待WiFi连接成功
  10.         {
  11.                 delay(500); // 每500毫秒检查一次连接状态
  12.                 Serial.print("."); // 打印连接进度
  13.         }
  14.         Serial.println(""); // 打印空行,分隔输出内容
  15.         Serial.println("WiFi connected"); // 打印WiFi连接成功信息
  16.         startCameraServer(); // 启动摄像头服务器,准备视频流传输
  17.         Serial.print("Camera Ready! Use 'http://"); // 打印摄像头服务器地址前缀
  18.         Serial.print(WiFi.localIP()); // 打印ESP32-CAM的本地IP地址
  19.         Serial.println("' to connect"); // 打印连接提示信息
  20. }
复制代码


Serial.begin(115200):初始化串口通信,设置波特率为115200。
Serial.setDebugOutput(true):启用串口调试输出。
initFileSystem():初始化文件系统,准备文件操作。
initCamera():初始化摄像头,准备摄像头操作。
WiFi.begin(ssid, password):开始连接WiFi网络。
while (WiFi.status() != WL_CONNECTED):等待WiFi连接成功,每500毫秒检查一次连接状态,并打印连接进度。
startCameraServer():启动摄像头服务器,准备视频流传输。
Serial.print(WiFi.localIP()):打印ESP32-CAM的本地IP地址,用户可以通过该地址访问摄像头视频流。

5、loop函数


  1. void loop()
  2. {
  3.         unsigned long t = millis(); // 获取当前时间(毫秒)
  4.         static unsigned long ot = 0; // 定义并初始化上一次时间变量
  5.         unsigned long dt = t - ot; // 计算时间差
  6.         ot = t; // 更新上一次时间变量
  7.         processLapse(dt); // 处理时间间隔任务
  8. }
复制代码


unsigned long t = millis():获取当前时间(毫秒)。
static unsigned long ot = 0:定义并初始化上一次时间变量。
unsigned long dt = t - ot:计算时间差。
ot = t:更新上一次时间变量。
processLapse(dt):处理时间间隔任务。

6、总结
这段代码的主要功能是:
1、初始化串口通信、文件系统和摄像头。
2、连接到指定的WiFi网络。
3、启动摄像头服务器,使用户可以通过浏览器访问视频流。
4、在主循环中处理时间间隔任务。


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2024-9-8 19:46:57

【花雕学编程】Arduino动手做(230)---ESP32-Cam 延时摄影

在PC端浏览器上打开:http://192.168.28.22 (串口上给出的服务器地址)

【花雕学编程】Arduino动手做(230)---ESP32-Cam 延时摄影图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2024-9-8 19:48:55

【花雕学编程】Arduino动手做(230)---ESP32-Cam 延时摄影

画面分辨率可以调整

【花雕学编程】Arduino动手做(230)---ESP32-Cam 延时摄影图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2024-9-8 19:52:11

【花雕学编程】Arduino动手做(230)---ESP32-Cam 延时摄影

延时拍摄的照片

【花雕学编程】Arduino动手做(230)---ESP32-Cam 延时摄影图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2024-9-8 19:55:42

【花雕学编程】Arduino动手做(230)---ESP32-Cam 延时摄影

打开动态摄像流

【花雕学编程】Arduino动手做(230)---ESP32-Cam 延时摄影图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2024-9-8 19:57:55

【花雕学编程】Arduino动手做(230)---ESP32-Cam 延时摄影

在手机端浏览器上打开:http://192.168.28.22 (串口上给出的服务器地址)

【花雕学编程】Arduino动手做(230)---ESP32-Cam 延时摄影图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2024-9-8 19:59:41

【花雕学编程】Arduino动手做(230)---ESP32-Cam 延时摄影

打开动态摄像流

【花雕学编程】Arduino动手做(230)---ESP32-Cam 延时摄影图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2024-9-8 20:23:40

【花雕学编程】Arduino动手做(230)---ESP32-Cam 延时摄影

实验记录视频


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2024-9-9 10:23:24

【花雕学编程】Arduino动手做(230)---ESP32-Cam 延时摄影

实验记录视频

【【花雕学编程】Arduino动手做(230)---德国 bitluni 比特鲁尼:ESP32-Cam 延时摄影】

https://www.bilibili.com/video/BV1vxpLeDEaC/?share_source=copy_web&vd_source=371a292a55e5ca9be994cbb4a86cc987







回复

使用道具 举报

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

本版积分规则

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

硬件清单

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

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

mail