Créez un moniteur PC temps réel Arduino avec affichage LCD
Composants et fournitures
| Composant | Quantité | Remarques |
|---|---|---|
| Arduino Leonardo (ou tout Arduino avec USB natif / ATmega + convertisseur UART) | 1 | Leonardo : port USB virtuel série natif |
| Écran LCD 16×2 (avec module I2C) | 1 | Adresse I2C 0x3F (scanner I2C pour confirmer) |
| Fils de connexion | 1 lot |
À propos du projet
Introduction
Projet né du désir d'apprendre et de s'amuser. Simple à réaliser, applications multiples : surveillance matériel, affichage variables système, etc.
Mise en route – Câblage LCD I2C
Connexion standard : VCC/GND + SDA/SCL sur broches I2C de l'Arduino (Leonardo : SDA=2, SCL=3). Module I2C détecté à l'adresse 0x3F via scanner I2C.
Firmware Arduino
Bibliothèques : Wire.h, 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 == '*') { // Fin ligne 1 (GPU)
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 == '#') { // Fin ligne 2 (CPU)
inData.remove(inData.length() - 1, 1);
lcd.setCursor(0, 1);
lcd.print("CPU Temp.: " + inData + char(223) + "C ");
inData = "";
}
}
}
Protocole série : tempGPU*tempCPU#. Caractères * et # délimitent les deux lignes. Latence évitée par lecture char par char.
Application PC (C# / Windows Forms)
Bibliothèque : OpenHardwareMonitorLib.dll (récupération températures CPU/GPU Nvidia).
Architecture :
Computerobjet :CPUEnabled = true, GPUEnabled = true.- Timer périodique (intervalle configurable) →
Status(): énumère capteurs, extrait températures, envoieport.Write(gpuTemp + "*" + cpuTemp + "#"). - Interface : ComboBox ports COM, ComboBox intervalle, boutons Connect/Disconnect, statut barre d'état, minimisation zone de notification.
- Exécution en administrateur requise (accès capteurs matériel).
Extrait code C# principal
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(); /* gestion erreur */ }
}
Configuration & utilisation
- Compiler/uploader firmware Arduino.
- Compiler application C# (Visual Studio), référence OpenHardwareMonitorLib.dll.
- Exécuter en admin, sélectionner port COM, intervalle (ex. 2000 ms), « Connect ».
- LCD affiche : ligne 1 → GPU, ligne 2 → CPU, mises à jour temps réel.
Code source complet
- Firmware Arduino (ci-dessus).
- Application C# (Windows Forms) : classes
Form1,Init(),Status(), gestion timer, tray icon, connect/disconnect.
Schéma
Schéma de câblage LCD I2C – Arduino Leonardo (image).
Processus de fabrication
- Panneau de contrôle Arduino Nano pour Flight Simulator 2020 – Affichage LCD et CDI
- Créer un système Ambilight spectaculaire pour moniteur avec Arduino
- Créer des animations et jeux sur LCD avec Arduino UNO
- Moniteur de Fréquence Cardiaque IoT en Temps Réel avec Arduino et MAX30100
- Sécurisez votre chauffe-eau : Moniteur de tension thermocouple pour veilleuse pilote
- Afficher des images sur un écran TFT 1,17 pouces avec Arduino UNO
- Oscilloscope DIY Arduino Nano (10 Hz – 50 kHz) avec écran LCD 128×64
- Moniteur de fréquence cardiaque MAX30102 avec Arduino Nano et écran LCD 16x2
- Construire un Réveil Fiable avec RTC DS1302 et Arduino UNO