玩遥控小车或者机器狗,玩到后面十有八九会动一个念头:能不能让它把看到的画面传回来?专业图传一套几百块,其实有个 30 块钱上下的平替方案,圈里玩了很多年——ESP32-CAM。一块带摄像头的 ESP32 开发板,刷个官方例程,连上家里 WiFi,浏览器输入一个 IP 就能看实时画面。这篇把买件、接线、烧录到出图的全过程说一遍,新手照着做大概半小时能跑起来。

这块小板子是什么水平
ESP32-CAM 是安信可(AI-Thinker)出的一块 ESP32 开发板,板载一颗 OV2640 摄像头,200 万像素,最高支持 UXGA(1600×1200)分辨率。板子本身带 WiFi 和蓝牙,有 microSD 卡槽可以本地存图,还有一颗高亮 LED 补光灯(接在 GPIO4)。存储配置是 520KB SRAM 加外挂 4MB PSRAM,跑摄像头数据流够用。价格是真便宜,淘宝和拼多多上裸板常年 25 到 40 块钱浮动(10 月 24 日查),含 OV2640 摄像头。
要说清楚它的定位:这不是专业图传,延迟大概在零点几秒到一秒这个量级,分辨率开高了会掉帧。但用来给机器人装个"眼睛"、做个监控、跑个人脸识别 demo,绰绰有余。
要准备的东西
- ESP32-CAM 主板(含 OV2640 摄像头),约 30 元
- USB 转 TTL 串口模块(FTDI 或 CH340 都行),几块钱——板子本身没有 USB 口,烧录全靠它
- 杜邦线 5 根
- 可选:ESP32-CAM 专用烧录座(十几块),插上就能烧,免去飞线,长期玩建议入一个
接线:五根线,但有一根决定成败
烧录模式下接线如下,对着图接就不会错:
- 串口模块 5V → ESP32-CAM 的 5V
- 串口模块 GND → ESP32-CAM 的 GND
- 串口模块 TX → ESP32-CAM 的 U0R(GPIO3)
- 串口模块 RX → ESP32-CAM 的 U0T(GPIO1)
- ESP32-CAM 的 IO0 → GND(这根是让板子进烧录模式的关键,别忘了)

两个细节:一是串口模块的电压跳帽要拨到 5V 档,3.3V 带摄像头容易供电不足,后面会反复重启;二是 TX/RX 是交叉接,模块的 TX 接板子的 RX(U0R),别顺接。
装环境:给 Arduino IDE 加 ESP32 板包
打开 Arduino IDE,文件 → 首选项,在"附加开发板管理器网址"里填入 https://espressif.github.io/arduino-esp32/package_esp32_index.json ,确定。然后工具 → 开发板 → 开发板管理器,搜 esp32,安装乐鑫官方那个包(体积几百 MB,耐心等)。装完后工具 → 开发板,选 AI Thinker ESP32-CAM——注意不是随便选个 ESP32,型号选错摄像头引脚对不上,出不了图。
烧录:改两行就能用的官方例程
文件 → 示例 → ESP32 → Camera → CameraWebServer,这是乐鑫官方自带的例程,不用去网上找乱七八糟的版本。要改的只有两处:摄像头型号取消注释 AI-Thinker 那一行,WiFi 名和密码换成自己家的。关键部分长这样:
#include "esp_camera.h"
#include "WiFi.h"
// ===========================
// Select camera model
// ===========================
//#define CAMERA_MODEL_WROVER_KIT // Has PSRAM
//#define CAMERA_MODEL_ESP_EYE // Has PSRAM
//#define CAMERA_MODEL_M5STACK_PSRAM // Has PSRAM
//#define CAMERA_MODEL_M5STACK_WIDE // Has PSRAM
//#define CAMERA_MODEL_M5STACK_ESP32CAM // No PSRAM
#define CAMERA_MODEL_AI_THINKER // Has PSRAM
//#define CAMERA_MODEL_TTGO_T_JOURNAL // No PSRAM
// ===========================
// Enter your WiFi credentials
// ===========================
const char* ssid = "**********";
const char* password = "**********";改完直接点上传。接好线的前提下,板子按住复位键再松开(有些板子不用按),等进度条走完,出现 Hard resetting 字样就是烧进去了。
出图:串口拿到 IP,浏览器打开
烧完之后很重要的一步:把 IO0 和 GND 之间那根线拔掉(这根线只在烧录时用),然后按一下板子上的复位键重启。打开串口监视器,波特率 115200,能看到板子连上 WiFi 后打印出提示,最后会给出一个 IP 地址,比如 192.168.1.105 这种,把它抄下来。
电脑或手机连同一个 WiFi,浏览器输入这个 IP,就能打开摄像头的控制页。页面下方有分辨率、亮度、对比度一堆滑杆可以调,点 Start Stream 开始出画面,也有拍照和人脸识别开关。

分辨率和帧率:别贪大
网页里分辨率从 QQVGA(160×120)到 UXGA(1600×1200)都能选。实测经验:CIF(400×296)到 SVGA(800×600)这段比较流畅,适合当机器人视角;开到 XGA 以上帧率就明显掉,UXGA 基本是一秒几帧的幻灯片,只适合拍照不适合看视频。画面流畅度还和你家 WiFi 信号强相关,板子离路由器远了先看信号再怪板子。网页地址后面加 /stream 可以拿到纯视频流地址,方便嵌进自己的页面或者 Home Assistant。
新手最容易卡的四个坑
- 反复重启、串口打印 Brownout detector was triggered:供电不足。换 5V 2A 的靠谱电源,或者给 5V 脚和 GND 之间并一个 470μF 以上的电容。
- 烧录完不出图、串口报 camera init failed:九成是开发板型号没选 AI Thinker ESP32-CAM,或者摄像头排线松了,重新插紧排线。
- 程序烧了但没反应:IO0 接 GND 那根线忘了拔,板子一直停在烧录模式。
- 补光灯烫手:GPIO4 那颗 LED 全亮时间长会很烫,这是设计如此,别用手捂着,也别贴着易燃物。
跑通之后玩法就多了:拿扎带绑在小车车头就是低配 FPV,粘在机器狗背上当第一视角,或者像下面这样装个外壳挂起来,就是一台简易监控摄像头。后面想进阶,可以研究怎么把 /stream 流接到 Home Assistant 或者自己写个 Python 拉流做视觉识别。30 块钱能玩到这个程度,性价比这块属实没什么对手。











brownout那个坑我踩过,换了个5V2A的充电头立马不重启了,早看到这篇就好了
问下up,这个能直接插充电宝供电吗?想装狗背上遛弯用
串口拿到IP那步卡了我十分钟,原来烧完要拔IO0那根线重启,学习了
照着接线做了一次就点亮了,IO0 那根线真是烧录关键,之前死活进不了下载模式原来是它
30块包邮还要啥自行车,我绑在小车上当FPV,延迟半秒能接受