自从上一篇仿照着教程完成了第一次尝试打样的 STM32 核心板,在收到板子尝试焊了一块通完电测试没啥问题之后,因为寻思着教程里面的 STM32 核心板自己也不一定会去用,就马不停蹄地开始画自己另一块真正需要的板子(适合物联网和 DIY 项目,暂时命名为 ESP32-C3-BCHG-01),完成之后的效果图如下:
《基于立创 EDA 如此顺畅》系列文章,链接分别如下:
- 基于立创EDA如此顺畅(第四篇)第一次小批量PCBA 生产!自制ESP32-C3开发板 带有充放电和直流电机驱动 2023/4/1
- 基于立创EDA如此顺畅(第三篇)新升级!自制ESP32-C3开发板 带有充放电和直流电机驱动 并首次尝试 SMT 贴片 2023/3/10
- 基于立创EDA如此顺畅(第二篇)整出一块带有充放电的 ESP32-C3 开发板 2023/1/29
- 基于立创EDA如此顺畅(第一篇)从初学到下单订PCB 2023/1/9
选型与参考
这块板子本来想用 ESP8266 作为板子的主要芯片的,但是后来看了一圈还是决定使用 ESP32,ESP32 有着更好的性能,部分芯片同时拥有 Wi-Fi 和蓝牙功能,可以使用 Arduino IDE 进行开发,非常适合物联网(IoT)和 DIY 项目。在决定使用 ESP32 之后问题又出现了,官方的模组或者芯片太多了,究竟怎么选?这里有一篇还不错的参考资料:ESP32芯片和模组的硬件差异与选型,ESP32-WROOM-32、ESP32-WROVER和ESP32-S衍生模组选型 。
目前主要有这几种的芯片:ESP32(发布有段时间,较为成熟)、ESP32-S2(没有蓝牙!)、ESP32-C3(次新;支持 2.4 GHz Wi-Fi 和 Bluetooth 5 (LE))、ESP32-S3(最新;只有样板(买不太到);SDK支持一般;性能较 ESP32 有较大提升)。然后对比了一下价格、库存、教程等综合因素,选择了 ESP32-C3,毕竟乐鑫官方出了一本新书叫做《ESP32-C3物联网工程开发实战》。
实际上乐鑫基于上述的几款芯片都出了对应的芯片模组,且配合同款芯片的不同模组出了几款官方的开发板用于试验和学习用途。所谓的模组就是芯片加上芯片所需的外围电路,如晶体、存储器、电源电路等组成的,在使用时只需要把模组嵌入到自己的产品之中即可,无需重新设计芯片的外围电路,也就是说“开箱即用”。详细可以看一下 ESP32-C3 各种产品的概述和选型:https://www.espressif.com/zh-hans/products/socs/esp32-c3 ,可以看到页面下方有着这些产品:
点进去详细了解之后可以看到,基于 ESP32-C3 的官方开发板有三款,DevkitM 和 DevkitC 的区别在于使用的模组不同,综合考虑并参考了立创商城的模组价格和库存之后,这次参考的电路为 DevkitC 的原理图(实际上没什么区别,只不过使用的模组不同罢了),使用了 ESP32-C3-WROOM-02
模组。而官方的开发板 ESP32-C3-DevKitC-02(如上图所示)最大的问题在于接口没有使用 Type-C 。此外,为了方便各种物联网的应用以及 DIY 小制作的需求,在基于官方开发板的电路原理图基础上加上了锂电池充放电功能。
功能定义
结合官方开发板的文档,将重新设计的开发板的详细介绍如下:
ESP32-C3-BCHG-01 是一款基于 ESP32-C3-DevKitC-02 的开发板,使用通用型模组 ESP32-C3-WROOM-02。该款开发板具备完整的 Wi-Fi 和低功耗蓝牙功能。板上模组大部分管脚均已引出至两侧排针,引脚与 ESP32-C3-DevKitC-02 完全相同,可根据实际需求通过跳线连接多种外围设备,后续版本将考虑到可以将开发板插在面包板上使用或将开发板体积进一步缩小。此外,开发板 ESP32-C3-BCHG-01 支持外接锂电池并提供充电功能,在开发板的背面增加两个 XH2.54 2pin 接口,一个可以外接开关控制开发板的开启和关闭,另一个可以外接 3.7V 锂电池给开发板供电。
主要组件(ESP32-C3-BCHG-01 v1.1.X) | 介绍(括号中为上图板子上的位置) |
---|---|
ESP32-C3-WROOM-02 | ESP32-C3-WROOM-02 是一款通用型 Wi-Fi 和低功耗蓝牙双模模组。该模组采用 PCB 板载天线,配置了 4 MB SPI flash。(U3) |
5 V 转 3.3 V LDO(AMS 1117-3.3) | 电源转换器替换成了熟悉的 AMS 1117-3.3,输入 5 V,输出 3.3 V。(U2) |
5 V 电源指示灯 | 开发板连接 USB 电源或外接锂电池并打开开关之后,该指示灯亮起。(LED2) |
排针 | 所有可用 GPIO 管脚(除 Flash 的 SPI 总线)均已引出至开发板的排针,排针位置与 ESP32-C3-DevKitC-02 一致。(H1、H2) |
Boot 键 | 下载按键。按住 Boot 键的同时按一下 Reset 键进入“固件下载”模式,通过串口下载固件。(SW1) |
USB 接口 | USB 接口。可用作开发板的供电电源或 PC 和 ESP32-C3 芯片的通信接口或锂电池充电口,采用 2.54 间距的焊盘,可外接排针或 XH2.54 接口或 USB 转接板(推荐使用 Type-C)。(CN3) |
Reset 键 | 复位按键。(SW2) |
USB 至 UART 桥接器(CH340C) | 单芯片 USB 至 UART 桥接器,替换成了熟悉的 CH340。(U1) |
RGB LED(WS2812B) | 可寻址 RGB 发光二极管,由 GPIO8 驱动(与官方开发板一致)。(LED1) |
3.7V 锂电池接口 | 锂电池可以直接粘贴在开发板的背面,推荐使用厚度小于 10mm ,长宽小于 50mm 和 35mm 的锂电池。(CN2) |
锂电池电量指示灯 | 显示锂电池电池剩余电量以及充电状态的指示灯(共4颗,分别代表还有 25%、50%、75%、100% 的电量),当使用锂电池供电时,关闭开发板电源之后30秒,电量指示灯熄灭。(LED3、LED4、LED5、LED6) |
2.1A 充电 2.4 A 放电高集成度移动电源 SOC (IP5306_CK) | 如其名所示,该芯片提供 2.1A 充电 2.4 A 放电,实际上是应用于充电宝上面的。此处使用的芯片的具体型号为 IP5306_CK ,与 IP5306 相比,IP5306_CK 不会在开发板负载用电电流较小的情况下30秒之后自动断电。在焊接时,IP5306 的底部为 GND 需要与 PCB 板子充分接触或焊接,否则 IP5306将无法工作。(U4) |
其余贴片电阻、电容 | 均为 0805 规格,方便焊接。 |
ESP32-C3-BCHG-01 v1.1.X 原理图
从左到右、从上到下的依次顺序来看:
- USB 输入(5V、D-、D+、GND)用于充电、供电和数据传输;
- CH340C 配套 USB 数据传输用于串口数据传输;
- 板载 RGB 灯;
- AMS1117-3.3 电源转换器;
- BOOT 和 RESET 按键;
- 排针*2;
- ESP32-C3-WROOM-02;
- IP5306_CK 充放电芯片。
PCB 布局
PCB 布局和相关的教程与方法可以参见本系列文章的第一篇,本篇中的布局方法和理念与上一篇文章中的内容均一致:从初学到下单订PCB | 基于立创EDA如此顺畅(第一篇)。其中需要注意以下几点:
- ESP32-C3-WROOM-02 模组有板载天线,而天线附近禁止铺铜(可参见下图中左侧),且在天线处挖出了矩形槽孔,也就是在 PCB 板子上左侧会缺一块;
- PCB 板子的外围尺寸为:50mm*70mm;槽孔的直径为3.2mm,位置为 43mm*63mm;其余的单位均为 mil;
- 电源线为 30mil 或 50mil;其余布线均为 10mil;
- CN1 和 CN2 位于 PCB 的反面,使用时注意锂电池的正负极与开发板的接口是否对应;
- CN1 需要外接开关(例如:船型开关或者拨动开关),当开关打开之后开发板正常工作,否则只能给外接锂电池充电;
存在的一些改进空间:该 PCB 板子的面积可以根据实际需求进一步减小(使用更小尺寸的贴片电阻和电容);排针 H1 和 H2 的间距并不标准,所以无法用于面包板。
焊接
元器件实际上淘宝购买会便宜很多,但是立创商城包装分类很清楚,所以里面的元器件基本上购自立创商城。不过 IP5306_CK 需要从淘宝购入。由于贴片件最小也使用了 0805 的封装,也没有针脚间距很小的芯片,于是焊接过程相较于上一篇的 STM32 核心板容易和省心很多。
上电测试:使用 Arduino IDE
Step1:打开安装完成的 Arduino IDE,点击“文件”-“首选项”-“附加开发板管理器网站”(如图所示),输入并点击“好”:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
Step2:点击“工具”-“开发板”-“开发板管理器”,在开发板管理器中搜索“esp32”或类似关键词,点击“安装”或 Install 即可安装(若不可安装,请自行检查网络设置或寻找替代方案):
Step3:选择 ESP32C3 Dev Module 作为开发板,使用示例文件中的“ESP32”-“GPIO”-“BlinkRGB” 测试板载 RGB 的测试情况。其余使用方法与 Arduino 其他开发板均一致。
/*
BlinkRGB
Demonstrates usage of onboard RGB LED on some ESP dev boards.
Calling digitalWrite(RGB_BUILTIN, HIGH) will use hidden RGB driver.
RGBLedWrite demonstrates controll of each channel:
void neopixelWrite(uint8_t pin, uint8_t red_val, uint8_t green_val, uint8_t blue_val)
WARNING: After using digitalWrite to drive RGB LED it will be impossible to drive the same pin
with normal HIGH/LOW level
*/
//#define RGB_BRIGHTNESS 64 // Change white brightness (max 255)
// the setup function runs once when you press reset or power the board
void setup() {
// No need to initialize the RGB LED
}
// the loop function runs over and over again forever
void loop() {
#ifdef RGB_BUILTIN
digitalWrite(RGB_BUILTIN, HIGH); // Turn the RGB LED white
delay(1000);
digitalWrite(RGB_BUILTIN, LOW); // Turn the RGB LED off
delay(1000);
neopixelWrite(RGB_BUILTIN,RGB_BRIGHTNESS,0,0); // Red
delay(1000);
neopixelWrite(RGB_BUILTIN,0,RGB_BRIGHTNESS,0); // Green
delay(1000);
neopixelWrite(RGB_BUILTIN,0,0,RGB_BRIGHTNESS); // Blue
delay(1000);
neopixelWrite(RGB_BUILTIN,0,0,0); // Off / black
delay(1000);
#endif
}
厉害,一整套软硬件开发出来了。对比成熟的SMT32开发板,你的板子接口少了一点哈,PCB工具看上去是protel或者AD,好久没做硬件了~
嘿嘿嘿,小彦大神之前也是搞硬件的?我这个属于业余水平🤣,主要是产品和兴趣驱动哈哈哈。选ESP32主要是因为它自带 WiFi 和蓝牙,而且成本低,stm32 我不熟而且我估摸着我也用不太到。用的是国产EDA,各种元器件都画完整了,拼拼凑凑一键下单哈哈哈🤣
是呀,之前做硬件开发的,做好好几年了。你这个兴趣高级,软硬件一起搞。现在国产EDA做得这么完善了么,是什么名字的EDA软件呀?😂
用的是这个:嘉立创EDA 业余选手感觉还行🤣
感觉是小而美的一个PCB工具,你有打算去做硬件开发么?😀待遇也可以的
哈哈哈算不上🤣,我目前是想做类似于硬软结合再加点iot的产品类岗位。