ESP32 型号怎么选:DevKit V1、WROOM-32E、S3 与 C3 对比

Cartoon comparison of three matte-black ESP32 boards - a 30-pin classic board with a silver shield can and one USB-C port, a wide S3 board with two USB-C ports and a black camera on an orange ribbon, and a tiny C3 Super Mini with gold castellated pads

这个网站上几乎每一个项目,买 30 针的 ESP-32(CH340)就对了 —— 教程里写「ESP32 DevKit V1」的时候,指的就是这块板,而在我们的目录里,它正是 USB Type-C 的那一款。想要更多排针位置就拿 38 针的 WROOM-32E,要做摄像头或 AI 才上 S3,板子必须够小的时候才选 C3 Super Mini。

这里的四款用的是同一颗双核 ESP32 芯片,差别只在 USB 芯片、接口形状和排针长度;S3 和 C3 换掉的则是芯片本身。还在几个芯片家族之间犹豫?我们那篇 ESP32、ESP8266、Arduino Uno 对比回答的是那个问题;下面的内容,都默认你已经确定要用 ESP32 了。

ESP32 型号该买哪一款?

下面每一块板子,跑普通的 Wi-Fi、GPIO 和传感器代码时,用的都是同一份 Arduino 程序。差别只在三个时刻咬人:插上数据线的时候、在 IDE 里选开发板的时候,以及引脚或者内存不够用的时候。

开发板 排针位置 USB 接口与芯片 里面的芯片 什么时候买它
ESP-32 (CH340) 30 Type-C,CH340 双核 ESP32 默认选择 —— 这里每一篇教程都合用
ESP-32 (CP2102) 30 Micro-USB,CP2102 双核 ESP32 你手上已经有 CP210x 驱动和 micro-USB 线
ESP-WROOM-32E 38 Micro-USB,CH340 双核 ESP32 你要更长的排针、GPIO0,以及多一个 GND
ESP-32S 38 Micro-USB,CH340 双核 ESP32 同上,另外屏蔽罩旁边多一段裸露的镀金 PCB 天线
ESP32-S3 WROOM CAM 40(2 × 20)+ 摄像头座 两个 Type-C(UART + 原生 USB) 双核 S3,16 MB flash,8 MB PSRAM 摄像头、音频,或者大缓冲区
ESP32-C3 Super Mini 16 个焊盘(13 个 GPIO) Type-C,原生 USB 单核 RISC-V C3 18 × 22.5 mm 比引脚数量更要紧

你可能还会需要

ItemPriceQty
ESP32 Expansion Board 30P Expansion Board ESP32 Shield GPIO Expansion Development KitESP32 Expansion Board 30P Expansion Board ESP32 Shield GPIO Expansion Development Kit32DEVBDRM8.90
Data Cable Type-A Type-C MicroUSB Type-B 0.5m 1m 30cm 0.3m 100cm Data Transfer Upload Code - TYPE-A TO TYPE-C CABLE (1.0M)Data Cable Type-A Type-C MicroUSB Type-B 0.5m 1m 30cm 0.3m 100cm Data Transfer Upload Code - TYPE-A TO TYPE-C CABLE (1.0M)ATCC100RM5.90
Data Cable Type-A Type-C MicroUSB Type-B 0.5m 1m 30cm 0.3m 100cm Data Transfer Upload Code - MicroUSB CABLE (1.0M)Data Cable Type-A Type-C MicroUSB Type-B 0.5m 1m 30cm 0.3m 100cm Data Transfer Upload Code - MicroUSB CABLE (1.0M)ATMC100RM5.90

扩展板上的排母是 30 位的,所以只坐得下两款 30 针的 ESP-32;更长的 38 针 WROOM-32E 和 ESP-32S 插不进去。数据线要照着自己板子上的接口挑:CH340 版 ESP-32、S3 CAM 和 C3 Super Mini 用 Type-C,CP2102 版、WROOM-32E 和 ESP-32S 用 micro-USB。而且必须是数据线;只能充电的那种线可以把板子点亮,却永远变不出一个 COM 口。

六款里有两款的排针是散装在袋子里的 —— ESP32-S3 WROOM CAM 和 ESP32-C3 Super Mini —— 所以要预留十分钟拿烙铁,跟着我们那篇排针焊接教程走;另外四款到手就已经焊好针了。S3 CAM 的 OV5640 摄像头和它的排线是随盒附带的。

CH340 还是 CP2102 —— 到底差在哪?

CH340 和 CP2102 都是 USB 转串口(UART)的桥接芯片,两者没有谁更好这一说。经典 ESP32 自己没有 USB 硬件 —— 它对外说的是 3.3 V 电平的普通串口,而笔记本上并没有这种插座 —— 所以在接口和模块之间要坐一颗桥接芯片做翻译。这个选择决定两件事。

驱动。两颗桥接芯片在电脑眼里是两种不同的 USB 设备,所以要先装上对应厂商的驱动,COM 口(或者 /dev/tty…)才会出现 —— CH340 的驱动来自 WCH,CP210x 的来自 Silicon Labs。较新的 macOS 和 Linux 内核两颗都自带;Windows 通常要手动装 CH340 那一个。一台电脑装一次就够,不是一块板装一次。

数据线。在我们的产品线里,CH340 版 ESP-32 用的是 USB Type-C 插座,而 CP2102 版、WROOM-32E 和 ESP-32S 用的是 micro-USB。无论哪一种,线里都必须有数据线芯:只能充电的线只接了电源,桥接芯片根本枚举不出来,于是板子的电源灯亮着,端口列表却始终是空的。

其他就没有区别了。两块板都用同样的双三极管电路,把桥接芯片的 DTR 和 RTS 接到 EN 和 IO0 上,所以两块板都会自己进入下载模式,也都以 IDE 默认挑的 921600 波特率上传。要是端口压根就没出现过,我们那篇 ESP32 无法识别指南会按顺序把它排查完。装驱动大概是这个样子:

卡通近景对比图:左边是哑黑板边上的银色椭圆形 USB Type-C 插座,上方一颗带引脚的小芯片;右边是同样板边上的银色梯形 micro-USB 插座,上方一颗扁平方形芯片
下单买线之前,先靠插座认出自己那块板:椭圆形的 Type-C 口、上面一颗带引脚的小芯片,是 CH340 版;梯形的 micro-USB 口、上面一颗扁平方形芯片,是 CP2102 版。

在 Arduino IDE 里该选哪个开发板名字?

开发板这一项不是个标签 —— 它选定的是编译目标、flash 分区布局和引脚映射,所以选错了芯片家族,编出来的固件那颗芯片根本跑不起来。在四块经典板之间,选哪个几乎无所谓(同一颗芯片、同样 4 MB flash);跨代之间,则是完全不一样的事。

首先这个列表得先存在。Arduino 并不自带 ESP32 的开发板条目:打开 工具 > 开发板 > 开发板管理器,搜 esp32,装上 esp32 by Espressif Systems。要是什么都搜不到,把 https://espressif.github.io/arduino-esp32/package_esp32_index.json 粘进 文件 > 首选项 > 附加开发板管理器网址,再搜一次。这一个包就覆盖了本文里的每一块板。

你买的板 工具 > 开发板 > ESP32 Arduino 里的条目 要改的设置
ESP-32 (CH340),30 针 ESP32 Dev Module (或 DOIT ESP32 DEVKIT V1) 不用改
ESP-32 (CP2102),30 针 ESP32 Dev Module (或 DOIT ESP32 DEVKIT V1) 不用改
ESP-WROOM-32E,38 针 ESP32 Dev Module 不用改
ESP-32S,38 针 ESP32 Dev Module 不用改
ESP32-S3 WROOM CAM ESP32S3 Dev Module Flash Size 选 16MB,PSRAM 选 OPI PSRAM
ESP32-C3 Super Mini ESP32C3 Dev Module USB CDC On Boot 选 Enabled

ESP32-S3 CAM 那两项设置,直接来自它模块上的丝印 N16R8 —— 16 MB 的 flash 加 8 MB 的 PSRAM,走的是八条线的 octal 总线。把 Flash Size 留在 4MB,分区表就是照着一颗只有实际容量四分之一的芯片排的;把 PSRAM 留在 QSPI,内核会去探错总线,psramFound() 返回 false,摄像头程序就会在申请帧缓冲区的那一刻挂掉。

C3 多出来的那一项,才是最容易把人绊住的。那块板上根本没有桥接芯片 —— C3 是在自己的硅片里生出 USB 接口的 —— 所以 USB CDC On Boot 关着的时候,内核会把 Serial 接到硬件 UART 引脚上,你的输出就从 GPIO20/21 跑进空气里去了。把它打开,同一份程序就正常打印了。

我们也卖 ESP32-C2(ESP8684),不过它得另起一句话来说:它是买来做 ESP-IDF 开发的,不是给 Arduino IDE 用的。Arduino ESP32 内核把 C2 的条目藏了起来,也没有附带任何 C2 的编译库 —— 要求开放它的那个请求已经以 won’t-fix 结案 —— 所以工具菜单里不会出现任何 ESP32-C2 开发板,硬塞一个进去也编不过。

下面这段程序,一次上传就能替你确认选对没有。它是直接问芯片自己是什么,而不是听谁的说法,所以 flash 容量选错、PSRAM 设置漏了,都会当场露馅。

// WhichESP32 - 直接问这块板,它自己到底是什么。
// 上传后打开串口监视器,波特率选 115200,再按一下 RST/EN 键。

void setup() {
  Serial.begin(115200);
  delay(2000);  // 留点时间给原生 USB 的板子重新枚举,再开始打印

  Serial.println();
  Serial.println(F("--- what this board actually is ---"));

  // 下面这些数字都是直接从芯片里读出来的,不是从任何规格表上抄的。
  Serial.print(F("Chip model    : "));
  Serial.println(ESP.getChipModel());

  Serial.print(F("CPU cores     : "));
  Serial.println(ESP.getChipCores());

  Serial.print(F("Silicon rev   : "));
  Serial.println(ESP.getChipRevision());

  Serial.print(F("CPU clock     : "));
  Serial.print(getCpuFrequencyMhz());
  Serial.println(F(" MHz"));

  // 引导程序被告知可以使用的 flash 容量,取整到 MB。
  Serial.print(F("Flash         : "));
  Serial.print(ESP.getFlashChipSize() / (1024 * 1024));
  Serial.println(F(" MB"));

  // PSRAM 是外挂内存。只有多带一颗内存裸片的板子才报得出数字。
  Serial.print(F("PSRAM         : "));
  if (psramFound()) {
    Serial.print(ESP.getPsramSize() / (1024 * 1024));
    Serial.println(F(" MB"));
  } else {
    Serial.println(F("none"));
  }

  // 程序和 Wi-Fi 协议栈都加载完之后,内部 SRAM 还剩下多少。
  Serial.print(F("Free heap     : "));
  Serial.print(ESP.getFreeHeap() / 1024);
  Serial.println(F(" KB"));
}

void loop() {
  // 没有需要重复的动作 - 想再看一次报告,按 RST 就好。
}

经典板报出来的是一个封装型号 —— 现在的模块是 ESP32-D0WD-V3,早一点的是 ESP32-D0WDQ6,绝不会是光秃秃的「ESP32」四个字符 —— 加上 2 核、4 MB flash、PSRAM 为 none。S3 CAM 报的是 ESP32-S3、16 MB、PSRAM 8 MB。C3 Super Mini 报的是 ESP32-C3、1 核。

30 针还是 38 针 —— 多出来的到底有几个能用?

38 针的板子多引出八个排针位置,而这八个是什么,值得先弄明白。其中六个是 GPIO6 到 GPIO11,在模块内部接到它自己的 SPI flash 芯片上 —— 也就是你的程序住的那块内存。去驱动其中任何一个,芯片会在半条指令中间丢掉自己的代码然后重启,所以它们是引出来了,却不能用。真正新增的位置是 GPIO0 —— 启动模式选择脚,30 针的布局只把它留在 BOOT 按键上 —— 以及第三个 GND。5 V 那条电源两块板都有;30 针那块只是把它标成 VIN 而已。

所以当客户来问我们要「banyak pin」的板子时,老实的答案是:多一个能用的 GPIO,多一个 GND。GPIO0 在板子跑起来之后就是一个普通输出脚,只要复位那一刻没有东西把它拉低就行 —— 芯片读的正是那一刻的电平,用来决定是启动你的程序,还是停在下载模式里等着。要 38 针的 ESP-WROOM-32E,是为了更长的排针和更宽松的布局,不是因为上面有八个新信号在等你。

板子长度决定配件。30 针扩展板上是两条 15 位的排母,丝印依次是 EN、VP、VN、D34 一直到 D13 和 GND —— 正好就是 30 针的引脚排列。更长的 38 针板坐不进去,所以这块扩展板只该配 ESP-32(CH340)ESP-32(CP2102)一起买。

卡通对比图:一块短的 30 针哑黑 ESP32 板正确坐进黑色扩展板并配一个青色对勾,旁边一块更长的 38 针板悬在同样的排母上方、两端明显超出,配一个橙色叉号
扩展板上的排母是 30 位长。30 针的 ESP-32 直接落进去;38 针的 WROOM-32E 或 ESP-32S 会超出两端,坐不下去。

经典款、S3 还是 C3 —— 换新一代能换来什么?

经典 ESP32 是双核 Xtensa LX6,主频最高 240 MHz,内部 520 KB SRAM,带 Wi-Fi、蓝牙 Classic 和 BLE,而且在 WROOM-32E 的默认 N4 版本上是 4 MB flash。四款经典型号里装的都是这颗芯片,金天线的 ESP-32S 也包括在内:LX7 内核是从 S3 那一代才开始的,而 ESP-32S 模块自己印出来的功能列表,就是经典那一套。

ESP32-S3 WROOM CAM 换成了两颗 Xtensa LX7 内核,只带 Wi-Fi 和蓝牙 5 LE —— 没有蓝牙 Classic,所以它配对不了音频设备。它的模块上印着 N16R8:这是 Espressif 的简写,意思是 16 MB flash 加 8 MB PSRAM。这块板存在的理由,就是 PSRAM。

PSRAM 是模块里的第二颗内存裸片,通过一条专用总线映射进芯片的地址空间。你会需要它,是因为那 520 KB 内部 SRAM 得同时装下 Wi-Fi 协议栈、你的变量和任何缓冲区,而一帧 640×480 的 RGB565 图像就是 640 × 480 × 2 = 614,400 字节 —— 在 Wi-Fi 还没来分走一份之前,就已经比全部内部 SRAM 还多了。有了 PSRAM,这一帧是从几个 MB 里划出来的,代价是访问速度慢一些。没有 PSRAM,就没有摄像头缓冲区。

它那两个 Type-C 插座并不通用:左边那个走 UART 桥接芯片,供电和上传都用它;右边那个是 S3 自己的原生 USB,能提供内建的 JTAG 调试,也能让板子把自己扮成 USB 键盘或者 U 盘。两个都能供电。

ESP32-C3 Super Mini 走的是另一个方向:单核 RISC-V,160 MHz,400 KB SRAM,带 Wi-Fi 和 BLE 5,4 MB flash 直接封在芯片封装里。最后这一点,正是这块板能做小的原因:没有独立的 flash 裸片,也就不需要带屏蔽罩的模块 —— 只剩一颗裸 QFN 加一小片陶瓷天线 —— 而 C3 自带的 USB 外设,又把桥接芯片也一起省掉了。18 × 22.5 mm 的板上有十三个 GPIO 引到半孔焊盘,但它们的编号是 GPIO0–10 和 20/21,所以照着经典板 D21/D22 标号写的程序,得先把引脚改过来才跑得起来。另外还有两条支线:Uno 外形的 ESP32,可以沿用 Uno 的扩展板;以及 S2 Mini,它有原生 USB,但完全没有蓝牙。

想看好几块 ESP32 开发板摆在一起跑分对比的话:

卡通对比图:左边一颗接着橙色排线的摄像头,画面溢出一个小的青色内存方块并配橙色叉号;右边同一颗摄像头装进一个大得多的青色内存方块,还有余量,配青色对勾
一帧 640×480 的图像是 614,400 字节。经典 ESP32 的 520 KB 内部 SRAM,在 Wi-Fi 分走一份之后就装不下它了;S3 的 8 MB PSRAM 还绰绰有余。

ESP32 能不能上 5 V?

供电和信号要分开回答。喂 5 V 是对的:USB 本来就是 5 V,VIN 或者 5V 脚进的是板载 AMS1117 稳压器,由它降到模块要用的 3.3 V。C3 Super Mini 和 S3 CAM 的 5V 焊盘也是同样的用法。

信号则完全相反。每一个 GPIO 都是 3.3 V 的脚,ESP32 规格书把高电平输入的上限定在 VDD + 0.3 V —— 大约 3.6 V。5 V 传感器的输出直接接上 GPIO,远远超过这个数,所以要用电阻分压或者电平转换器。供电这一块,我们那篇 ESP32 供电方案讲得比较全。

我们从真实客户身上看到的常见错误

“Esp wroom 32e tu ch340 atau cp2102?” —— CH340,接口是 micro-USB。我们产品线里 Type-C 的那一块,是 30 针的 ESP-32(CH340),另外一个商品,所以下单买线之前,先照着图片确认插座形状。

“for this esp32 (ch340) what is the board name in arduino ide” —— ESP32 Dev Module。CH340 是 USB 桥接芯片,不是主控芯片,所以它根本不会出现在开发板列表里。

“ini ada 2 usb type C…. blh terang sikit fungsi 2 usb type c ni” —— 在 S3 CAM 上,左边是 UART 桥接口,供电和上传用;右边是原生 USB,做 JTAG 和 USB 设备用。先从左边那个开始。

“esp32 sy beli tu sesuai ke guna expansion ni” —— 只有 30 针的板子才行。数一数单边的针数:十五个坐得进扩展板,十九个坐不进去。

常见问题

学校项目该买哪一款 ESP32?

30 针的 ESP-32(CH340)。每一篇 ESP32 教程都是照着它的引脚标号写的,它到手就已经焊好排针,而 30 针扩展板也正是为它做的。

ESP32 DevKit V1 和 ESP-32(CH340)是同一块板吗?

是。「DevKit V1」说的是 30 针那种布局,单边十五针,我们两款 30 针商品用的都是它。两块在 IDE 里都选 ESP32 Dev Module 或者 DOIT ESP32 DEVKIT V1。

CH340 和 CP2102 —— 哪个更好?

都不更好。两颗都是 USB 转串口的桥接芯片,上传速度一样。这个选择真正决定的,是你要装哪一家的驱动(装一次),以及在我们产品线里插座是 Type-C(CH340)还是 micro-USB(CP2102)。

ESP32 开发板有多少 flash?

经典款是 4 MB,也就是 WROOM-32 和 WROOM-32E 模块的默认版本,其中 IDE 默认的分区方案分给你程序的是 1,310,720 字节,大约 1.25 MB。S3 CAM 是 16 MB,C3 Super Mini 的 4 MB 则封在芯片封装里面。

5 V 传感器能不能接到 ESP32 上?

不能直接接到 GPIO 上。引脚是 3.3 V 的,规格书写的高电平输入上限大约是 3.6 V,所以要用电阻分压或者电平转换器。从 USB 或者 VIN 用 5 V 给板子供电,则完全没问题。

最后更新:2026 年 8 月。有问题?WhatsApp 联系我们

Leave a Reply

Your email address will not be published. Required fields are marked *