https://github.com/cyberscopetoday/esp32_monitor
https://github.com/cyberscopetoday/esp32_monitor
Last synced: over 1 year ago
JSON representation
- Host: GitHub
- URL: https://github.com/cyberscopetoday/esp32_monitor
- Owner: CyberScopeToday
- License: mit
- Created: 2025-02-13T14:20:05.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-02-13T18:02:35.000Z (over 1 year ago)
- Last Synced: 2025-02-13T18:39:18.553Z (over 1 year ago)
- Language: C++
- Size: 2.93 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Мониторинг температуры и загрузки видеокарты (GPU) на OLED-дисплее ESP32
Проект отображает на **OLED-дисплее** (SSD1306) данные о **температуре**, **загрузке** и других характеристиках **видеокарты** (GPU) в режиме слайд-шоу. Сбор данных происходит на **Windows** при помощи **LibreHardwareMonitor** и **Python**, а затем отправляется на **ESP32** по сети (HTTP).
## Содержание
1. [Особенности проекта](#особенности-проекта)
2. [Как это работает](#как-это-работает)
3. [Требования](#требования)
4. [Установка и настройка](#установка-и-настройка)
1. [Настройка Python и LibreHardwareMonitor](#настройка-python-и-librehardwaremonitor)
2. [Настройка ESP32](#настройка-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:///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](https://www.python.org/downloads/).
- Во время установки поставьте галочку «Add Python to PATH».
2. В консоли проверьте:
```bash
python --version
pip --version
```
3. **Установите нужные пакеты**:
```bash
pip install pythonnet requests
```
4. **Скачайте LibreHardwareMonitor**:
- Перейдите на [GitHub Releases](https://github.com/LibreHardwareMonitor/LibreHardwareMonitor/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. Запустите скрипт:
```bash
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)`).
- **Список параметров** (названия, единицы измерения) можно изменить в массивах:
```cpp
const char* labels[] = { "GPU Temp", ... };
// ...
float values[] = { gpuTemp, gpuLoad, gpuHotspot, ... };
```
- Если хотите **плавную анимацию** (fade, скролл), смотрите примеры с функциями `fadeOut()`, `fadeIn()` или `slideTransition()` (описано в исходном коде).
---
## Лицензия
Данный проект распространяется по лицензии **MIT**. Подробности см. в файле [LICENSE](./LICENSE).
**Удачи в сборке и приятного использования!**