Skip to content

Real-time GPU temperature, load, and performance monitoring displayed on an OLED SSD1306 connected to ESP32. Data is collected from a Windows PC using LibreHardwareMonitor and sent via HTTP to ESP32, which cycles through key GPU parameters in a slideshow format.

License

Notifications You must be signed in to change notification settings

CyberScoper/ESP32-GPU-Monitor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Мониторинг температуры и загрузки видеокарты (GPU) на OLED-дисплее ESP32

Проект отображает на OLED-дисплее (SSD1306) данные о температуре, загрузке и других характеристиках видеокарты (GPU) в режиме слайд-шоу. Сбор данных происходит на Windows при помощи LibreHardwareMonitor и Python, а затем отправляется на ESP32 по сети (HTTP).

Содержание

  1. Особенности проекта
  2. Как это работает
  3. Требования
  4. Установка и настройка
    1. Настройка Python и LibreHardwareMonitor
    2. Настройка ESP32
  5. Использование
  6. Как изменить анимацию/формат вывода
  7. Лицензия

Особенности проекта

  • ESP32 с подключённым по I²C дисплеем SSD1306 (128×64).
  • Python-скрипт на Windows собирает данные о GPU (температура, загрузка, фан, частоты и т.п.) с помощью LibreHardwareMonitor.
  • Отправка данных по протоколу HTTP на ESP32 (эндпоинт /update).
  • OLED-дисплей циклично (слайд-шоу) отображает 10 параметров о состоянии GPU (можно менять кол-во и название параметров).

Как это работает

  1. LibreHardwareMonitor (Windows) получает данные с датчиков видеокарты (NVIDIA/AMD).
  2. Python-скрипт обращается к библиотеке LibreHardwareMonitorLib.dll, считывая температуру, загрузку, частоты и т.п.
  3. Скрипт отправляет значения (GET-параметры) на http://<IP_ESP32>/update.
  4. ESP32 принимает параметры, сохраняет их во внутренние переменные.
  5. OLED SSD1306 показывает один параметр за раз, меняя каждые несколько секунд (по умолчанию 10 c).

Требования

  • ESP32 (например, DevKitC, NodeMCU-32 и т.п.)
  • Дисплей SSD1306 (I²C 128×64)
  • Arduino IDE (или PlatformIO) с установленными библиотеками:
    • WiFi.h и WebServer.h (встроенные в ESP32 Core)
    • Wire.h
    • Adafruit GFX
    • Adafruit SSD1306
  • LibreHardwareMonitor на Windows
  • Python 3.7 – 3.11 с установленным pythonnet и requests

Установка и настройка

Настройка Python и LibreHardwareMonitor

  1. Установите Python (3.7–3.11) с python.org.
    • Во время установки поставьте галочку «Add Python to PATH».
  2. В консоли проверьте:
    python --version
    pip --version
  3. Установите нужные пакеты:
    pip install pythonnet requests
  4. Скачайте LibreHardwareMonitor:
    • Перейдите на GitHub Releases.
    • Скачайте ZIP, распакуйте, запустите LibreHardwareMonitor.exe.
    • Убедитесь, что в папке лежит LibreHardwareMonitorLib.dll.
  5. Склонируйте данный репозиторий или скачайте ZIP с кодом (ESP32 и gpu_monitor.py).

Настройка ESP32

  1. Подключите OLED SSD1306 к ESP32:
    • SDA → GPIO21
    • SCL → GPIO22
    • VCC → 3.3V
    • GND → GND
  2. Откройте Arduino IDE (или PlatformIO) → выберите плату ESP32.
  3. Установите библиотеки (если не установлены):
    • Adafruit GFX
    • Adafruit SSD1306
  4. В файле esp32_display.ino:
    • Введите свой SSID и пароль Wi-Fi.
    • При необходимости измените статический IP/адреса шлюза (или закомментируйте блок WiFi.config(...)).
  5. Загрузите код в ESP32.

Использование

  1. Запустите LibreHardwareMonitor.exe на Windows (не закрывайте его).
  2. Откройте консоль (CMD или PowerShell) → перейдите в папку проекта (где gpu_monitor.py).
  3. Запустите скрипт:
    python gpu_monitor.py
    • Скрипт каждые 5 секунд будет считывать данные о видеокарте и отправлять их на ESP32.
  4. ESP32 (при успешном подключении к Wi-Fi) будет слушать HTTP-запросы на порте 80. При каждом /update значения записываются во внутренние переменные.
  5. На OLED-дисплее циклично отображается 10 показателей (GPU Temp, Load, HotSpot и т.д.), сменяясь раз в 10 секунд.

Как изменить анимацию/формат вывода

  • Интервал слайд-шоу меняется в esp32_display.ino (переменная if (millis() - lastSwitch > 10000)).
  • Список параметров (названия, единицы измерения) можно изменить в массивах:
    const char* labels[] = { "GPU Temp", ... };
    // ...
    float values[] = { gpuTemp, gpuLoad, gpuHotspot, ... };
  • Если хотите плавную анимацию (fade, скролл), смотрите примеры с функциями fadeOut(), fadeIn() или slideTransition() (описано в исходном коде).

Лицензия

Данный проект распространяется по лицензии MIT. Подробности см. в файле LICENSE.

Удачи в сборке и приятного использования!

About

Real-time GPU temperature, load, and performance monitoring displayed on an OLED SSD1306 connected to ESP32. Data is collected from a Windows PC using LibreHardwareMonitor and sent via HTTP to ESP32, which cycles through key GPU parameters in a slideshow format.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published