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>
This commit is contained in:
1 parent
ed4dad0a52
commit
59848698ff
12 files changed
+1473
No files matched your search
@@ -0,0 +1,42 @@
|
||||
// Одноразовый скетч: ищет, на какой паре пинов висит встроенный OLED.
|
||||
// Шелкография подписывает GPIO8/GPIO9 (дефолтные Wire-пины ESP32-C3), но у плат
|
||||
// этого семейства экран обычно разведён на GPIO5/GPIO6. Проверяем перебором.
|
||||
|
||||
#include <Wire.h>
|
||||
|
||||
struct PinPair { uint8_t sda; uint8_t scl; };
|
||||
|
||||
static const PinPair CANDIDATES[] = { {5, 6}, {6, 5}, {8, 9}, {9, 8} };
|
||||
|
||||
static void scanPair(uint8_t sda, uint8_t scl) {
|
||||
Wire.end();
|
||||
if (!Wire.begin(sda, scl)) {
|
||||
Serial.printf("SDA=%u SCL=%u: init failed\n", sda, scl);
|
||||
return;
|
||||
}
|
||||
uint8_t found = 0;
|
||||
for (uint8_t addr = 1; addr < 127; addr++) {
|
||||
Wire.beginTransmission(addr);
|
||||
if (Wire.endTransmission() == 0) {
|
||||
Serial.printf("SDA=%u SCL=%u: device 0x%02X\n", sda, scl, addr);
|
||||
found++;
|
||||
}
|
||||
}
|
||||
if (found == 0) {
|
||||
Serial.printf("SDA=%u SCL=%u: nothing\n", sda, scl);
|
||||
}
|
||||
}
|
||||
|
||||
void setup() {
|
||||
Serial.begin(115200);
|
||||
}
|
||||
|
||||
void loop() {
|
||||
// Повторяем в цикле: при нативном USB порт переоткрывается после заливки,
|
||||
// и однократный вывод из setup можно не успеть поймать.
|
||||
Serial.println("--- I2C scan ---");
|
||||
for (const PinPair &p : CANDIDATES) {
|
||||
scanPair(p.sda, p.scl);
|
||||
}
|
||||
delay(5000);
|
||||
}
|
||||
Reference in new issue
Block a user