🧱 总体思路
ESP32-CAM 是一个可以独立运行的微型摄像头模块。我们要做的:
- 用 Mac + Arduino IDE 烧录一个 视频流服务器程序 到 ESP32-CAM;
- 让 ESP32-CAM 连上 Wi-Fi,并能通过浏览器访问视频;
- 在 Frigate(Docker) 中配置这个 IP 视频流作为摄像头输入。
✅ 你需要准备的硬件和软件
硬件:
- ESP32-CAM 开发板(推荐 AI Thinker)
- 带 USB 转串口芯片的底座(ESP32-CAM-MB)
- micro USB 数据线
- Wi-Fi 热点(可以用手机热点测试,最好是 2.4GHz)【校园网No我的热点有问题使用的随身wifi】
软件:
- Mac 上安装好的 Arduino IDE(含 ESP32 开发板支持包)
- 安装好的 Frigate(Docker 版)-【见上篇】
🔌 第一步:连接 ESP32-CAM 与 Mac 电脑
- 把 ESP32-CAM 插到 ESP32-CAM-MB 底座上(注意摄像头排线要插紧);
- 用 micro USB 数据线连接到底座,再连接到 Mac;
- 在开发板上没有按钮操作的情况下,自动进入烧录模式,你不需要手动接线(ESP32-CAM-MB 会自动处理)。
注意 摄像头安法(小白)
📦 一、摄像头接口结构简图
ESP32-CAM 摄像头座(FPC 接口)长这样:
┌─────────────────────────────┐
│ ▒ ▒ ▒ ▒ ▒ ▒ ▒ ▒ ▒ ▒ ▒ ▒ ▒ ▒ │ ← 白色卡扣(可抬起)
├─────────────────────────────┤
│ 金属触点朝下的排线插入口 │
└─────────────────────────────┘
摄像头模块排线:
棕色软排线
一面有金属触点(金手指),一面是塑料面
✅ 正确方向是:金属触点朝下插入接口
🧠 第二步:Mac 上用 Arduino 烧录视频流服务器程序
1. 配置 Arduino IDE
打开 Arduino IDE:
-
菜单栏 > Arduino → Preferences → 追加开发板网址:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json -
菜单栏 > Tools → Board → Board Manager → 搜索
ESP32→ 安装Espressif Systems (📌 建议选择版本 3.0.0 或 3.1.1,避免 3.2.0 的 Bug) -
验证安装是否成功
完成安装后,打开终端执行:
ls ~/Library/Arduino15/packages/esp32/tools/xtensa-esp32-elf/
你应该看到一个类似:
esp-2021r2-patch3-8.4.0
2. 选择开发板和端口
- Tools → Board:
AI Thinker ESP32-CAM - Tools → Port: 选择
/dev/cu.usbserial-xxxxx(你的串口设备)
3. 打开例程:CameraWebServer
- 文件 → 示例 → Examples for AI Thinker ESP32-CAM →
Camera > CameraWebServer
如果没找到该示例,运行下面的代码:
#include "esp_camera.h"
#include <WiFi.h>
// 替换为你自己的 Wi-Fi 信息
const char* ssid = "YourWiFiName";
const char* password = "YourWiFiPassword";
// AI Thinker 摄像头配置
#define PWDN_GPIO_NUM -1
#define RESET_GPIO_NUM -1
#define XCLK_GPIO_NUM 0
#define SIOD_GPIO_NUM 26
#define SIOC_GPIO_NUM 27
#define Y9_GPIO_NUM 35
#define Y8_GPIO_NUM 34
#define Y7_GPIO_NUM 39
#define Y6_GPIO_NUM 36
#define Y5_GPIO_NUM 21
#define Y4_GPIO_NUM 19
#define Y3_GPIO_NUM 18
#define Y2_GPIO_NUM 5
#define VSYNC_GPIO_NUM 25
#define HREF_GPIO_NUM 23
#define PCLK_GPIO_NUM 22
void startCameraServer();
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println(WiFi.localIP());
camera_config_t config;
config.ledc_channel = LEDC_CHANNEL_0;
config.ledc_timer = LEDC_TIMER_0;
config.pin_d0 = Y2_GPIO_NUM;
config.pin_d1 = Y3_GPIO_NUM;
config.pin_d2 = Y4_GPIO_NUM;
config.pin_d3 = Y5_GPIO_NUM;
config.pin_d4 = Y6_GPIO_NUM;
config.pin_d5 = Y7_GPIO_NUM;
config.pin_d6 = Y8_GPIO_NUM;
config.pin_d7 = Y9_GPIO_NUM;
config.pin_xclk = XCLK_GPIO_NUM;
config.pin_pclk = PCLK_GPIO_NUM;
config.pin_vsync = VSYNC_GPIO_NUM;
config.pin_href = HREF_GPIO_NUM;
config.pin_sscb_sda = SIOD_GPIO_NUM;
config.pin_sscb_scl = SIOC_GPIO_NUM;
config.pin_pwdn = PWDN_GPIO_NUM;
config.pin_reset = RESET_GPIO_NUM;
config.xclk_freq_hz = 20000000;
config.pixel_format = PIXFORMAT_JPEG;
config.frame_size = FRAMESIZE_QVGA;
config.jpeg_quality = 10;
config.fb_count = 1;
esp_err_t err = esp_camera_init(&config);
if (err != ESP_OK) {
Serial.printf("Camera init failed with error 0x%x", err);
return;
}
startCameraServer();
}
#include <WebServer.h>
WebServer server(80);
void handle_jpg_stream(void) {
WiFiClient client = server.client();
String response = "HTTP/1.1 200 OK\r\n";
response += "Content-Type: multipart/x-mixed-replace; boundary=frame\r\n\r\n";
server.sendContent(response);
while (1) {
camera_fb_t * fb = esp_camera_fb_get();
if (!fb) break;
response = "--frame\r\n";
response += "Content-Type: image/jpeg\r\n\r\n";
server.sendContent(response);
server.sendContent((const char*)fb->buf, fb->len);
server.sendContent("\r\n");
esp_camera_fb_return(fb);
if (!client.connected()) break;
}
}
void startCameraServer() {
server.on("/stream", HTTP_GET, handle_jpg_stream);
server.begin();
}
void loop() {
server.handleClient();
}
4. 烧录代码
-
点击顶部左箭头上传按钮;
-
若失败,按一下 ESP32-CAM-MB 上的 RST(EN)按钮,再上传;
-
上传完成后,点击串口监视器(波特率 115200),你会看到:
WiFi connected 192.168.1.88
📱 第三步:在浏览器查看视频流
在任意设备(Windows 或手机)浏览器中访问:
http://192.168.X.X/stream
可以看到摄像头画面了!确认正常后再进入 Frigate 设置。
🧩 第四步:Windows 上 Frigate 配置 ESP32-CAM 流
假设你已经在 Windows 上安装好 Frigate(Docker),编辑 config.yml,添加一个摄像头配置:
cameras:
esp32cam:
ffmpeg:
inputs:
- path: http://192.168.X.X/stream
roles:
- detect
detect:
width: 320
height: 240
fps: 5
然后重启 Frigate 容器,看到摄像头显示在线即可。
✅ 总结流程简图
[ESP32-CAM + MB板 + 摄像头]
↓ USB连接
[Mac电脑烧录程序 + 配Wi-Fi]
↓
[ESP32连上Wi-Fi,输出视频流地址]
↓
[Windows浏览器测试视频]
↓
[Windows上Frigate配置视频源接入]


——Frigate实时监控&spm=1001.2101.3001.5002&articleId=148929447&d=1&t=3&u=ac4739eb2ca2491db44885cb7be4d933)
1549

被折叠的 条评论
为什么被折叠?



