硬件和功能介绍
这是一款USB转UART的适配器,除此以外,还包含了ESP32自动下载电路以及手动下载按键,方便直接对ESP32模块进行编程调试。
模块设计思路、选型及框图介绍
板子主要是基于CH343p的USB转UART串口模块。除了常规的串口功能外,还增加了ESP32自动下载电路。电路中使用UMH3N这款集成度非常高的双NPN三极管,大幅简化了电路,使得模块可以设计的非常迷你。
UMH3N: https://www.digikey.cn/zh/products/detail/rohm-semiconductor/UMH3NTN/659279
外围电路设计主要是自动下载电路。默认情况下可以直接启动ESP32内部的flash,让其正常工作。当下载程序时可以自动重置ESP32并进入下载模式。当然,手动重置与下载模式的按钮也会一并添加。
模块原理图、PCB简单介绍
原本需要两个三极管和两个电阻才可以完成的自动下载电路,在UMH3N的帮助下大幅缩小了元件数量和面积。
供电使用的是3.3V LDO,这个供电仅给外部使用,串口芯片CH343P使用内置的LDO。VIO用跳线帽选择工作电平,而EN和BOOT引脚上拉同样接到VIO,而不是3.3V。主要原因是在对arduino进行编程时,也需要通过DTR引脚的脉冲来复位atmega芯片。因此这两个引脚并不完全是给ESP32使用的,所以电平应和串口电平匹配。
调试器布线十分紧凑,其中5V和3.3V属于供电线路,因此使用了更粗的布线。同时板载还有两个按钮,方便手动进入烧写模式。两个三极管我选择了封装在一起的UMH3N,UMH3N内置了基极限流电阻,所以不需要配置任何外围部件就能直接用,很方便,也节省了很多板上的空间。
另外,元件都布置在了单面,方便直接使用铁板烧进行焊接。
调试软件介绍、关键代码片段及说明
按照上面照片所示,用跳线帽选择3.3V电平,然后找一块ESP32开发板,一一对应把烧录器和开发板连接起来。这里我为了测试烧录器上的LDO供电,特意选择直接使用3.3V进行供电,而不使用5V直通。
代码可以使用简单的BLINK代码,这里我稍稍修改了一下,因为BOOT0按键在程序运行时是可以作为用户按键使用的,因此代码里通过使用BOOT0来切换闪烁频率,以此测试按键。
#include <Adafruit_NeoPixel.h>
bool bt0 = false;
Adafruit_NeoPixel pixels(1, 48, NEO_GRB + NEO_KHZ800);
// the setup function runs once when you press reset or power the board
void setup() {
pixels.begin();
pinMode(0, INPUT);
}
// the loop function runs over and over again forever
void loop() {
if (!digitalRead(0))
{
bt0 = !bt0;
}
if (bt0)
{
pixels.setPixelColor(0, pixels.Color(0, 150, 0));
pixels.show();
delay(1000);
pixels.setPixelColor(0, pixels.Color(0, 0, 0));
pixels.show();
delay(1000);
}
else
{
pixels.setPixelColor(0, pixels.Color(0, 150, 0));
pixels.show();
delay(200);
pixels.setPixelColor(0, pixels.Color(0, 0, 0));
pixels.show();
delay(200);
}
}
模块调通的功能展示图
具体接线,烧录过程以及BOOT按键控制请参考视频演示。
心得体会
时隔一年再次参加电子森林的活动,活动依旧创意十足,诚意满满!