基于arduino的ESP32 学习笔记基于AIDA64的电脑性能监控
Posted 张竞豪
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于arduino的ESP32 学习笔记基于AIDA64的电脑性能监控相关的知识,希望对你有一定的参考价值。
前言
本文的目的是为了给将要制作的ESP32手环做技术储备
记录基于AIDAS软件,编写ESP32代码,使ESP32可以实时监控PC性能
硬件准备
- ESP-WROOM-32E开发板
软件准备
- VSCODE+PlatformIO
- AIDA64
AIDA64 使用
安装AIDA64软件
打开 文件-设置-LCD-启用Remote-Sensor支持
选择LCD项目
添加几个PC性能参数,点击应用就可以在网页端查看了
打开命令行,用ipconfig命令查询自己的局域网IP地址,我的是192.168.1.104,然后分别用手机和电脑连接到同一个路由器局域网里输入这个ip地址查看是否正常
在电脑端检查网页,发现PC的性能数据是通过向192.168.1.104/sse这个URL发送GET请求就可以获得
发现界面是中文时现实的都是乱码,于是界面改成英文的再试一下
浏览器访问192.168.1.104/sse,出现如下内容,访问成功,下面用ESP32编写代码来获取这些数据
ESP32程序编写
ESP32 端的代码比较好写,用之前获取天气的代码改一下就可以用了,代码贴在下面,主要是要把WIFI名和密码改成自己的,IP地址也要改成自己电脑的,ESP32要和电脑连接在同一个路由器上。
#include <Arduino.h>
#include <ArduinoJson.h>
#include <WiFi.h>
const char *ssid = "********";
const char *password = "********";
const char *host = "192.168.1.104";
int16_t cpu_frequence;
int16_t cpu_usage;
int16_t ram_usage;
int16_t ram_avaliable;
WiFiClient client;
void setup()
{
// put your setup code here, to run once:
Serial.begin(115200);
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
Serial.println("");
Serial.println("WiFi Conected!");
if (!client.connect(host, 80))
{
Serial.println("Connect host failed!");
return;
}
Serial.println("host Conected!");
}
void loop()
{
// put your main code here, to run repeatedly:
String getUrl = "/sse";
client.print(String("GET ") + getUrl + " HTTP/1.1\\r\\n" + "Content-Type=application/json;charset=utf-8\\r\\n" + "Host: " + host + "\\r\\n" + "User-Agent=ESP32\\r\\n" + "Connection: close\\r\\n\\r\\n");
Serial.println("Get send");
delay(10);
char endOfHeaders[] = "\\n\\n";
bool ok = client.find(endOfHeaders);
if (!ok)
{
Serial.println("No response or invalid response!");
}
Serial.println("Skip headers");
String line = "";
line += client.readStringUntil('\\n');
Serial.println("Content:");
Serial.println(line);
int16_t dataStart = 0;
int16_t dataEnd = 0;
String dataStr;
char cpuFreq[] = "CPU fequence";
dataStart = line.indexOf(cpuFreq) + strlen(cpuFreq);
dataEnd = line.indexOf("MHz", dataStart);
dataStr = line.substring(dataStart, dataEnd);
cpu_frequence = dataStr.toInt();
char cpuUsage[] = "CPU usage";
dataStart = line.indexOf(cpuUsage) + strlen(cpuUsage);
dataEnd = line.indexOf("%", dataStart);
dataStr = line.substring(dataStart, dataEnd);
cpu_usage = dataStr.toInt();
char ramUsage[] = "RAM usage";
dataStart = line.indexOf(ramUsage) + strlen(ramUsage);
dataEnd = line.indexOf("%", dataStart);
dataStr = line.substring(dataStart, dataEnd);
ram_usage = dataStr.toInt();
char ramAvali[] = "RAM avaliable";
dataStart = line.indexOf(ramAvali) + strlen(ramAvali);
dataEnd = line.indexOf("MB", dataStart);
dataStr = line.substring(dataStart, dataEnd);
ram_avaliable = dataStr.toInt();
Serial.print("CPU usage :");
Serial.println(cpu_frequence);
Serial.print("CPU usage :");
Serial.println(cpu_usage);
Serial.print("RAM usage :");
Serial.println(ram_usage);
Serial.print("RAM avaliable :");
Serial.println(ram_avaliable);
delay(1000);
}
以上是关于基于arduino的ESP32 学习笔记基于AIDA64的电脑性能监控的主要内容,如果未能解决你的问题,请参考以下文章
基于arduino的ESP32 学习笔记 基于ESP32的智能花盆
基于arduino的ESP32 学习笔记 基于ESP32的智能花盆
基于arduino的ESP32 学习笔记基于AIDA64的电脑性能监控
基于arduino的ESP32 学习笔记基于AIDA64的电脑性能监控