6709| 11
|
[项目] 用ESP32制作一款桌面摆件GSM-Weather-S3 |
本帖最后由 -YAYA- 于 2023-7-19 11:58 编辑 桌面摆件GSM-Weather-S3 野生程序员 一、项目介绍 经常在网络上见到桌面天气预报、小电视等作品,网友们做的都很棒,也都实现了很多功能,作者自小喜欢电子,看到了网友们自己diy,心里甚是痒痒,所以下定决心在空闲时间制作一个属于自己的桌面摆件,由于自己是个颜值控,在构思时就计划一定要做一个自己心怡的外观与ui交互,该项目正式开始时间为20年国庆假期,经过半年的修修改改硬件做到了第7版定型了一个gsm-weather版本,只做了PCB与部分ui,后来的两年中经过断断续续的开发最终形成了现在的样子。 二、硬件介绍 gsm-weather-s3硬件主要分为主控板和USB&SD板,两块板子使用fpc连接。 主控板使用ESP32-S3-WROOM-1-N16R8模块,负责屏幕显示、音频采集与播放,图1是主控板实物图: 图1 主控板正反面 ESP32-S3-WROOM-1-N16R8是一个以ESP32-S3芯片为核心封装的模块(图2),使用这个模块就能大大降低工程师设计的复杂度。如果使用纯芯片设计需要设计师自己考虑设计的天线是否能够达到最好性能,我们需要通过调节电容、电感达到阻抗匹配,才能设计出性能最佳的天线,但这个调节过程对新手来说是很困难的。使用模组的设计大大方便了初学者,初学者直接使用即可。 图2 ESP32-S3-WROOM-1-N16R8模块 ESP32-S3-WROOM-1-N16R8的外围电路还是比较少的,图3所示是ESP32-S3-WROOM-1-N16R8的最小系统原理图,除了复位电路的R18与C7不需要其他器件而且内部集成16MFLAH 8MRAM。 图3 主控最小系统原理图 2.2 USB&SD板 USB&SD板主要负责程序下载、电源管理、SD卡底座等功能,图4是USB&SD板实物图: 图4 USB&SD板 2.2.1电源自动切换电路 电源自动切换电路如图5所示,Q6是一个PMOS管,BAT+是电池,5V是充电器输入,当充电器未接入时Q6导通,BAT+流过Q6给VCC供电,当充电器介入时Q6截至5V流过D4给VCC供电。 图5 电源自动切换电路 2.2.2软件开关机电路 软件开关机电路如图6所示,U5是一个输出为3.3V的稳压芯片,该芯片带有使能功能,即第3(CE)脚,给该引脚输入高电平打开输出输入低电平关闭输入,SW2是一个按键,一端接到电源(VCC)另一端连接到单片机引脚(KEY_POWER)和U5使能脚电路。 按键开机过程:(在未插入充电时)当按键按下后VCC流过SW2、D5给CE脚一个高电平使能3.3V输出,此时整个系统得电单片机开始运行,程序首先检测KEY_POWER脚电平,如果该电压为高电平说明是按键开机控制POWER_IO脚输出高电平锁定CE脚电平,这时松开手后由于POWER_IO为高电平会继续使能U5输出。 充电开机过程:(在未按下按键时)插入充电器,此时5V得电经过R22给CE脚高电平使能3.3V输出单片机运行,程序开始检测KEY_POWER电平由于R27为下拉电阻所以识别到为低电平,程序判断案件为按下时运行即充电开机。 按键关机过程:程序在运行过程中实时检测KEY_POWER电平,当为高电平时开始计时,计时达到2S后开始检测按键是否松开,当松开后拉低POWER_IO进入关机。 图6 图左为主控板,图右为USB&SD板 注:左图的POWER_IO2经过FPC线连接到右图的POWER_IO。 2.2.3 USB转串口电路+自动烧录电路 ESP32-S3支持串口下载,由于电脑没有串口接口,所以需要一个USB转串口芯片,如图7,U13型号是CH340C,该芯片支持一路usb转串口ttl,带有RTS、DTR控制引脚,内部集成晶振大大简化了外部电路。 根据ESP3S3数据手册,进入串口下载模式需要在上电前拉低IO0,上面介绍了CH340C带有RTS、DTR引脚,可以在加入开关控制电路来实现自动复位和拉低IO0,如图8,Q4芯片型号是UMH3N,该芯片内部带有两个三极管并且集成偏置电压,如电路所示利用CH340C的RTS、DTR引脚可以实现自动下载程序。 图7 USB转串口电路 图8 自动下载电路 2.3PCB设计 图10图11是PCB设计图,在设计外壳时PCB的安装与尺寸已经确定,为了降低成本两块PCB均使用两层板设计,由于尺寸比较小,USB&SD板经过多次布局才完成。主控板的音频芯片WM8978是QFN封装,该芯片底部有焊盘,由于家中只有一把烙铁在焊接时试了很多办法都不能把底部焊盘焊接上,后来想了一个办法把底部焊盘挖空(如图9),这样可以在背面焊接完美解决了该问题。 图9 图10 主控板 图11 usb&sd PCB 三、外壳设计 外壳使用Autodesk Fusion 360设计制作。 3.1屏幕安装 如开头所说作者是个颜值控,在构思时就把该作品的整体外观定义在了小巧迷你的标签下,由于不会外壳设计,为了完成该作品专门抽时间学习了Autodesk Fusion 360,该软件是一款3d结构设计工具,在网上跟着视频教程学了三周,在自己设计时遇到了很多困难,其中最大的难题的是正面屏幕的安装方式,外壳的正面是一个满屏斜面设计,计划是把屏幕直接卡在外壳上,如图12,由于是斜面外框的尺寸在计算时比较空难,最后无奈用了笨办法经过3次3D打印才得到合适的尺寸。 图12 外壳斜面与截面图左图黑色为屏幕 USB&SD安装也使用卡扣式直接卡在外壳上,底部三个卡点来固定USB&SD PCB,如图13。 图13 USB&SD固定点 3.3 主板与电池安装 电池通过双面胶粘在外壳内壁,主板由于两条FPC线支撑可以直接放在内部。 3.4 外观颜色 设计好外壳后使用3d打印,然后使用自喷漆更换外壳颜色,外壳的设计图与实物图如图14~图16: 图14外壳设计图 图15实物图 图16 实物图 四、软件部分简介 硬件电路设计并焊接完成后就可以开始编写代码了,这个项目使用的是乐鑫官方的ESP-IDF5.0,已实现功能:
代码部分就不全部展开介绍了,需要的朋友可以前往立创开源硬件平台搜索本项目(gsm-weather-s3),项目描述中有完整的带注释的代码,可以自行阅读,下面简单介绍两处: 5.1软件关机 关机代码在bsp_power.c文件里,关机代码如图17,关机逻辑是在开机情况下检测按键是否按下,按下时开始计时,计时到2秒认为用户关机,调用窗口提示“松手关机”(71行),然后检测按键是否抬起,抬起后调用bsp_power_off(),该函数是拉低开机引脚POWER_IO(请参照2.2.2开关机电路),关闭3.3V稳压芯片输出,使整个系统断电,当程序下载到芯片时出现了问题,代码执行到第79行时并没有立刻关机,二十等了一会才关机,使用示波器查看POWER_IO正确拉低,排除软件问题,经过排查是Q1(图6)处的电路问题,关闭QI控制脚后,ESP32模块存有余电情况下没有关闭,等待放电结束后才能关机,后来加入两行代码解决了该问题,如图18红色矩形圈出部分,78行是关闭背光,79行是执行一次连接wifi操作来加快esp32模块余电消耗。 图17 图18 5.2界面交互动效 交互动效效果是使用的lvgl anim功能实现的,anim功能在实现变量在设定时间完成变化时指定变化样式如图19,lv_anim_path_set_cb函数是指定变化样式,样式一共用7种,这样变量在变化是就可以实现非直行运动来呈现更生动的效果。 图19 五、开源信息 屏幕购买链接:https://item.taobao.com/item.htm?spm=a1z09.2.0.0.12222e8dxpsZO3&id=662619384744&_u=kud5m325157 esp32s3模块需要使用ESP32-S3-WROOM-1-N16R8购买链接:https://item.szlcsc.com/3198300.html 六、其他 6.1关于版权 您可以随意使用和复制全部资料,如若用作销售盈利请事先与我联系,否则视为侵权。 6.2帮助 食用过程中有疑问可以通过下面联系方式与我取得联系: 微信:GSM8988 QQ:1063503277 QQ交流群:709259833(非盈利群,没有开会员扩群,群满时按提示进新群) 注意:有网友反应USB&SD打样需要250元左右,这个问题是审核时平台会默认使用半孔工艺(可以在费用详细里看到),下单时备注不要半孔,价格就正常了。 6.3作品实物图与效果图: 6.4 设计图 用前必读:
|
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed