Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
瑞萨_RA6M4
基于RT-Thread+RA6M4的桌面资源监控器
发布于 2022-07-31 01:59:56 浏览:540
订阅该版
[tocm] ### 应用背景 灵感来源:[【有手就能做】30元自制电脑状态监控仪表,没有光污染,资料全开源](https://www.bilibili.com/video/BV1jL4y1x7gx) 使用指针表盘来显示电脑的CPU和内存使用率 ### 实现功能 两个表盘分别实时显示电脑的CPU和内存占用率,刷新频率达10Hz,也可改为显示GPU占用率或其它信息。 ### 整体系统框架 ![框架图.png](https://oss-club.rt-thread.org/uploads/20220730/58f36104ffc1f7029094639f4a04796f.png.webp "框架图.png") 使用上位机程序实时获取电脑CPU占用率和内存占用率,将占用率信息发送到单片机上。单片机通过DA输出控制电压表表盘指针 ### RT-Thread使用情况概述 1. 使用RT-Thread 4.1.0实现 1. 使用了RA6M4 DAC驱动和相关API 1. 添加了一个finsh命令可以控制占用率显示 ### 硬件框架 ![硬件连接图](https://oss-club.rt-thread.org/uploads/20220802/366477c272b9b519866aa82c72dc74ff.png.webp "硬件连接图") 两个电压表的量程均为3V,RA6M4的FSP默认配置输出最大2V,需要修改配置。 ![FSP配置.png](https://oss-club.rt-thread.org/uploads/20220802/881758cf7dac8d1e4ada97e74ce49454.png "FSP配置.png") 打开Output Amplifier,即可将参考电压改为3.3V,即最大输出电压为3.3V,可以使用整个表盘的量程。 ### 软件框架说明 PC通过一个上位机程序来获取所需的CPU占用率和内存占用率,这里使用的是Windows系统,可以考虑是用Windows API来获取。 在python下有[psutil](https://psutil.readthedocs.io)库,里面提供了获取占用率的接口。 `psutil.cpu_percent(interval=None, percpu=False)`会直接返回CPU占用率 ``` mem = psutil.virtual_memory() mem.percent ``` 通过`virtual_memory()`接口获得一个`svmem`对象,读取里面的`percent`属性即可获取到内存的占用率 PC与RA6M4的通信可以自由切换,这里使用最简单的串口进行演示。 直接使用finsh提供的命令功能,增加一个命令,从参数接收占用率信息。让上位机打开串口,获取占用率后通过串口发送命令。 ### 软件模块说明 这里只使用了内部的DAC模块。 使用`rt_device_find(DAC_DEV_NAME)`来找到dac设备 使用`rt_dac_write(dac_device, ch, output_val);`来同时输出电压 这里有两个DAC,FSP需要添加两个DAC的stack,分别为`g_dac0`和`g_dac1`。 使用P014和P015作为DAC输出引脚,分别对应了通道0和通道1。 使用简单的python代码,实现上位机功能 ``` import psutil import time import serial ser = serial.Serial("COM11", 115200, timeout=5) while True: time.sleep(0.1) cpu = psutil.cpu_percent(interval=None) mem = psutil.virtual_memory() print(cpu, mem.percent) ser.write(f"dm {int(cpu)} {int(mem.percent)}\n".encode('utf-8')) ``` 增加一个finsh命令,解析上位机发送的占用率信息,并调用表盘显示接口 ``` void dm(int argc, char **argv) { int cpu_usage, mem_usage; sscanf(argv[1], "%d", &cpu_usage); sscanf(argv[2], "%d", &mem_usage); rt_kprintf("CPU %d MEM %d\n", cpu_usage, mem_usage); display_dac(1, cpu_usage); display_dac(0, mem_usage); } MSH_CMD_EXPORT(dm, desktop monitor); ``` 可便捷地更换获取占用率的接口,获取到占用率后调用显示接口即可。 指针电压表只要电压有微小变换,指针便会剧烈抖动。发生较大电压变换,会超出设置电压后回弹。内部原理应该是通过磁力实现的。这里可以加入滑动平均滤波算法,让变化更加平滑。 ### 作品完整图片 ![实物连接图](https://oss-club.rt-thread.org/uploads/20220731/250f667986af9d08a25d567e2497785f.jpg.webp "IMG_20220730_171203.jpg") ![表盘展示](https://oss-club.rt-thread.org/uploads/20220731/02f8ca20ed3683895a78e401b958c3ba.jpg.webp "表盘展示") ### 视频演示效果 [视频演示效果](https://club.rt-thread.org/file_download/4772505cd4e73068) ### 代码地址 [desktop_monitor](https://github.com/VxTeemo/desktop_monitor) ### 活动地址 [瑞萨电子 MCU RT-Thread开发设计大赛](https://club.rt-thread.org/ask/article/a07e2bf367df1195.html)
0
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
scoutteemo
这家伙很懒,什么也没写!
文章
3
回答
0
被采纳
0
关注TA
发私信
相关文章
1
瑞萨RA2E1芯片移植发生的问题
2
自动创建项目后添加串口出现找不到头文件board_cfg.h
3
CPK-RA6M4的J-Link驱动没有了,每次更新都会缺少头文件
4
瑞萨RA6M4使用RC522软件包示例无反馈
5
瑞萨的EK-RA6M4和CPK-RA6M4开发上有区别吗?
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
freemodbus
PWM
flash
cubemx
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
中断
编译报错
Debug
SFUD
rt_mq_消息队列_msg_queue
msh
keil_MDK
ulog
C++_cpp
MicroPython
本月问答贡献
a1012112796
10
个答案
1
次被采纳
踩姑娘的小蘑菇
4
个答案
1
次被采纳
红枫
4
个答案
1
次被采纳
张世争
4
个答案
1
次被采纳
Ryan_CW
4
个答案
1
次被采纳
本月文章贡献
catcatbing
3
篇文章
5
次点赞
YZRD
2
篇文章
5
次点赞
qq1078249029
2
篇文章
2
次点赞
xnosky
2
篇文章
1
次点赞
Woshizhapuren
1
篇文章
5
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部