Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Мониторинг ПК в реальном времени: Arduino + LCD-дисплей

Компоненты и материалы

О проекте

Проект выводит температуру CPU и GPU на LCD-дисплей, подключённый к Arduino. Данные собирает C#-приложение на ПК с помощью библиотеки OpenHardwareMonitorLib и передаёт по последовательному порту. Arduino принимает пакеты и обновляет две строки дисплея.

Схема подключения LCD (I2C)

Скетч Arduino

Принимает символы до разделителей * (GPU, строка 0) и # (CPU, строка 1). Очищает буфер после печати. Поддерживает команду DIS* для сообщения «Disconnected!».

#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, 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, 1);
      lcd.setCursor(0,1);
      lcd.print("CPU Temp.: " + inData + char(223) + "C ");
      inData = "";
    }
  }
}

C#-приложение (Windows Forms)

Ключевые фрагменты C#

// Инициализация порта
port.BaudRate = 9600; port.Parity = Parity.None; port.StopBits = StopBits.One;
port.DataBits = 8; port.Handshake = Handshake.None; port.RtsEnable = true;

// Опрос датчиков
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();
  }
}
port.Write(value1 + "*" + value2 + "#");

Сборка и запуск

  1. Собрать схему, загрузить скетч в Arduino.
  2. Скомпилировать C#-проект (Visual Studio), запустить от имени администратора.
  3. Выбрать COM-порт, интервал обновления (мс), нажать Connect.
  4. На дисплее появятся температуры GPU (верхняя строка) и CPU (нижняя).

Расширения

Можно добавить мониторинг загрузки CPU/GPU, частот, вольтажа, скорости вентиляторов — достаточно расширить протокол (новые разделители) и логику на Arduino.

Производственный процесс

  1. Панель управления полётным симулятором 2020 на Arduino Nano: LCD и CDI-дисплеи
  2. Создание потрясающей системы Ambilight для монитора на Arduino
  3. Создание анимации и игр на LCD 16×2 с Arduino UNO
  4. IoT-монитор пульса в реальном времени на Arduino и MAX30100
  5. Мониторинг термопары газового водонагревателя: SMS/Email алерт при погасании горелки
  6. Вывод изображений на 1.17-дюймовый TFT LCD с Arduino UNO
  7. Самодельный осциллограф на Arduino Nano (10 Гц – 50 кГц) с ЖК-дисплеем 128×64
  8. Монитор частоты сердца на MAX30102 с Arduino Nano и дисплеем 16x2
  9. Продвинутая система домашнего мониторинга на Arduino Mega с IoT-датчиками
  10. Надёжные будильник на DS1302 RTC и Arduino UNO — сборка и код