10210| 5
|
[项目] 用ESP32-S3做一台gsm-fm桌面收音机 |
gsm-fm桌面收音机 野生程序员 一、项目介绍 闲暇之余制作一台桌面收音机。本项目使用ESP32-S3做为主控,FM芯片使用RDA5807,集成CS4344 I2S音频芯片可以播放音频、集成INA199可以采集整机工作电流。交互采用一个旋转编码器目前已完成功能: 1、 网络时钟。 2、 FM广播。 3、 天气预报。 4、 B站数据统计。 5、 老黄历。 6、 背光调节。 7、 定时关机。 8、温湿度显示。(2023年5月21日更新) 软件开源地址:https://gitee.com/gsm-fm 食用过程中有疑问可以通过下面联系方式与我联系: 微信:GM8988 QQ:1063503277 复刻群:607741525 注: 1、作品部分技术来源于网络,由于无法找到原作者不能注名出处,若发现有侵权请与我联系修改。 2、作品属于作者一人开发、设计、发帖等,若您发现作品有错误之处还望不吝赐教。 二、硬件介绍 2.1 ESP32-S3电路 ESP32-S3主控电路如图1所示,芯片选用内部带8MRAM+外接16M FLAM。 图1 主控 2.2 电源自动切换电路 电源自动切换电路如图2所示,Q1是一个PMOS管,BAT+是电池,5V是充电器输入,当充电器未接入时Q1导通,BAT+流过Q1给VCC供电,当充电器介入时Q1截至5V流过D1给VCC供电。 图2 电源自动切换电路 2.3 软件开关机电路 软件开关机电路如图3所示,U1是一个输出为3.3V的稳压芯片,该芯片带有使能功能,即第3(CE)脚,给该引脚输入高电平打开输出输入低电平关闭输入,VCC_KEY是按键脚,一端接到电源(VCC)另一端连接到单片机引脚(KEY_POWER)和U1使能脚电路。 按键开机过程:(在未插入充电时)当按键按下后VCC流过VCC_KEY、D4给CE脚一个高电平使能3.3V输出,此时整个系统得电单片机开始运行,程序首先检测KEY_POWER脚电平,如果该电压为高电平说明是按键开机控制POWER_IO脚输出高电平锁定CE脚电平,这时松开手后由于POWER_IO为高电平会继续使能U1输出。 充电开机过程:(在未按下按键时)插入充电器,此时5V得电经过D3给CE脚高电平使能3.3V输出单片机运行,程序开始检测KEY_POWER电平由于内部配置下拉输入所以识别到为低电平,程序判断案件为按下时运行即充电开机。 关机过程:进入关机功能确认关机后,系统拉低POWER_IO失能3.3输出。 图3开关机与稳压 2.4 USB转串口电路+自动烧录电路 ESP32-S3支持串口下载,由于电脑没有TTL串口接口,所以需要一个USB转串口芯片,如图4,U7型号是CH340C,该芯片支持一路usb转串口ttl,带有RTS、DTR控制引脚,内部集成晶振大大简化了外部电路。 根据ESP3S3数据手册,进入串口下载模式需要在上电前拉低IO0,上面介绍了CH340C带有RTS、DTR引脚,可以在加入开关控制电路来实现自动复位和拉低IO0,如图5,Q6芯片型号是UMH3N,该芯片内部带有两个三极管并且集成偏置电压,如电路所示利用CH340C的RTS、DTR引脚可以实现自动下载程序。 图4 USB转串口电路 图5 自动下载电路 2.5 PCB设计 整个项目使用一张双层PCB,如图6、图7 图6 PCB 背面 图7 PCB正面 三、外壳设计 外壳使用Autodesk Fusion 360设计制作。 图8 外壳设计 3.1屏幕安装 屏幕通过双面胶贴在PCB上。 3.2 PCB安装 PCB卡在外壳的内壁槽里,通过一颗螺丝固定。 图9 PCB安装 3.3 天线安装 天线通过外壳孔槽插入内部,使用螺丝固定导线到外壳上。 图10 天线安装 3.4 扬声器安装 扬声器直接卡在外壳槽里。 图11 扬声器安装 3.5 电池安装 电池放在内部空余空间。 图12 电池安装 3.6 外观颜色 设计好外壳后使用3D打印,然后使用自喷漆更换外壳颜色。 图13 外观配色 四、软件部分简介 硬件电路设计并焊接完成后就可以开始编写代码了,这个项目使用的是乐鑫官方的ESP-IDF5.0。 代码部分就不全部展开介绍了,需要的朋友可以前往立创开源硬件平台搜索本项目(gsm-fm),项目描述中有完整的带注释的代码,可以自行阅读,下面简单介绍二处: 4.1 开机动画 开机动画使用的LVGL GIF库,在开发过程中使用VS模拟器可以正常播放,可是移植到ESP32播放开机动画时一直卡死,以为是动画太长原因,把动画剪切成了两部分还是不行,经过多种bug修复,最终使用预加载到PSRAM解决了该问题,具体实现代码如下: 1、定义两个空指针 char *p_gif1 = NULL; char *p_gif2 = NULL; 2、加载gif load_gif(&p_gif1,"/spiffs/power_on_gif_01.gif"); load_gif(&p_gif2,"/spiffs/power_on_gif_02.gif"); 3、加载过程
4、使用
5、使用完释放内存
整个系统通过spiffs_image/system/config.json配置文件配置参数,文件内容如下:
4.3 设计图 图16 gsm-fm原理图1 图15 gsm-fm原理图2 图16 gsm-fm原理图3 4.4 屏幕面板 图17 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed