Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Echtzeit-PC-Monitor mit Arduino & LCD: CPU/GPU-Temperaturen anzeigen

Komponenten und Zubehör

Über dieses Projekt

Die Idee entstand aus Spaß am Basteln und dem Wunsch, Hardware-Sensoren des PCs (CPU-/GPU-Temperatur) auf einem externen Display darzustellen. Das Projekt ist einfach nachzubauen und vielseitig erweiterbar.

Hardware-Aufbau

Das LCD wird über einen I²C-Adapter an den Arduino angeschlossen (SDA/SCL an A4/A5 beim Leonardo). Die I²C-Adresse (hier 0x3F) kann mit einem I²C-Scanner-Sketch ermittelt werden.

Arduino-Sketch

Der Arduino empfängt serielle Daten vom PC. Ein spezielles Protokoll trennt die Werte für die zwei Zeilen:

Um Latenzen zu vermeiden, werden Zeichen einzeln per Serial.read() in einen Puffer (inData) gelesen und bei Erreichen des Trennzeichens verarbeitet.

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x3F, 16, 2);
String inData;

void setup() {
  Serial.begin(9600);
  lcd.init();
  lcd.backlight();
}

void loop() {
  while (Serial.available() > 0) {
    char c = Serial.read();
    inData += c;
    if (c == '*') {
      inData.remove(inData.length() - 1);
      lcd.setCursor(0, 0);
      lcd.print("GPU Temp.: " + inData + char(223) + "C ");
      if (inData == "DIS") { lcd.clear(); lcd.print("Disconnected!"); }
      inData = "";
    }
    if (c == '#') {
      inData.remove(inData.length() - 1);
      lcd.setCursor(0, 1);
      lcd.print("CPU Temp.: " + inData + char(223) + "C ");
      inData = "";
    }
  }
}

PC-Seite: C#-Anwendung mit OpenHardwareMonitor

Eine Windows-Forms-Anwendung (C#) liest über die Bibliothek OpenHardwareMonitorLib.dll die Sensorwerte von CPU und GPU (NVIDIA) aus und sendet sie zyklisch per SerialPort an den Arduino.

Wichtige Schritte

  1. Referenz auf OpenHardwareMonitorLib.dll im Projekt hinzufügen.
  2. Computer-Objekt mit CPUEnabled = true und GPUEnabled = true instanziieren und Open() aufrufen.
  3. Verfügbare COM-Ports scannen und in einer ComboBox anzeigen.
  4. SerialPort konfigurieren (9600 Baud, 8N1, RTS enable).
  5. In einem Timer-Tick (Status()) Sensoren aktualisieren, Temperaturen lesen und String "GPUtemp*CPUtemp#" senden.
  6. Connect/Disconnect-Buttons steuern Port und Timer.
  7. Die Anwendung muss als Administrator ausgeführt werden, damit OpenHardwareMonitor auf die Hardware-Sensoren zugreifen kann.
// Ausschnitt aus der C#-Logik
private void Status() {
  foreach (var hw in c.Hardware) {
    if (hw.HardwareType == HardwareType.GpuNvidia) {
      hw.Update();
      foreach (var s in hw.Sensors)
        if (s.SensorType == SensorType.Temperature) value1 = s.Value.GetValueOrDefault();
    }
    if (hw.HardwareType == HardwareType.CPU) {
      hw.Update();
      foreach (var s in hw.Sensors)
        if (s.SensorType == SensorType.Temperature) value2 = s.Value.GetValueOrDefault();
    }
  }
  try { port.Write(value1 + "*" + value2 + "#"); }
  catch { timer1.Stop(); /* Fehlerbehandlung */ }
}

Erweiterungsmöglichkeiten

Fazit

Ein günstiges, anpassbares Zweit-Display für PC-Enthusiasten, das zeigt, wie einfach Hardware-Monitoring mit Arduino und C# realisierbar ist.

Herstellungsprozess

  1. Arduino Nano Flight Simulator 2020 Kontrollpanel – LCD & CDI Display
  2. Monitor-Ambilight selbst bauen mit Arduino Nano & WS2812B LEDs
  3. LCD-Animationen & Spiele mit Arduino UNO erstellen
  4. Echtzeit-IoT-Herzfrequenzmonitor mit Arduino & MAX30100
  5. Sichere Warmwasserbereitung: Thermospannungs-Monitor für Zündflamme (Arduino & Raspberry Pi)
  6. Bilder auf 1,17-Zoll-TFT-LCD mit Arduino UNO anzeigen
  7. DIY-Oszilloskop mit Arduino Nano (10 Hz–50 kHz) und 128×64-LCD
  8. MAX30102 Herzfrequenz-Monitor mit Arduino Nano & 16x2 LCD bauen
  9. Fortgeschrittenes Heimüberwachungssystem mit Arduino Mega und IoT-Sensoren
  10. Zuverlässigen Wecker mit DS1302 RTC und Arduino UNO bauen