Основное содержание
Внешний мониторинг ПК с помощью Arduino и OLED-дисплея — это отличное решение, если нужен кастомный индикатор производительности, который не покажет стандартный Диспетчер задач Windows. По личному опыту, вывод критических параметров, вроде температур CPU и GPU, на физический экран позволяет мгновенно заметить перегрев.
Стандартные инструменты Windows отлично показывают загрузку ресурсов (ЦП, память, диск) в процентах, но на температуру им плевать. Поэтому мы скрестим микроконтроллер (например, Arduino Nano) с Python-скриптом, чтобы создать две независимые информационные панели.
Как выбрать OLED-дисплей для индикации ресурсов ПК?
Выбор экрана напрямую зависит от того, сколько деталей ты хочешь видеть. Я начинал с популярного SSD1306, но его размеров откровенно не хватило для комфортного отображения всех метрик. Оптимально себя показал SH1106 128x64.
Мы будем выводить два типа данных на два разных устройства (или на один дисплей Arduino, если настроишь мультиплексирование):
1. Индикатор ресурсов: Загрузка CPU/GPU (%), скорость Ethernet (скорость передачи данных).
2. Индикатор температур: Текущие значения температуры CPU и GPU.
Для ресурсов идеально подходят вертикальные гистограммы, как на картинке ниже. Распространенная ошибка новичков — пытаться впихнуть невпихуемое на маленький экран. Лучше разбить вывод на два логичных блока.
Как настроить Arduino Nano для сбора данных?
Для работы с дисплеем SH1106 на Arduino Nano используем подключение по I2C: SDA вешаем на A4, SCL — на A5 (питание VCC и GND, само собой). В скетче я советую использовать библиотеку U8glib — она очень надежна при работе с разными OLED-контроллерами.
Вот каркас подключения для первого индикатора (ресурсы):
// Подключение и инициализация U8glib
// SDA – A4, SCL – A5
void setup() {
// Инициализация дисплея
}
void loop() {
// Читаем данные из Serial порта
// Рисуем на экране
}
Но есть один нюанс: Arduino должен уметь парсить данные, которые мы будем слать ему из Python-скрипта через последовательный порт (COM).
Какой Python стек нужен для сбора метрик Windows?
Для сбора системных данных в реальном времени я использую связку psutil и pyserial. Эта комбинация уже не раз доказала свою надежность в продакшн-системах мониторинга.
Установка зависимостей делается одной командой прямо в командной строке:
pip install psutil pyserial
Библиотека psutil дает нам легкий доступ к проценту загрузки ЦП и объему памяти, а pyserial настраивает стабильную связь с Arduino.
Python-скрипт (подойдет любая версия от 3.10+) должен открыть нужный COM-порт и слать данные достаточно часто. Я настроил обновление каждые 200 мс для метрик ресурсов, чтобы индикатор откликался моментально.
Пример того, как выглядят данные, отправляемые в порт (для парсинга на Arduino):
Проверь, чтобы в скрипте был указан верный порт. Если у тебя подключено много девайсов, порт COM3 может быть занят.
Как автоматизировать запуск Python-скрипта с Windows?
Чтобы твой индикатор работал постоянно, скрипт должен запускаться сам при старте системы. Классическая боль: если скрипт консольный, он всегда открывает черное окно.
Самый изящный выход — использовать PyInstaller через его графическую оболочку Auto Py to Exe:
1. В терминале вводим: auto-py-to-exe.
2. Указываем путь к нашему Python-файлу.
3. Выбираем опцию "One File" (Удобнее для развертывания).
4. А вот здесь самое интересное: ставим галочку "Hide Console" (Скрыть консоль).
После компиляции ты получишь готовый .exe файл. Чтобы он стартовал с Windows, создай его ярлык и закинь в папку автозагрузки. Простой путь к этой папке: набери в проводнике shell:startup и жми Enter.
Как реализовать отдельный индикатор температур?
Для температурных данных частота обновления может быть ниже, скажем, раз в 2 секунды. Здесь графика не нужна — хватит простого отображения цифр.
Python-скрипт для температур будет похож на первый, но формат вывода данных для Arduino придется поменять. Его тоже компилируем через auto-py-to-exe и добавляем в автозапуск.
Внедрение таких кастомных индикаторов здорово повышает осведомленность о состоянии твоей рабочей станции, особенно во время долгих вычислений или стресс-тестов. 🚀 Если нужна помощь с адаптацией системы под специфическое железо, обращайся. Сделаем надежное и быстрое решение.