做一个 ESP32-S3 开发板

接触立创 EDA 和嘉立创 PCB 打样服务之后,一直想从头设计一块 PCB,刚好前段时间立创硬件开源平台搞活动,就又薅了一把羊毛,蹭了立创商城的器件券,和嘉立创的打样券,相当于费用全免,做了一块开发板。

因为一直在玩 IoT,因此 MCU 就选择了最熟悉的乐鑫 ESP32-S3,这款 MCU 内置了 Wi-Fi 和蓝牙,官方支持 Arduino 开发框架,GPIO 数量相对前代 ESP8266 也多了很多,而且支持了 PSRAM,在一些高内存应用场合也可以放心使用了。看在免费的情况下,直接选了顶配 N16R8 型号,16MB Flash + 8MB PSRAM 足够应对绝大部分场景。

需求

除开嘉立创搞活动这个原因,在设计这款开发板之前,我也在淘宝上买过 ESP32-S3 的开发板,但是在使用过程中总会碰到各种不满意的地方,因此借这个机会就一起解决了。

宽度要小

在平时做原型验证的时候,会经常要使用到面包板,像下面这种常见的款式。

esp32devkit-breadboard

但是淘宝上常见的 ESP32-S3 开发板的宽度都稍微宽了一些,在插到这个面包板上之后,左右两侧的 GPIO 只能有一侧可以露出接线孔,这样在使用杜邦线或者跳线连接的时候,就非常不方便。

双 USB Type-C 接口

ESP32 系列在 ESP32-S2 之后, 就已经增加了对 USB 设备驱动的支持,可以通过 USB 协议栈将 ESP32-S3 模拟为一个标准的 USB 设备,实现例如 USB CDC、USB MSC、USB HID 等类型的设备,因此通过 ESP32-S3 的 USB 支持,就可以很容易去开发一个模拟键盘输入的设备。

常见 ESP32-S3 开发板可能只拥有一个 USB Type-C 接口,它将 ESP32-S3 的 USB 和 UART 共用,通过拨码开关来切换,但是这样在调试 USB 功能的时候,就没办法通过 UART 来接收日志或者发送指令了。

因此这款新设计的开发板需要支持两个 USB Type-C 接口,这样在开发需要使用 USB 协议栈的产品时,可以同时使用 USB 功能和通过 UART 接收日志。

多电源输出

在 IoT 场景使用 ESP32-S3 进行开发时,经常会需要连接多个不同类型的传感器,每个传感器都需要连接一组电源,在不使用面包板时,常见的开发板的电源引脚就有点不够了。

因此在新设计的开发板中,为了方便连接各种外设,需要多提供几组电源引脚,这样方便在祼板时进行原型设计。

GPIO 全量引出

除了已经被占用的引脚,或者已经具备其他功能的引脚,尽量将所有 GPIO 都引出,避免 GPIO 不够用的情况。

其他

常见的 ESP32 自动下载功能也是必不可少的,这样在调试时,不用手动去按往 BOOT 按钮再按 RST 来将 ESP32-S3 引导进入下载模式。

以及 USB C-C 数据线的支持,这个仅需要添加两个下拉识别电阻即可。

元器件选型

确定需求之后,就可以进行元器件选型了,ESP32-S3 并不需要太多的外部元件,主要的元件如下:

  1. 外部连接接口使用两个 USB Type-C 16P 母座
  2. 电源使用常见 AMS1117 LDO,用于将 5V 转换为 3.3V,提供 3.3V 电源
  3. USB 转串口使用了 CH340C,它支持 DTR 以及 RTS 信号,可以将 ESP32-S3 自动进入下载模式
  4. DTR 和 RTS 信号转 IO0 及 RST 通过 UMH3N 来进行,这还是在立创开源平台上另外一个项目中看到的,直接一个元件就可以代替原来两个 S8050 + 两个电阻才能完成的功能
  5. GPIO 通过 2.54mm 排母引出
  6. 其他电阻电容都使用 0805 封装,便于手工焊接

原理图

作为一个核心开发板,其实并没有太多线需要连,毕竟占大头的 GPIO 都通过 2.54mm 排母引出了。

esp32devkit-schematic

PCB

PCB 采用双层板设计,一般低速场景也不用太在意阻抗、干扰啥的,走线整洁一点就好 🙈

ESP32-S3 的天线部分需要净空,不能铺铜,这个需要注意一下。

在 1000mil 的宽度和使用 0805 封装的情况下,还要保持长度不要太长,整体布局上还是需要比较紧凑的。

布线图

esp32devkit-pcb

渲染图

esp32devkit-pcb-render

焊接成品

在嘉立创打样时使用了红色阻焊 + 45 度网格铺铜,整体效果还是不错的。

esp32s3devkit.jpg

最终产品特点

  1. 1000mil 超窄设计,可以插入常见面包板,并保留左右各一列额外插孔,方便连接外设
  2. 引出全部可用 GPIO(EN,IO0,用于 USB 的 19、20,用于 UART 的 43、44,用于 PSRAM 的 35、36、37 未引出)
  3. 双 USB Type-C 接口,一路 ESP32S3 USB,一路 CH340C,可以同时调试 USB Device + 串口日志
  4. 全 0805 元件,方便手工焊接(除 USB Type-C 接口和三极管)
  5. 4 组 3.3V 和 2 组 5V 电源,直接连接外设时,省去电源和地引脚共用烦恼
  6. 支持 USB 自动固件下载烧录
  7. 配备 USB-C 识别电阻,支持 C-C 数据线供电和调试

立创硬件开源平台

这个开发板对应的工程已经在立创硬件开源平台公开 :

ESP32-S3-WROOM-1 开发板

该项目包括两块 PCB,其中一块为 ESP32-S3 开发板,另外一块为扩展板,将在以后介绍。

或者在 GitHub 找到对应的开源文件:ESP32-S3-DevKit

最后

在第一次打样时,还把 UART 的 TX RX 接反了,调试了半天咋不工作呢,搞硬件比搞软件真的是困难多了,没办法即时反馈。

另外,作为初学者,在 PCB 布线上也没有讲究太多,毕竟懂的不多 🙈

不过作为一款 ESP32-S3,自己设计的,还是能满足自己的需求了。

---EOF---

发表评论?

4 条评论。

  1. 插上面包板后只能露一边插孔这真的是,我发现市面上的esp32开发板全是这样,我还怀疑是不是我买的面包板不标准

  2. 大佬你的扩展板做测试了吗 我想直接再立创打板 不知道行不行

发表评论


注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>