加入交流群  

扫一扫,添加管理员微信
备注:参考设计,即可被拉入群
和也在搞设计小伙伴们碰一碰

收藏 

评论 

王达业 发布

#第六届立创电赛#PC性能监视器

 
设计简介

1.项目功能介绍

本项目实现了一个可以实时监控电脑状态的硬件设备。它拥有一块4.3寸的LCD彩色显示屏,可以实时监视CPU、内存、硬盘、显卡的实时状态,方便掌握电脑主要硬件的负载。既适合游戏玩家了解系统的瓶颈所在,也适合用来观察是否有非法的后台程序在长期占用电脑的资源(比如挖矿类木马程序)。

同时,本项目也适合作为机箱美化的副屏使用。本项目使用的是上位机配合串口通讯的解决方案,仅需一根TYPE-C连接线就能工作,对比市场上现有的HDMI接口的小型显示屏+AID64之类的系统监控软件的解决方案,本项目拥有成本低廉,系统资源占用小,方便灵活的优点。市场上的HDMI方案虽然通用性强,但是作为副屏时一方面会浪费一个HDMI接口加一个用于供电的USB接口,另一方面还会加大显卡的压力,浪费系统性能。

最后,因为整个系统的性能冗余比较充足,所以在开发者手中,本项目也可以作为一款开源的嵌入式GUI开发平台来使用。

本项目硬件部分100%使用立创EDA进行设计。

因为本项目软件、硬件完全开源,可以随意浏览、下载本项目资源,或在此基础上进行二次开发。但是禁止商用

image.png

2.项目属性

本项目为首次公开,为本人原创项目。项目未曾在别的比赛中获奖。

3.开源协议

本项目完全开源,包括PC端的上位机代码和MCU端的代码。使用GPL3.0协议分发。禁止商用。

4.硬件部分

显示系统

首先是面子问题。出于实用性,我们需要尽量在一个屏幕上显示更多的内容,所有我们不能使用过于小型的屏幕。但是屏幕太大也不好,太大的屏幕一方面会增加DIY的难度,提高整个系统的制作成本(屏幕的费用,PCB打样的费用,控制系统的费用等等),另一方面,也会造成桌面空间的浪费,做为机箱副屏使用时也会降低对机箱的兼容性。经过综合考虑,我选择了通用的4.3寸分辨率为480x272的LCD显示屏,面板材质为TN,硬件接口为RGB:

image.png

此类显示屏是事实上的商业显示屏标准,在市场上很容易买到,价格也十分低廉。甚至可以从各种报废的设备中拆解得到(如各种媒体播放器设备)。

480x272的分辨率虽然不高,但是在本系统中已经够用。4.3寸的大小,使得驱动板打样的费用非常便宜,同时在保证显示足够内容的基础上不会显得太大或者太小。

由于此类显示屏使用的是恒流背光系统,所以我们需要一个恒流的背光驱动电路。在此,我选择了PT4103这款LED恒流驱动IC。PT4103是一款升压型的LED恒流驱动IC,拥有开路保护的功能,同时支持PWM调光,而且在3.3V的系统中即可正常工作,可以完全满足本项目的需求。

关于驱动电流的选择,我并没有按照屏幕数据表上的设定使其工作在20mA,而是设定为10mA,这可以保护背光,同时减小整个系统的功耗。经过测试,10mA和20mA的背光亮度区别并不大。但是如果你在自己制作时使用了IPS屏幕,则应该使用标准的20mA驱动电流。

image.png

控制系统

由于屏幕使用的是RGB接口,而且对于嵌入式系统而言,这个屏幕的分辨率已经不低了。所以为了驱动这块儿屏幕的同时保证整个UI系统的流畅性,我们需要一款性能较高的MCU。由于本项目立项时,全世界的范围内正处于“缺芯”状态,各种型号的MCU不是没货就是价格大涨。经过综合的权衡后,这里选择了STM32F746ZG这款MCU作为整个控制系统的核心。此MCU带有LTDC控制器,可以非常方便的驱动RGB接口的显示屏。同时该MCU还带有DMA2D加速器,可以对UI系统的绘制提供加速,保证界面的流畅性。另外,由于该MCU相对比较冷门,所以价格还算可以接受。

image.png

由于F746ZG的定位是经济型MCU,所以内部的SRAM无法满足屏幕的显存需求,所以这里还添加了一颗型号为W9825G6KH的SDRAM作为系统显存使用。实际制作时,任何容量在8M以上,速度在108MHz以上的SDRAM都可以满足需求。

image.png

本项目使用MCU的内置Flash即可满足所以代码+资源文件的存储,但是为了后期的功能扩展,额外预留了NOR Flash的扩展电路。如果不需要进行高级功能的开发,此部分可以省略:

image.png

通讯系统

为了与上位机通讯,我们需要一款USB<->UART桥接芯片,在这里,使用经典的CH340E接口芯片即可,便宜稳定性能好。电路中额外设计了一颗RGB灯,可以用来指示通讯状态

image.png

相关电路(为了防止意外的短路或者过载情况,还设计了有一颗自恢复保险丝)

image.png

供电系统

整个系统的功耗并不大,所以使用经典的LDO:AMS1117即可满足需求:

image.png

外围/IO系统

本系统设计了4个轻触按键用来提供对整个系统的控制,四个按键均为通用,功能由所在的UI界面决定:

image.png

RTC晶振和后备电池的设计,保证了电脑在关机的情况下,本设备也可以作为一款桌面时钟使用:

image.png

在早期的设想中,考虑到了高温和高系统占用率下的蜂鸣器报警功能,实际使用中发现,此功能过于鸡肋(且烦人),所以在最终代码中去掉了该功能。但是考虑到未来可能的功能开发,所以相关电路在硬件设计上依然保留:

image.png

PCB设计

为了节省成本,本项目为双层PCB设计,如果你在实际制作时有更多的预算,推荐使用4层板,并且对SDRAM部分走线进行等长处理。

顶层(背面)

image.png

底层(正面)

image.png

3D模拟图

image.png

各部分说明

image.png

5.软件部分

MCU端软件开发

本项目使用ST官方推出的免费IDE:STM32CubeIDE配合STM32 HAL库来开发。开发语言为C语言。编译器为IDE自带的GCC编译器。

image.png

相较于Keil,CubeIDE的代码编辑器更为友好,与STM32的配合也更加流畅。

因为本项目牵扯到了与上位机的通讯,所以为了方便开发,使用了开源的FreeRTOS系统框架。系统中设计了UI主线程、通讯线程、按键扫描线程和蜂鸣器控制线程(已废弃,仅为兼容性保留)共四个线程协同完成功能,线程具体信息如下

image.png

UI系统作为下位机开发终点,使用的是开源的LVGL库来实现:

image.png

LVGL是一个强大的嵌入式UI框架,可以在内存不超过1M的嵌入式系统中提供可以媲美手机等高性能移动设备的UI显示体验。

在本项目中,UI系统的结构如下:

image.png

其中待机界面为系统上电,但未与PC上位机连接时显示的界面,此时显示内容为时钟。因为大部分的PC主板都可以设计为关机时继续为USB提供电力,所以此功能使得关机后,本设备依然可以作为一个时钟来使用。第一次上电并建立通讯后,会自动从待机界面跳转至概览界面。但是在任何其他界面断开连接进入待机界面后,再次恢复连接时,会自动回到断开连接之前显示的界面。

此界面的壁纸可以在代码中替换。

image.png

在与上位机成功建立通讯后,系统会自动跳转至概览界面,在此界面下,可以用图标的形式同时查看CPU、内存、硬盘和GPU的主要状态,如CPU/内存占用率,硬盘的活动时间比例等。除了待机界面外的所有界面顶端都有一个状态栏。状态栏除了显示对应四个按钮在当前界面下的功能外,还提供了系统时间显示功能(这在运行全屏程序比如游戏时是很有用的)。

image.png

在此界面下,可以选择对应的图表进入详情查看界面,显示关于此硬件更多,更加详细的数据。此处显示了CPU的名称,300秒内的使用率,速度和温度:

image.png

在概览界面下,也可以进入设置界面,设置屏幕的亮度:

image.png

PC端上位机部分

PC端上位机部分是整个系统的开发最大的难点,因为需要获取硬件的状态并传输至设备端,而读取硬件的信息已经属于比较底层的部分了,操作系统的库中并未显式提供各项操作的API。我并没有类似的开发经验,所以刚开始的时候一筹莫展。在尝试了驱动法、WMI查询法之后,偶然发现了开源的OpenHardwareMonitor项目,这个项目提供了一套方便的,可以访问底层硬件驱动信息的API框架,并且提供了一个示例WinForm程序,这使得开发的难度大幅度下降。

最终,本项目上位机部分使用C#开发,使用OpenHardwareMonitor项目作为底层驱动框架。因为上位机不需要太多的功能,所以在UI框架的选择上放弃了WPF而是使用了经典WinForm框架以最大成都减小系统消耗,加快启动速度,并防止出现监控软件自己占用了太多系统资源的情况。

开发环境使用的是经典的Visual Studio 2019社区版,开发Win上的程序没有比这个更合适的了。

image.png

上位机的界面很简单,通过选择设备所在的串口,点击开始服务/停止服务即可。这个界面可以完全隐藏到系统后台中,仅在系统栏中展示。

image.png

由任务管理器可以看到,最终的软件运行消耗是非常小的:

image.png

需要注意的是,因为需要访问底层驱动,所以PC端服务的运行需要管理员权限。

6.BOM清单

image.png

7.大赛LOGO验证

空板

image.png

焊接成品

image.png

更多图片

image.png

image.png

其他链接

FreeRTOS - Market leading RTOS (Real Time Operating System) for embedded systems with Internet of Things extensions


LVGL - Light and Versatile Embedded Graphics Library


Open Hardware Monitor (github.com)

参考设计图片
×

!注意:请使用浏览器自带下载,迅雷等下载软件可能无法下载到有效资源。

 
群聊设计,与管理员及时沟通

欢迎加入EEWorld参考设计群,也许能碰到搞同一个设计的小伙伴,群聊设计经验和难点。 入群方式:微信搜索“helloeeworld”或者扫描二维码,备注:参考设计,即可被拉入群。 另外,如您在下载此设计遇到问题,也可以微信添加“helloeeworld”及时沟通。

 
查找数据手册?

EEWorld Datasheet 技术支持

论坛推荐 更多
更新时间2024-11-21 07:38:44

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版 版权声明

EEWORLD参考设计中心

站点相关: TI培训 德州仪器(TI)官方视频课程培训

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved