基于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的电脑性能监控

基于arduino的ESP32 学习笔记基于AIDA64的电脑性能监控

基于arduino的ESP32 学习笔记 TFT_eSPI和LVGL库使用笔记