工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

Arduino LeonardoでPCリアルタイム監視:LCDにCPU/GPU温度を表示

必要な部品と材料

プロジェクト概要

PCのCPU温度やGPU温度をリアルタイムでLCDに表示するシステムを構築します。Arduino側はシリアル通信でデータを受信し、LCDに表示するだけのシンプルな役割。重い処理はPC側のC#アプリケーション(OpenHardwareMonitorLib使用)が担い、定期的に温度を取得してArduinoへ送信します。

ハードウェア接続

I2C接続のLCDを使用する場合、SDA/SCLをArduino Leonardoの対応ピン(SDA: D2、SCL: D3)に接続します。I2Cアドレスはスキャンスケッチで確認(一般的に0x3Fまたは0x27)。

Arduino LeonardoでPCリアルタイム監視:LCDにCPU/GPU温度を表示

Arduinoスケッチ

シリアルから文字を1文字ずつ読み取り、終端文字 *(1行目)または #(2行目)を検出したらLCDへ出力します。バッファクリアも忘れずに。

#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 recieved = Serial.read();
    inData += recieved;
    if (recieved == '*') {
      inData.remove(inData.length() - 1, 1);
      lcd.setCursor(0, 0);
      lcd.print("GPU Temp.: " + inData + char(223) + "C ");
      inData = "";
      if (inData == "DIS") { lcd.clear(); lcd.print("Disconnected!"); }
    }
    if (recieved == '#') {
      inData.remove(inData.length() - 1, 1);
      lcd.setCursor(0, 1);
      lcd.print("CPU Temp.: " + inData + char(223) + "C ");
      inData = "";
    }
  }
}

PC側 C# アプリケーション

OpenHardwareMonitorLib.dllを参照し、CPU/GPU温度を取得してシリアルポート経由でArduinoへ送信します。フォーム上でCOMポートと送信間隔を選択し、「Connect」で開始、「Disconnect」で終了。

主要コード抜粋

using System.IO.Ports;
using OpenHardwareMonitor.Hardware;

SerialPort port = new SerialPort();
Computer c = new Computer() { GPUEnabled = true, CPUEnabled = true };
float value1, value2; // GPU, CPU温度

private void Init() {
  port.Parity = Parity.None;
  port.StopBits = StopBits.One;
  port.DataBits = 8;
  port.Handshake = Handshake.None;
  port.RtsEnable = true;
  foreach (string p in SerialPort.GetPortNames()) comboBox1.Items.Add(p);
  port.BaudRate = 9600;
}

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(); /* エラー処理 */ }
}

注意点

回路図

Arduino LeonardoでPCリアルタイム監視:LCDにCPU/GPU温度を表示

製造プロセス

  1. Arduino Nano 33 IoT製 フライトシミュレーター2020用コックピットパネル - LCD&CDI表示
  2. Arduinoで作るモニター用Ambilightシステム:没入感アップの自作ガイド
  3. Arduino UNOで作るLCDアニメーション&ゲーム入門
  4. ArduinoとMAX30100で作るリアルタイムIoT心拍数モニター
  5. 給湯器パイロットライト監視システム - サーモカップル電圧をArduinoとRaspberry Piで監視し異常通知
  6. Arduino UNOで1.17インチTFT LCDに画像を表示する方法
  7. Arduino Nanoで自作オシロスコープ(10Hz〜50kHz)128×64 LCD搭載
  8. Arduino NanoとMAX30102で心拍数モニターを自作:16x2 LCD表示対応
  9. Arduino Mega と IoT センサによる高機能ホームモニタリングシステム
  10. DHT センサで作る信頼性の高い Arduino 気象ステーション
  11. DS1302 RTCとArduino UNOで作る信頼性の高い目覚まし時計