Wio Terminal 的 PC 监控教程 - 赛博朋克风格
info
Click here to see the English Version
项目概述
创建一个赛博朋克风格的 PC 监控系统,使用 Wio Terminal 作为显示终端,实时监控电脑的各种性能指标。
硬件需求
- Wio Terminal
- USB-C 数据线
- 一台运行 Windows 的电脑
软件需求
- VSCode + PlatformIO 插件
- Python 3.x
- Open Hardware Monitor(用来获取温度数据)
详细步骤
1. 环境配置
安装 Python 包:
pip install psutil pyserial GPUtil wmi pywin32
安装 VSCode 插件:
- 安装 PlatformIO IDE 插件
- 安装并运行 OpenHardwareMonitor
2. 创建项目
- 创建一个 PlatformIO 项目:
- 打开 VSCode
- 点击 PlatformIO 图标
- 选择 "New Project"
- 配置如下:
- Board: "Seeed Wio Terminal"
- Framework: "Arduino"
3. 实现代码
(a) 配置 platformio.ini
[env:seeed_wio_terminal]
platform = atmelsam
board = seeed_wio_terminal
framework = arduino
lib_deps =
[email protected]
(b) 创建 PC 监控脚本 (pc_stats.py
)
import psutil
import serial
import time
import GPUtil
import socket
import wmi
from datetime import datetime
def get_cpu_temp():
try:
w = wmi.WMI(namespace="root\wmi")
temperature_info = w.MSAcpi_ThermalZoneTemperature()[0]
temp = float(temperature_info.CurrentTemperature) / 10.0 - 273.15
return max(0, min(temp, 100))
except Exception as e:
print(f"[WARN] 无法读取 CPU 温度: {e}")
return 0.0
# 配置串口(根据实际情况修改 COM 端口)
ser = serial.Serial('COM10', 115200)
while True:
try:
# 获取系统数据
cpu_usage = psutil.cpu_percent()
ram_usage = psutil.virtual_memory().percent
cpu_temp = get_cpu_temp()
disk_usage = psutil.disk_usage('/').percent
# 获取 GPU 信息
try:
gpus = GPUtil.getGPUs()
gpu_usage = gpus[0].load * 100
gpu_temp = gpus[0].temperature
except:
gpu_usage = gpu_temp = 0
# 发送数据到 Wio Terminal
data = f"{cpu_usage},{ram_usage},{cpu_temp},{gpu_usage},{gpu_temp},{disk_usage},{socket.gethostbyname(socket.gethostname())}\n"
ser.write(data.encode())
time.sleep(0.5)
except KeyboardInterrupt:
ser.close()
break
(c) 创建 Wio Terminal 代码 (main.cpp
)
#include <Arduino.h>
#include "TFT_eSPI.h"
TFT_eSPI tft;
int currentPage = 0;
// 按键定义
const int BTN_1 = WIO_KEY_A;
const int BTN_2 = WIO_KEY_B;
const int BTN_3 = WIO_KEY_C;
// PC 状态结构体
struct PCStats {
int cpuUsage = 0;
int ramUsage = 0;
float cpuTemp = 0.0;
int diskUsage = 0;
int gpuUsage = 0;
float gpuTemp = 0.0;
char ipAddress[16] = "0.0.0.0";
unsigned long lastUpdate = 0;
} pcStats;
// 绘制函数
void drawBox(int x, int y, int w, int h) {
tft.drawRect(x, y, w, h, TFT_GREEN);
}
void drawTitle(const char* title) {
tft.drawString("<<", 10, 10);
tft.drawString(title, 40, 10);
tft.drawString(">>", 270, 10);
drawBox(5, 5, 310, 230);
tft.drawLine(10, 30, 300, 30, TFT_GREEN);
}
// [更多绘制函数...]
void setup() {
Serial.begin(115200);
tft.begin();
tft.setRotation(3);
tft.setTextSize(2);
pinMode(BTN_1, INPUT_PULLUP);
pinMode(BTN_2, INPUT_PULLUP);
pinMode(BTN_3, INPUT_PULLUP);
drawPage(currentPage);
}
void loop() {
// 接收并解析数据
if (Serial.available()) {
String data = Serial.readStringUntil('\n');
// 解析数据...
}
// 按键处理
if (digitalRead(BTN_1) == LOW) {
currentPage = 0;
drawPage(currentPage);
delay(200);
}
// [更多按键处理...]
// 更新显示
if (currentPage == 0) {
drawSystemStatus();
delay(100);
}
}
4. 运行项目
- 将代码上传到 Wio Terminal
- 运行 OpenHardwareMonitor
- 运行 Python 脚本:
python pc_stats.py
- 使用 Wio Terminal 上的按键切换页面:
- 按键 A: 系统状态
- 按键 B: 性能监控
- 按键 C: 网络信息
自定义建议
- 调整显示风格: 修改颜色(如
TFT_GREEN
)、布局和字体大小。 - 添加动画效果: 为更具赛博朋克风格的体验增加动画效果。
- 添加新功能:
- 网络速度监控
- 磁盘读写速度
- 系统进程信息
故障排除
串口连接问题:
- 检查 COM 端口是否正确
- 确认波特率设置(115200)
温度读取问题:
- 确保 OpenHardwareMonitor 正在运行
- 检查管理员权限
显示问题:
- 检查显示坐标是否超出范围
- 使用
clearArea
函数避免残影
高级优化
- 添加数据记录功能
- 实现警告阈值
- 定制显示主题
- 添加图表显示
- 实现 WiFi 功能
该项目非常适合初学者入门,同时提供了大量扩展空间。建议先实现基本功能,然后逐步添加新特性。
Cursor AI 开发教程 —— 基于 Wio Terminal PC 监控项目
1. Cursor AI 基础
1.1 项目初始化
- 打开 Cursor 编辑器。
- 告诉 AI 你想创建什么:
“我想创建一个 Wio Terminal 项目,用来显示电脑的系统信息,风格是赛博朋克。”
- AI 将帮助你:
- 推荐项目结构
- 创建必要文件
- 提供初始代码
1.2 协作模式
- 描述清晰明确: 一次专注一个功能点。
- 及时反馈问题: 遇到问题时,与 AI 沟通。
2. 实际案例分析
2.1 创建基础显示功能
良好的提问方式:
“帮我创建一个 Wio Terminal 的显示程序,需要显示 CPU 使用率、内存使用率和温度信息。”
- AI 将提供:
- 必要的头文件
- 基础代码结构
- 显示函数的实现
2.2 解决具体问题
示例: 修复温度读取问题
良好的提问方式:
“CPU 温度读取不到,显示为 0,如何解决这个问题?”
- AI 的响应:
- 分析可能原因
- 提供多种解决方案
- 展示实现代码
2.3 优化显示效果
良好的提问方式:
“如何优化显示效果,让它更有赛博朋克风格?”
- AI 将:
- 提供设计建议
- 实现具体代码
3. 调试技巧
3.1 处理代码报错
遇到编译错误时,将错误信息复制给 AI:
“编译时遇到这个错误:[错误信息]”
AI 将:
- 分析错误原因
- 提供修复方案
- 解释解决思路
3.2 处理逻辑问题
良好的描述方式:
“更新屏幕数字时存在残影,该如何解决?”
- AI 的解决流程:
- 理解问题本质
- 提供区域清除函数
- 提供完整解决方案
4. 最佳实践
4.1 提问技巧
- 明确功能:
- “我想实现 [具体功能]。”
- 提供上下文:
- “我已经实现了 [A 功能],现在想添加 [B 功能]。”
- 描述问题:
- “运行时遇到 [具体问题],错误信息是 [错误内容]。”
4.2 代码优化
- 请求代码审查:
- “能帮我检查这段代码,看看有什么可以优化的地方吗?”
- 性能优化:
- “这段代码运行较慢,如何优化性能?”
- 代码风格改进:
- “如何让代码更易读和维护?”
4.3 功能扩展
- 渐进式开发:
- “我想为项目添加 [新功能],应该如何开始?”
- 模块化请求:
- “如何将这个功能模块化,以便后续扩展?”
5. 常见陷阱
5.1 避免的做法
- 问题描述不清:
- ❌ “代码不工作了,怎么办?”
- 信息不完整:
- ❌ “有错误,帮我看看。”
- 范围过大:
- ❌ “帮我完成整个项目。”
5.2 推荐的做法
- 清晰的问题描述:
- ✅ “CPU 使用率显示异常,数值一直是 0。”
- 提供完整信息:
- ✅ “运行时出现这个错误:[完整错误信息],使用的库版本是...”
- 合理任务划分:
- ✅ “先实现基础显示功能,然后逐步添加其他功能。”
6. 总结
- 渐进式开发: 从基础功能开始,逐步添加新特性。
- 及时解决问题: 遇到问题时及时修复。
- 高效沟通: 明确描述需求并提供上下文。
- 持续优化: 定期审查并改进代码。
通过该项目的开发过程,你将看到 Cursor AI 能显著提升开发效率。关键在于学会如何与 AI 高效协作。清晰的问题和明确的需求能帮助你获得更好的结果。