# esp32cam **Repository Path**: ucanner/esp32cam ## Basic Information - **Project Name**: esp32cam - **Description**: esp32项目玩玩 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2024-05-03 - **Last Updated**: 2026-03-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ESP32-CAM 控制项目 ## 项目介绍 这是一个基于 ESP32-CAM 的控制项目,提供两种开发方案(MicroPython和ESP-IDF),通过网页界面实现对 ESP32-CAM 的远程控制,包括实时视频流、LED灯控制、设备信息查看等功能。 ## 方案对比 | 特性 | MicroPython方案 | ESP-IDF方案 | |------|----------------|-------------| | **开发语言** | Python | C语言 | | **开发难度** | 简单 | 较复杂 | | **性能** | 一般 | 高 | | **内存占用** | 较大 | 较小 | | **启动速度** | 较慢 | 快 | | **代码可读性** | 高 | 一般 | | **适合人群** | 初学者/快速开发 | 性能优化/专业应用 | ## 项目结构 ``` esp32cam/ ├── espdif/ # ESP-IDF原生开发方案 │ ├── CMakeLists.txt # 项目构建配置 │ └── main/ │ ├── CMakeLists.txt # 组件配置 │ └── app_main.c # 主程序代码 ├── microdot/ # MicroPython方案 │ ├── common/ │ │ └── connect_wifi.py # WiFi连接模块 │ ├── lib/ │ │ └── microdot.py # Microdot框架库 │ ├── public/ │ │ └── index.html # 网页界面 │ └── main.py # 主程序 └── README.md # 项目说明 ``` ## 功能特性 ### 通用功能 - ✅ WiFi 连接功能(支持STA模式) - ✅ 网页界面控制 - ✅ 实时视频流监控 - ✅ LED 灯开关控制 - ✅ 呼吸灯效果 - ✅ ESP32 设备信息查看 - ✅ 摄像头参数调节(分辨率、亮度、对比度等) - ✅ 定时任务系统 ### MicroPython方案专属 - ✅ 摄像头设置API - ✅ 定时任务管理 - ✅ 数据管理功能 - ✅ 照片批量操作 - ✅ 配置文件导入/导出 ### ESP-IDF方案专属 - ✅ 高性能视频流 - ✅ 低延迟响应 - ✅ 更小的固件体积 ## 快速开始 ### 方案一:MicroPython方案(推荐入门) #### 硬件准备 - ESP32-CAM 开发板 - TTL 串口下载器 - 计算机 #### 软件准备 1. 安装 [Thonny IDE](https://thonny.org/) 2. 下载并烧录 MicroPython 固件(推荐 `mpy_cam-v1.27.0-ESP32_GENERIC-SPIRAM` 或更高版本) 3. 下载摄像头驱动 `camera.py` 和 `sensor.py` #### 安装步骤 1. 克隆项目到本地 2. 使用 Thonny IDE 将项目文件上传到 ESP32-CAM: ``` microdot/ ├── common/connect_wifi.py ├── lib/microdot.py ├── public/index.html └── main.py ``` 3. 修改 `common/connect_wifi.py` 中的 WiFi 配置: ```python WIFI_SSID = "Your_WiFi_Name" WIFI_PASSWORD = "Your_WiFi_Password" ``` #### 使用方法 1. 启动 ESP32-CAM 2. 在浏览器中访问 `http://:1994` --- ### 方案二:ESP-IDF方案(推荐性能优化) #### 环境要求 - ESP-IDF 开发环境(4.4或更高版本) - Linux/macOS/Windows (WSL) - ESP32-CAM 开发板 #### 编译步骤 ```bash # 1. 进入ESP-IDF方案目录 cd espdif # 2. 设置编译目标 idf.py set-target esp32 # 3. 配置项目(可选) idf.py menuconfig # 4. 编译 idf.py build ``` #### 烧录步骤 ```bash # 烧录到设备 idf.py -p /dev/ttyUSB0 flash # 打开串口监视器 idf.py -p /dev/ttyUSB0 monitor ``` #### WiFi配置 修改 `espdif/main/app_main.c` 中的WiFi配置: ```c #define WIFI_SSID "YourWiFiSSID" #define WIFI_PASSWORD "YourWiFiPassword" ``` #### 使用方法 1. 启动 ESP32-CAM 2. 在浏览器中访问 `http://:1994` ## API 接口 ### 通用API | 端点 | 方法 | 说明 | |------|------|------| | `/` | GET | 返回控制网页 | | `/stream` | GET | 视频流 | | `/on` | GET | 开灯 | | `/off` | GET | 关灯 | | `/breathing` | GET | 呼吸灯开关 | | `/seeInfoBtn` | GET | 获取设备信息 | ### 摄像头设置API | 端点 | 方法 | 说明 | |------|------|------| | `/camera/settings` | GET | 获取摄像头设置 | | `/camera/settings` | POST | 设置摄像头参数 | ### 定时任务API | 端点 | 方法 | 说明 | |------|------|------| | `/tasks` | GET | 获取任务列表 | | `/tasks` | POST | 添加新任务 | ## 技术说明 ### MicroPython方案 - 使用 Microdot 框架创建轻量级 Web 服务器 - LED 灯控制通过 GPIO 引脚实现 - 使用 PWM 实现呼吸灯效果 - 定时任务使用 Timer 实现 ### ESP-IDF方案 - 使用 ESP-IDF 原生框架 - 使用 esp_http_server 创建 Web 服务器 - 使用 LEDC 外设实现 PWM 控制 - 使用 FreeRTOS 定时器实现定时任务 ## ESP32-CAM 引脚信息 ### 基本引脚定义 | 引脚 | 功能 | 说明 | |------|------|------| | GPIO4 | LED控制 | 用于控制板载LED | | GPIO0 | 摄像头XCLK | 摄像头时钟信号 | | GPIO2 | - | 通常用于启动模式选择 | | GPIO5 | 摄像头D1 | 摄像头数据引脚 | | GPIO12 | - | 通常用于启动模式选择 | | GPIO13 | - | 通常用于启动模式选择 | | GPIO14 | - | 可用作通用IO | | GPIO15 | 摄像头复位 | 摄像头复位控制 | | GPIO16 | - | 可用作通用IO | | GPIO17 | - | 可用作通用IO | | GPIO18 | 摄像头D2 | 摄像头数据引脚 | | GPIO19 | 摄像头D3 | 摄像头数据引脚 | | GPIO21 | 摄像头D4 | 摄像头数据引脚 | | GPIO22 | 摄像头PCLK | 摄像头像素时钟 | | GPIO23 | 摄像头HREF | 摄像头行同步信号 | | GPIO25 | 摄像头VSYNC | 摄像头场同步信号 | | GPIO26 | 摄像头SDA | 摄像头I2C数据 | | GPIO27 | 摄像头SCL | 摄像头I2C时钟 | | GPIO34 | 摄像头D7 | 摄像头数据引脚 | | GPIO35 | - | 可用作输入 | | GPIO36 | 摄像头D5 | 摄像头数据引脚 | | GPIO39 | 摄像头D6 | 摄像头数据引脚 | ### 摄像头引脚连接 | 摄像头引脚 | ESP32引脚 | 功能 | |-----------|----------|------| | D0 | GPIO4 | 数据位0 | | D1 | GPIO5 | 数据位1 | | D2 | GPIO18 | 数据位2 | | D3 | GPIO19 | 数据位3 | | D4 | GPIO21 | 数据位4 | | D5 | GPIO36 | 数据位5 | | D6 | GPIO39 | 数据位6 | | D7 | GPIO34 | 数据位7 | | XCLK | GPIO0 | 时钟信号 | | PCLK | GPIO22 | 像素时钟 | | VSYNC | GPIO25 | 场同步信号 | | HREF | GPIO23 | 行同步信号 | | SDA | GPIO26 | I2C数据 | | SCL | GPIO27 | I2C时钟 | | RESET | GPIO15 | 复位控制 | ## ESP32-CAM 功能手册 ### 1. 摄像头功能 - **分辨率**:支持多种分辨率,默认使用VGA (640x480) - **帧率**:最高可达25fps - **图像格式**:JPEG - **控制**:通过I2C接口配置摄像头参数 ### 2. WiFi功能 - **模式**:支持STA(客户端)和AP(接入点)模式 - **速率**:支持802.11 b/g/n - **安全**:支持WPA/WPA2加密 ### 3. 硬件特性 - **处理器**:ESP32-D0WDQ6双核处理器 - **主频**:最高240MHz - **内存**:520KB SRAM + 4MB PSRAM - **Flash**:4MB(部分版本为8MB) - **摄像头**:OV2640 200万像素摄像头 - **LED**:板载LED指示灯 ### 4. 电源要求 - **输入电压**:3.3V-5V - **工作电流**:约100-200mA(取决于摄像头使用情况) ### 5. 启动模式 | GPIO0状态 | 启动模式 | |-----------|----------| | 低电平 | 下载模式 | | 高电平 | 运行模式 | ## 注意事项 ### 通用注意事项 - 确保 ESP32-CAM 正确连接电源(建议使用5V/2A电源) - 确保GPIO0在启动时为高电平(进入运行模式) - 确保WiFi信号强度良好 ### MicroPython方案注意事项 - 确保已正确烧录带PSRAM支持的MicroPython固件 - 需要额外上传摄像头驱动文件(camera.py, sensor.py) - 首次使用建议在Thonny中测试摄像头初始化 ### ESP-IDF方案注意事项 - 需要安装ESP-IDF开发环境 - 确保PSRAM正常工作(摄像头需要PSRAM) - 编译时间较长,请耐心等待 ## 扩展建议 - 添加 MQTT 协议支持,实现远程控制 - 添加运动检测功能 - 添加云端存储支持 - 添加安全认证机制 ## 许可证 本项目采用 MIT 许可证开源。 --- Made by 佛系小吴