Files
Arduino/CPU_temp/README.md
T
oskarvitaliiandClaude Opus 5 59848698ff feat(cpu_temp): индикатор температуры CPU на ESP32-C3 с OLED
Плата принимает по USB-CDC строки "T=67.0;L=34" от агента на ПК и рисует
крупную цифру, загрузку и график за последнюю минуту на экране 72x40.

Пины дисплея (SDA=5, SCL=6) определены сканером, а не по шелкографии:
подписи GPIO8/GPIO9 на плате - это дефолтные Wire-пины чипа.

Агент читает сенсоры через LibreHardwareMonitorLib. С версии 0.9.5 она
требует отдельно установленный драйвер PawnIO: без него загрузка CPU
читается, а температуры пусты даже под администратором.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 21:42:24 +07:00

3.9 KiB
Raw Blame History

CPU Temp — индикатор температуры процессора на ESP32-C3

Плата ESP32-C3 со встроенным OLED 0.42″ (72×40) стоит на столе и показывает температуру процессора компьютера: крупная цифра, загрузка CPU рядом и график за последнюю минуту.

LibreHardwareMonitorLib.dll ──> PowerShell-агент ──COM (USB CDC)──> ESP32-C3 ──I2C──> OLED 72×40
        (через драйвер PawnIO)     раз в секунду     "T=67.0;L=34"           U8g2

Плата ничего не измеряет сама: она принимает готовые строки и рисует их. Всё чтение железа происходит на ПК.

Состав

Путь Что это
CPU_temp.ino основной скетч: тайм-аут свежести данных, частота перерисовки
link.h / link.cpp неблокирующее чтение строки из Serial и её разбор
ui.h / ui.cpp отрисовка через U8g2 и кольцевой буфер истории
tools/i2c_scan/ одноразовый скетч: поиск пинов встроенного дисплея
agent/ агент для ПК, см. agent/README.md
docs/ спецификация и план реализации

Железо

Параметр Значение
Плата ESP32-C3 (QFN32), ревизия v0.4, встроенный OLED 0.42″
Флеш 4 МБ
Дисплей SSD1306 72×40, I2C, адрес 0x3C, SDA = GPIO5, SCL = GPIO6
Подключение к ПК нативный USB, VID_303A&PID_1001

Пины дисплея определены сканером tools/i2c_scan, а не по шелкографии: подписи GPIO8/GPIO9 на плате относятся к дефолтным Wire-пинам чипа, а не к разводке экрана.

Сборка и заливка

arduino-cli compile -b esp32:esp32:esp32c3:CDCOnBoot=cdc,FlashSize=4M,PartitionScheme=default .
arduino-cli upload -p COM4 -b esp32:esp32:esp32c3:CDCOnBoot=cdc,FlashSize=4M,PartitionScheme=default .

CDCOnBoot=cdc обязателен: по умолчанию в ядре стоит Disabled, и тогда Serial уходит в аппаратный UART вместо USB, а данные до платы не доходят.

Перед заливкой остановить агента — он держит тот же COM-порт:

Stop-ScheduledTask -TaskName 'CPU Temp Agent'

Протокол

Одна строка в секунду, \n в конце:

T=67.0;L=34

T — температура CPU Package в °C, L — общая загрузка CPU в процентах. Неизвестные ключи прошивка игнорирует, поэтому протокол можно расширять (например, G= для GPU), не трогая старую прошивку.

Если валидная строка не приходила дольше 5 секунд, на экране появляется NO DATA, и история перестаёт пополняться — чтобы пауза связи не выглядела как падение температуры.

Экран

Шкала графика фиксированная, 30–90 °C. Автомасштаб сознательно не используется: при нём шум ±1 °C в простое рисовался бы горами и создавал ложную тревогу.

Требования к ПК

Windows, LibreHardwareMonitor и драйвер PawnIO — порядок установки и разбор подводных камней в agent/README.md.