An open API service indexing awesome lists of open source software.

https://github.com/cyberscopetoday/esp32_monitor


https://github.com/cyberscopetoday/esp32_monitor

Last synced: over 1 year ago
JSON representation

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).

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