基于ESP32的情侣小电视
↓原视频链接↓
↓开源链接↓
https://github.com/Commander-bao/MiniTV-for-couples
1.原理图设计
最新版本:V2.1
改进部分:增加了屏幕亮度调节的功能,改进了电路版和元器件的布局
历史版本:V2.0(暂未开源)
改进部分:改进了电源电路,实现usb供电/电池供电自动切换
历史版本:V1.2
改进部分:去掉了烧录按钮,优化了定位孔布局
历史版本:V1.1
改进部分:改进了电源充放电控制部分的电路,对gpio重新进行了定义,下载电路改成了自动下载电路,优化了PCB布线
历史版本:V1.0
小电视第一代,具备了基础的功能,但是在设计上不够完美
注:原理图中的AMS1117-3.3应替换成V1.1中的BL9110FB-330或其他款LDO
原理图各部分介绍
1.主控部分
本项目使用esp32-wroom-32e作为小电视的主控,下面两个文件是该芯片的数据手册,本项目主控部分电路参考技术手册内外围电路绘制
esp32-wroom-32e_esp32-wroom-32ue_datasheet_cn.pdf
2.USB输入部分
此部分具有两个功能:供电和串口通信,本项目使用一个usb-c母座作为输入接口(V1.x版本使用的是microusb),D+和D-分别代表串口通信的两根数据线,VBUS为电源输入,电压为5v
3.USB转串口部分
本项目使用了一块CH340K作为USB转串口的芯片,配合一块UMH3NTN(集成了两个NPN三极管和电阻)实现自动下载功能
4.输入按钮
本项目设计了两个按钮作为按键输入,可编程自定义其功能,按钮并联了一颗100nf的电容实现硬件按键消抖,由于没有设计外部上拉,编程时对应的GPIO引脚需设置成内部上拉模式
5.电源管理
本项目使用一块TP4056芯片实现电池的充电功能,PROG引脚上的电阻被我设置成4.7k(其最小值为1.2k,对应1A的充电电流,关于阻值设定可以参考下面这篇文章),使用了一颗PMOS实现供电自动切换功能(V1.x没有该功能),使用一个拨动开关控制开关机,led作为充电指示
锂电池充电IC-TP4056电路设计详解_董程森的博客-CSDN博客
6.LCD屏
本项目使用的是中景园的1.3寸lcd显示屏(插接式屏幕),其技术资料如下
8.电压检测
本项目利用两颗大阻值电阻分压+旁路电容+ADC(模数转换器)实现电池电压检测功能
9.降压稳压
本项目使用一块BL9110芯片作为降压稳压芯片,将电池电压转成3.3V输出,供给主控芯片以及其他部分电路
2.PCB绘制
最新版本:V2.1
下面来讲一些PCB布线的注意事项
走线走钝角,信号线切忌直角/锐角走线
旁路电容尽量贴近对应的元器件管脚摆放,距离越短越好
电源线尽量粗;元器件GND引脚就近接地;多打地孔
针对本项目,铺铜时不要盖住ESP32的板载天线,以免影响信号质量
注:本项目的Gerber文件以及BOM表均放在了GitHub的仓库中,可以自行下载(仅发布了V1.x版本,V2.x版本暂未开源)
3.固件开发
本项目固件基于VScode上的PlatformIO扩展开发,使用的是Arduino代码框架
代码中有用到中国天气网的城市代码,这篇博文收录了全国的城市代码中国天气网全城市代码weather_cityId_自然语言设计 天气代码_iechenyb_的博客-CSDN博客
注:V1.x版本的完整代码同样放在了Github的仓库里,有需要可自行下载;.pio/libdeps/esp32dev文件夹中存放的是Arduino的库文件,lib文件夹中存放的是自己加入的库文件,partition.csv为ESP32的分区表
4.外壳设计
本项目外壳使用sketchup建模软件进行建模(V1.x版本)
3d模型共有五个部分:主体、底盖、垫层、按钮、开关,外壳,采用极简风格设计
注:主体内有四个螺丝孔对应电路板的四个定位孔,适配M2*5的自攻螺丝;垫层用于辅助固定显示屏;模型文件分为普通版和高精度版;普通版适配fdm打印机,高精度版适合光固化打印机(本人分别使用的是极光尔沃和三维猴的3d打印服务),均已放在Github的仓库中