A lightweight Windows service that monitors system performance (CPU, GPU, RAM, Temperatures) and transmits real-time data to an ESP32 display via USB/Serial.
- Real-time Monitoring: CPU/GPU usage & temps, RAM utilization.
- Hardware Support: Supports modern hardware (Intel Core Ultra, RTX 40/50 series) via AIDA64.
- Plug & Play: Auto-detects ESP32 devices and handles reconnections.
- Background Service: Runs silently as a Windows Service.
- OS: Windows 10 / 11 (64-bit)
- Software:
- .NET 9.0 Runtime
- AIDA64 Extreme/Engineer (Recommended for sensor data)
- Hardware: ESP32-S3 Development Board with Display (e.g., ESP32-8048S050)
For the most reliable temperature readings (especially on newer motherboards like ASUS Z890), we use AIDA64's Shared Memory feature.
- Open AIDA64.
- Go to File > Preferences > Hardware Monitoring > External Applications.
- ✅ Check "Enable Shared Memory".
- Click OK.
The included PowerShell script handles building, installing, and starting the service.
- Open PowerShell as Administrator.
- Navigate to the
Scriptsfolder. - Run the installer:
cd Scripts .\service-manager.ps1 install
- Flash your ESP32 with the compatible firmware (Arduino/PlatformIO project).
- Connect the ESP32 to your PC via USB.
- The service will automatically detect the device (looking for USB Vendor ID
1A86by default).
You can manage the service using the interactive menu:
.\Scripts\service-manager.ps1Or use simple commands:
- Check Status:
.\Scripts\service-manager.ps1 status - View Logs:
.\Scripts\service-manager.ps1 logs -Live - Restart:
.\Scripts\service-manager.ps1 restart - Uninstall:
.\Scripts\service-manager.ps1 uninstall
Located in the installation directory (usually bin\Release\net9.0-windows\win-x64).
{
"SystemMonitor": {
"SerialPort": "AUTO", // "AUTO" or specific port like "COM3"
"BaudRate": 115200,
"TransmissionInterval": 1000, // Update every 1 second
"ESP32VendorId": "1A86", // Change if using a different ESP32 board
"ESP32ProductId": "7523"
}
}graph LR
A[Hardware Sensors] -->|Shared Memory| B(AIDA64)
B -->|Memory Map| C[Windows Service]
C -->|JSON / Serial| D[ESP32 Display]
- Data Collection: The service reads data from AIDA64 Shared Memory (or WMI/Performance Counters as fallback).
- Processing: Data is formatted into a compact JSON object.
- Transmission: JSON is sent over USB Serial to the ESP32.
- Display: ESP32 parses JSON and updates the UI.
"CPU Temp is 0°C"
- Ensure AIDA64 is running.
- Ensure "Enable Shared Memory" is checked in AIDA64 preferences.
- Check logs:
.\Scripts\service-manager.ps1 logs
"ESP32 Not Detected"
- Check USB cable connection.
- Verify the Vendor ID in
appsettings.jsonmatches your device (Check Device Manager > Ports > Details > Hardware Ids).
MIT License