发作品
专业版

ESP32-S3多功能独立副屏[iCRT]

6.2k
0
0
13
简介:耗时2个月制作的ESP32S3制作的复古多功能副屏: AIDA64副屏, 音乐频谱节拍计, 动态天气时钟, 视频播放,
“暖冬造物迎新年”征集令
开源协议:GPL 3.0(未经作者授权,禁止转载)
创建时间:2023-12-18 18:04:41更新时间:2024-04-01 10:45:36

描述

展示视频

【开源】复古多功能副屏“iCRT”,音乐频谱节拍、动画天气时钟,来看看吧_哔哩哔哩_bilibili

 

2024-1-22更新

扩展坞已完成

多功能副屏“iCRT"的扩展坞 - 嘉立创EDA开源硬件平台 (oshwhub.com)

 

东西都在这里下载,都有 https://pan.baidu.com/s/19-CHRh_MAejMqFVaL9os6Q?pwd=e8y5

制作交流群 739444215

 

之前SMT贴了一些板子,如有兴趣可直接到我工坊买

https://gf.bilibili.com/item/detail/1105534080

 

关于

制作这个iCRT源自之前的游戏机项目”老霸王游戏机“。
在游戏机项目完成后不久,我偶然看到一张老照片,上面有我之前用过的一个CRT显示器,就特别怀念。
正好Fusion360还不够熟练,想着借此机会用它来练练曲面造型,就开了这个坑
第一次将3d打印的外壳拿到手的时候我和朋友都觉得很好看,也挺多人喜欢,遂起了念头,给它加入灵魂—PCB和程序,让它成为独立的一个工具,而不是一个显示设备。 于是画板、打板、焊接、写代码、再改、加功能,到最后,就成为了现在这个“穷尽我目前技术力的多功能副屏设备”了。


PS:iCRT这个名字来源于我的儿子,我之前其实取的名字叫MiniCRT。

功能介绍

目前iCRT包含以下几个功能:

  • AIDA64副屏,通过RemotePanel实现,具有百分比和进度条的动画效果
  • 音乐频谱节拍计,通过内部的麦克风采集环境声,进行FFT处理、实时节拍检测后,显示漂亮的频谱效果和节拍RGB灯
  • 动态天气时钟,通过高德地图API获取天气信息,并读取对应的动态效果作为背景。
  • 视频播放,播放事先处理过的Mjpeg+Mp3文件,音画同步
  • 图片显示,显示JPEG文件。

AIDA64副屏

稍微科普一下目前副屏的几种实现办法,以及为什么iCRT叫“独立”副屏。
副屏主要用来显示当前电脑的一些信息,比如CPUGPU温度、占用、频率等,也会加入一些个性化元素,总之就是一种仪表盘的感觉。
实现的方法主要有:

  • 扩展显示:将显示设备连接到电脑的显示接口,然后作为扩展显示器,将电脑屏幕扩展到该显示器,并将AIDA64仪表盘移动到扩展的屏幕
    优点是效果好,屏幕大,性能强;
    缺点(个人觉得)是扩展显示会占用部分显卡性能,并且会不小心将鼠标移动到扩展屏,有时候不知道鼠标去哪里了,在全屏玩大型游戏的时候很讨厌
  • 独立Web显示:通过一个独立的外设,通常是安卓机、树莓派或者其他能访问网页并显示的设备,远程访问AIDA64提供的网页来展示
    优点是不影响电脑性能,与电脑独立,可以放到其他地方
    缺点是AIDA64提供的RemotePanel网页显示的特效有限,无法显示自定义的仪表和动画特效
  • 独立自定义显示:通过一个独立的外设远程访问AIDA64提供的数据(也可以是自己写的上位机提供的数据),并根据自己的样式来展示(本项目)
    优点仍然是不影响电脑性能,与电脑独立,可以放到其他地方
    对于本项目来说,缺点就是ESP32-S3性能限制,无法显示更好更清晰的效果以及动画,
    如果是性能强劲的安卓副屏+有人帮你设计UI+有人帮你做成安卓APP,那就是我认为最完美的副屏了
  • 第三方外设:AIDA64支持一些第三方外设,比如罗技和雷蛇的一些东西,他们用自定义的协议传输数据
    优点应该是独特的外形和与设备的契合能力了(没用过)
    缺点(没用过)

本项目通过获取AIDA64的RemotePanel的信息,解析后通过自己做好的UI进行展示。
在CPU和GPU的占用上加入了独特的仪表动画效果,加入了随时间流逝的折线图效果
在硬盘、内存使用上也添加了动画效果。

另外:左下角的图片可以自己更换,凸显个性。直接在网页上即可更换,无需用读卡器

音乐频谱节拍计

我最喜欢的功能

一直都很喜欢音乐可视化,也喜欢音乐频谱。之前做过用电脑采集音频进行FFT后,将数据发送给ESP32进行展示,这次做的是实时采集环境音然后分析显示
麦克风试了好几种,有模拟的,有数字的,数字的也测试了好几款,目前这个ICS43434是效果最好的一款,当然也最贵
实时节拍算法换了好几个,也花了茫茫多的时间,这个是我能做到的最好的实时节拍检测了,通过声音能量在一个窗口期内的变化进行判定,能适应大部分的歌曲
在检测到节拍后,RGB灯会闪烁一次,可以通过底座的扩展接口外接音响和RGB灯带,这些灯带也同样能同步进行闪烁
给麦克风采集加入了动态增益算法,通过判断最近一段时间内的平均声音强度,来动态提高或者降低缩放比例,以实现任何音量都能有完美的频谱展示和节拍检测

动态天气时钟

很久以前有个手机厂商叫火腿肠(HTC),当我在别人手机上看到他那随着天气而变动的动态背景的时候,惊为天人,心想这实在是太酷炫了,
这次做天气时钟,我想的就是一定要动态背景
本项目的天气动画来自网上找到的HTC SENSE天气动画。HTC的手机业务也早已停掉多年,如HTC告知我不能使用,请告知我,我会第一时间删除
天气3-5分钟更新一次,目前来自我的高德API,如果自己有API的可以自己申请然后填入自己的使用
在天气改变时,会有丝滑的切换动画
时钟方面,包含了公历、农历的显示,包含了常见节假日、以及24节气的显示

视频播放

或许不能叫视频播放,ESP32-S3只是一个面向IoT的单片机,内部并没有视频编解码功能,就算是JPEG解码,也只是软解码
本项目的视频播放是通过将视频处理为MJPEG文件+MP3文件,保存为相同的主文件名后拷贝到播放目录,设备会同步解码播放
需要MJPEG必须是25帧,因为是按25帧进行的音画同步
MJPEG解码采用的最新最快的SIMD解码,是ESP32-S3上能做到的最快解码了,比JPEGDEC等普通解码库快50-80%

图片播放

同上,没什么好说的,就是播放图片

以上就是iCRT目前实现的所有功能。
它的定位是一个全能的副屏,桌面的摆件,以上所有功能都是基于这个需求来做的
以它的硬件同样也可以移植之前的老霸王游戏机的代码,玩FC游戏,如果有需要的话

后续更新计划

后续计划加入(也就是挖坑):

  • 多城市天气切换(方便你看你和你的TA)
  • 微信小程序控制(虽然Web和按键都能控制,但是手机控制会不会更洋气一些?)
  • 更多的AIDA64UI界面(这个个人不是设计专业,可能需要专业人士给一些设计方案)
  • 单独的MP3播放?(这个喇叭这么挫应该不会有人想用它听歌吧不会把不会吧不会吧…)
  • 扩展底座的制作。目前已经预留了扩展接口。扩展底座计划会有更大的喇叭、更多的RGB氛围灯、USB2.0扩展坞。 这样它的功能就又多了一个
  • 老霸王游戏机。 有了扩展底座之后,可以通过扩展底座供电,现有背后的usb接口就可以接手柄,运行游戏机程序了

控制方法

通过设备后面的按键控制:长按为呼出、确定菜单,短按为当前功能里面的下一个或者菜单的下一项。
通过Web控制:在设备配网成功后,在AIDA64界面的上方可以看到该设备的IP地址,在浏览器内输入这个IP地址就能显示该设备的控制页面,在这个界面控制更加方便和灵活

配网

在没有WIFI信息的时候,设备会打开配网AP,SSID为 Crt-Ap,密码为12345678。
连上后,稍等片刻会自动弹出配网页面,并且自动搜索当前环境的WIFI热点,选中你的网络,输入密码,稍等片刻即配网完成。
如果网络变动需要重新配网,需要在设置界面内选择“清除WIFI信息”来清除,这样下次启动就会重新打开配网热点。

激活

本项目花了很多的时间精力和不算多的钱
由于CRT外壳打印较贵,为了便于DIY,我还特地花了一天时间建立了个便宜的青春版外壳开源供DIYer使用
不想靠也没法靠这个赚钱,但也希望自己花的时间有那么一点价值,以及能获得认同和喜欢
9.9的激活码(一杯打折瑞幸)就能使用我前后编写了一年的固件,以及今后随着我的爱好更新的新功能
如果懒得做可以买我SMT+组装好的成品

我有一个小小的梦想,就是自己做的东西、写的代码能获得别人喜欢的同时,还能帮我实现瑞幸自由

硬件配置

  • 单片机:ESP32-S3-N8R8
  • 显示屏:3.2寸320×240 IPS SPI显示屏(贵)
  • 存储:TF卡,SDMMC 4Bit模式
  • 音频播放:MAX98357 + 普通小喇叭
  • 音频采集:ICS43434 数字I2S麦克风
  • 额外设备:WS2812灯珠控制
  • USB:USB接口支持正反插,正插为CH340X串口,烧录设备用,反插为ESP32-S3自带USB,可以作为HOST在游戏机固件内连接手柄使用
  • 外壳:3D树脂打印的 复古CRT显示器造型(怀旧版,贵) 和 时尚台历造型的(青春版,便宜) 两款

编程平台

IDE:platformio + arduino,6.4.0 ,图形框架是lvgl

开源

想了很久还是选择将PCB和青春版外壳开源,让想自己动手做的朋友也能自己做
一则是因为不能忘记自己做东西的初衷,是想分享自己做的有趣的好玩的东西
二则因为答应了不少群友会开源除了代码以外的内容
代码由于前后花了一年多的精力,以及里面有不少自认为不错的设计,实在是无法开源,见谅

链接会在立创那边开源后再更新

鸣谢

一起完成本项目的神秘藏宝室(Bilibili)、无常喵态等,(好人卡)你们是好人

 

 

制作说明

 

BOM

直接在嘉立创导出BOM,已尽可能适配了基础库,直接SMT都可以(我就是SMT的)

其中部分原件的购买链接如下:

屏,ST7789V插接款IPS不带触摸 https://item.taobao.com/item.htm?spm=a1z09.2.0.0.758b2e8dl7yLYk&id=606752409953&_u=od53pk3b0b
麦,ics43434 https://item.taobao.com/item.htm?spm=a1z09.2.0.0.758b2e8dl7yLYk&id=696102320967&_u=od53pk4f88
立式fpc,18P https://item.taobao.com/item.htm?spm=a1z09.2.0.0.758b2e8dl7yLYk&id=665810216667&_u=od53pk8afc
ch340x https://detail.tmall.com/item.htm?id=724023996301&spm=a1z09.2.0.0.758b2e8dl7yLYk&_u=od53pkbac5
Max98357 https://item.taobao.com/item.htm?spm=a1z09.2.0.0.758b2e8dl7yLYk&id=719153151868&_u=od53pkf9c8
按键,底座到柄高7MM https://item.taobao.com/item.htm?spm=a1z09.2.0.0.5a8f2e8dyPZ3om&id=617002359193&_u=pd53pkd33d
灯珠 https://item.taobao.com/item.htm?spm=a1z09.2.0.0.5a8f2e8dyPZ3om&id=678219564054&_u=pd53pkc859
AHT20模组 https://item.taobao.com/item.htm?spm=a1z09.2.0.0.418e2e8dybhkR1&id=746563131957&_u=pd53pk23b3
喇叭(青春版)3020腔体4R3W-2P1.25 https://item.taobao.com/item.htm?spm=a1z09.2.0.0.17fc2e8dr0xOtT&id=674903789729&_u=pd53pk0473
喇叭(怀旧版)XHXDZ-2840塑胶-4R 3W https://item.taobao.com/item.htm?spm=a1z09.2.0.0.17fc2e8dr0xOtT&id=23386844911&_u=pd53pkbe40

注意,不要声音的不用购买MAX98357和喇叭,不要环境传感器的不要购买AHT20(这个温度不太准,显示的实际上是模组的温度,比环境温度高了几度。

极度省钱的话,也可以不购买CH340X,USB反插就是直接CDC刷机。(但是会影响后续适配游戏机固件的手柄连接)

模组购买N8R8的。

焊接

这个板子的焊接很简单(除了MAX98357),注意RGB灯的温度,以及立式FPC插座的方向,按PCB上画的方向焊接

底部的焊盘是扩展坞,用于连接扩展坞上的喇叭、扩展RGB灯带,扩展坞待后续更新。

90%的问题都是虚焊或者连锡导致

烧录

USB插头正插是CH340X烧录,反插是CDC,都可以烧录。但是CDC烧录后看不到串口信息,默认串口信息是从CH340X出来的。

如何判断当前是340x还是CDC?插上后串口名字里面有340的就是340x,没有就是CDC

提供的固件分为两种,单文件版 和 升级版。

单文件版适用于第一次刷机,刷到地址0x0,刷机后会清空里面的内容,包括激活码信息。单文件版文件名里面有all三个字母。

升级版适合后续升级,刷到地址0x10000,刷机后不会清空里面的设置。

刷机工具选择 ESP32-S3, UART模式。 SPI SPEED 80M, SPI MODE DIO,速度921600

固件在 https://pan.baidu.com/s/19-CHRh_MAejMqFVaL9os6Q?pwd=e8y5 这里下载,进入iCRT目录找。

调试

烧录完成后,串口应该能正常看到启动信息,如果看不到表明没焊好。

准备一张TF卡,将网盘里面提供的目录结构内的目录拷贝到TF卡根目录,插上去之后,上电即可看到画面和声音(没声音就是没焊好98357)

寻求帮助前请提供串口信息

配网

本设备的AIDA64副屏和天气时钟需要配网使用。

在上电后,设备会自动打开一个AP名为Crt-Ap,密码是12345678。用手机连上这个AP,稍等片刻会弹出配网页面,自动搜索当前环境内的热点,选择你的热点并输入密码,即可完成配网。

注意:有的手机一旦发现热点连不上互联网,会自动断开热点用5G网络,这个时候需要再连一次AP。连上AP后如果没有弹出配网页面,请到手机浏览器上输入192.168.4.1 也能打开。

控制

设备可通过背后的按键控制和Web网页控制。

按键控制:长按为呼出菜单、确定。 短按为下一项。

Web控制:直接点对应按钮就行。

Web控制里面可以设置高德地图的API KEY(默认用的是我的),设置城市代码(城市代码就是你所在的区域的身份证开头6位),设置AIDA64主机地址(就是你的电脑IP地址)

激活功能也在Web控制里面,提供给我机器码后,将获得的激活码输入,即可完成激活。

AIDA64

1、去找一个激活了的AIDA64客户端(自行)

2、菜单【文件】【设置】【LCD】,选择Remote Sensor。

3、端口80,分辨率随便填个1280×800,勾选【启用RemoteSensor LCD支持】

4、点击【LCD项目】,在右上角点击【导入】,然后选择我网盘内的 my_aida64_setting.rslcd 文件。

5、导入后需要进行一些设置,因为每个人的CPU GPU 主板 硬盘 网卡等都不相同,请一项一项设置。

6、注意,绝对不要修改”Show Label“里面的文字,”Show unit”必须填入”^”(不含引号),否则设备检测不到。

7、一切修改完成后点击OK,然后将AIDA64最小化。可以在设置里面让它开机自动启动。(设置、常规、在windows启动时运行AIDA64)

8、通过网页访问iCRT的IP地址,在最下面的“副屏主机地址” 里面设置你电脑的IP地址(也就是运行AIDA64的电脑IP),然后保存。

如果本地80端口被占用,则需要在后面加冒号,加自定义端口。

例如
192.168.0.100 使用 192.168.0.100的主机地址,默认80端口
192.168.0.100:9223 使用 192.168.0.100的主机地址,使用9223端口

注意冒号是英文冒号…..

9、防火墙允许AIDA64访问网络,或者手动放通TCP80端口(或者你自定义的端口),重要!

设置完成后,将iCRT切换到AIDA64功能窗口,即可显示电脑状态信息。

音乐频谱

默认开启自动增益功能,即是设备会根据音量大小动态调整增益以显示更好的频谱条。

可以在Web页里面关闭动态增益,固定在某一个增益。

听歌旁边放个这个很棒的啦,相信我。

天气

在Web页面里面配置好城市代码即可使用。如有可能也可以注册自己的高德API KEY并填入。

温度和湿度有两个数字,分别表示设备上传感器的温度湿度,以及高德天气的温度湿度。

设备的温度会超过当前环境温度几度(这个真没法,它要发热)

(晴天的晚上的大月亮最好看)

MJPEG播放

将视频通过下面的FFMPEG命令处理后,改名为 my0.mjpeg my1.mjpeg…..等,拷贝到 TF卡的custom目录。如要同步播放音频,音频文件的名字与mjpeg文件名字相同(my0.mp3,my1.mp3 ….)

./ffmpeg -i 你的视频文件名.mp4 -vf “fps=25,scale=-1:240:flags=lanczos,crop=320:240:(in_w-320)/2:0” -ss 00:00:13 -t 00:02:18 -q:v 7 my0.mjpeg

./ffmpeg -i 你的视频文件名.mp4 -ss 00:00:13 -t 00:02:18 -b:a 128k my0.mp3

注意,-ss部分为剪辑命令,不需要剪辑的就去掉。

更新:网盘内提供傻瓜式转换工具,由神秘藏宝室编写

 

 

图片显示

将320×240大小的JPEG文件改名为 p0.jpg p1.jpg p2.jpg 等,放入 TF卡的pic目录即可。

 

Q&A

如果是在工坊或者黄鱼本人或者朋友处买的,发货前都会激活并测试完所有功能,不会有硬件问题。以下针对自驾车:

90%以上的问题都是因为模组、芯片等虚焊或者连锡,请用微距镜头或者手机相机仔细检查,以下默认忽略掉没焊好的情况

Q: 找不到串口
A: 万用表检测模组是否正常上电3.3v,也检查一下ch340芯片的供电

Q: 无法刷固件
A: 同上

Q: 屏幕不亮或者花屏
A: 排线是否插反,是否有背光

Q: 没声音或者爆音或者白噪音
A: 这个很难焊,基本上都是没焊好98357那个芯片。当然如果在设置里面将设备静音了,也会没声音

Q: TF卡初始化失败
A: 卡坏了或者目录不对

Q: RGB灯珠不亮
A: 灯珠被烫坏

Q: 麦克风采集不到音频
A: 底部可能连锡

Q:无法访问AIDA64

A:在电脑浏览器地址里面输入本机(电脑)ip地址,看看是否能打开aida64的网页,如不能打开,则大概率是80端口被占用,请设置其他端口

其他问题,请进群咨询 739444215

 

好像就是这些了

 

 

 

 

 

 

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

附件

序号文件名称下载次数
1
青春版底盖.stl
29
2
青春版主体.stl
107
克隆工程
分享
0
0
添加到专辑
侵权投诉
工程成员
全部评论(1
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程