Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Monitor de PC en Tiempo Real con Arduino y Pantalla LCD

Componentes y Suministros

Sobre el Proyecto

Introducción

La idea de este proyecto surgió de la necesidad de diversión y aprendizaje. Es fácil de hacer y tiene muchas aplicaciones. Podemos usarlo, por ejemplo, para controlar, almacenar y mostrar variables de hardware.

Conexión del LCD

Primero, conectamos nuestro LCD (estaba usando un conversor I2C):

Monitor de PC en Tiempo Real con Arduino y Pantalla LCD

Código para Arduino

Configuramos la pantalla LCD 16×2 con dirección 0x3F (la dirección del bus I2C se puede encontrar escaneando con un sketch sencillo disponible en Arduino Playground).

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

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

void setup() {
  lcd.init();
  Serial.begin(9600);
  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.setCursor(0, 0);
        lcd.print("Desconectado!");
      }
    }
    
    if (recieved == '#') {
      inData.remove(inData.length() - 1, 1);
      lcd.setCursor(0, 1);
      lcd.print("CPU Temp.: " + inData + char(223) + "C ");
      inData = "";
    }
  }
}

Explicación del Protocolo de Comunicación

Configuración en PC (Aplicación C#)

¿Por qué C#? Es fácil y rápido de escribir.

Librería Necesaria

Descarga Open Hardware Monitor y usa OpenHardwareMonitorLib.dll.

  1. Crea un proyecto Windows Forms Application.
  2. Click derecho en Referencias → Examinar → Selecciona la DLL.

Interfaz de Usuario

Monitor de PC en Tiempo Real con Arduino y Pantalla LCD
Monitor de PC en Tiempo Real con Arduino y Pantalla LCD

Código Principal (C#)

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

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

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 hardware in c.Hardware) {
    if (hardware.HardwareType == HardwareType.GpuNvidia) {
      hardware.Update();
      foreach (var sensor in hardware.Sensors)
        if (sensor.SensorType == SensorType.Temperature)
          value1 = sensor.Value.GetValueOrDefault();
    }
    if (hardware.HardwareType == HardwareType.CPU) {
      hardware.Update();
      foreach (var sensor in hardware.Sensors)
        if (sensor.SensorType == SensorType.Temperature)
          value2 = sensor.Value.GetValueOrDefault();
    }
  }
  
  try {
    port.Write(value1 + "*" + value2 + "#");
  } catch (Exception ex) {
    timer1.Stop();
    MessageBox.Show(ex.Message);
    toolStripStatusLabel1.Text = "Arduino no responde...";
  }
}

Botones de Conexión/Desconexión


// Conectar
if (!port.IsOpen) {
  port.PortName = comboBox1.Text;
  port.Open();
  timer1.Interval = Convert.ToInt32(comboBox2.Text);
  timer1.Enabled = true;
  toolStripStatusLabel1.Text = "Enviando datos...";
  label2.Text = "Conectado";
}

// Desconectar
port.Write("DIS*");
port.Close();
timer1.Enabled = false;
label2.Text = "Desconectado";

¡El programa debe ejecutarse con privilegios de administrador!

Código Completo

Código Arduino

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

Aplicación C# Completa

El código completo de la aplicación Windows Forms está disponible en la sección de código del proyecto original.

Esquemáticos

Monitor de PC en Tiempo Real con Arduino y Pantalla LCD

Proceso de manufactura

  1. Panel de control para Flight Simulator 2020 con Arduino Nano: Pantallas LCD y CDI
  2. Crea un Impresionante Sistema Ambilight para Monitor con Arduino
  3. Crea Animaciones y Juegos en LCD 16×2 con Arduino UNO
  4. Monitor de Frecuencia Cardíaca IoT en Tiempo Real con Arduino y MAX30100
  5. Monitor de voltaje de termopar para piloto de calentador de agua: alertas seguras por email y SMS
  6. Cómo mostrar imágenes en una pantalla TFT LCD de 1.17 pulgadas con Arduino UNO
  7. Osciloscopio DIY con Arduino Nano (10 Hz–50 kHz) y LCD 128×64
  8. Monitor de frecuencia cardíaca MAX30102 con Arduino Nano y LCD 16x2
  9. Sistema Avanzado de Monitorización Doméstica con Arduino Mega y Sensores IoT
  10. Construye una Estación Meteorológica Arduino Fiable con Sensores DHT
  11. Construye un reloj despertador fiable con RTC DS1302 y Arduino UNO