Giám sát thông số hệ thống PC thời gian thực trên màn hình TFT nhỏ gọn
Landscape Mode (3 columns) |
Portrait Mode (2 columns) |
My Dashboard Ideal |
Libre Hardware Monitor Setup |
Real-time PC system monitoring display using ESP8266 NodeMCU and TFT SPI screen. Monitor CPU, RAM, GPU, VRAM, Storage, and Network stats with a beautiful gaming-style dashboard UI.
- 🎮 Gaming-Style Dashboard - Modern tile-based layout with vibrant colors
- 📊 Real-time Monitoring - CPU, RAM, GPU, VRAM, Storage, Network stats
- 🔄 Auto-Rotation - Adaptive layout for portrait and landscape orientations
- 📱 Multiple Display Support - ST7735 (1.8"), ST7789 (2.4"), ILI9341 (2.8")
- ⚙️ Web Config Portal - Easy WiFi and server configuration via browser
- 🔧 OTA Updates - Over-the-air firmware updates
- ⚡ Configurable Refresh Rate - From 10 FPS to 1 FPS (100ms to 1000ms)
- 🌐 WiFi Manager - Auto-fallback to config portal on connection failure
- Board: ESP8266 NodeMCU (or compatible)
- Display: TFT SPI Screen
- ST7735 (1.8" 128x160) - Recommended
- ST7789 (1.3"-2.4" 240x240/240x320)
- ILI9341 (2.2"-2.8" 240x320)
- Button: Push button (optional, for display on/off)
ESP8266 NodeMCU → TFT Display (ST7735)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
D8 (GPIO 15) → CS (Chip Select)
D4 (GPIO 2) → RST (Reset)
D3 (GPIO 0) → DC (Data/Command)
D2 (GPIO 4) → LED (Backlight)
D7 (GPIO 13) → SDA (MOSI)
D5 (GPIO 14) → SCK (Clock)
3.3V → VCC
GND → GND
D1 (GPIO 5) → Button (to GND)
- OS: Windows 10/11, Linux, macOS
- Software:
- Libre Hardware Monitor (Windows)
- Python 3.7+
- pip packages:
flask,requests,python-dotenv
# Navigate to server folder
cd server
# Install dependencies
pip install flask requests python-dotenv
# Run server
python system_monitor_server.pyOutput:
==================================================
System Monitor Server v1.8.3
==================================================
Server: http://192.168.1.100:8080
API: http://192.168.1.100:8080/system-info
...
Note the IP address - you'll need it for ESP8266 configuration.
- Download from GitHub Releases
- Run as Administrator
- Enable Remote Web Server:
Options→Remote Web Server→ ✅ Enable- Port:
8085(default)
Using PlatformIO (Recommended):
# Clone repository
git clone https://github.com/AnyaChann/System-Info-ESP8266-NodeMCU-with-TFT-SPI-screen.git
cd System-Info-ESP8266-NodeMCU-with-TFT-SPI-screen
# Configure display type in include/config.h
# Uncomment your display type:
# #define TFT_ST7735 // For 1.8" 128x160
# #define TFT_ST7789 // For 2.4" 240x320
# #define TFT_ILI9341 // For 2.8" 240x320
# Build and upload
platformio run --target uploadUsing Arduino IDE:
- Install libraries:
- Adafruit GFX Library
- Adafruit ST7735 and ST7789 Library
- Adafruit ILI9341
- WiFiManager
- ArduinoJson
- Copy all
.cppand.hfiles to sketch folder - Select board:
NodeMCU 1.0 (ESP-12E Module) - Upload
First Boot:
Reconfigure anytime:
- Hold button for 7 seconds
- Or device auto-enters config mode after 10 failed connections
// Display Type (uncomment one)
#define TFT_ST7735 // 1.8" 128x160
// #define TFT_ST7789 // 2.4" 240x320
// #define TFT_ILI9341 // 2.8" 240x320
// Screen Rotation (0-3)
#define SCREEN_ROTATION 0 // 0°, 90°, 180°, 270°
// Refresh Rate (milliseconds)
#define REFRESH_INTERVAL 100 // 100ms = ~10 FPS (recommended)
// Options: 33ms (30 FPS), 100ms (10 FPS), 200ms (5 FPS), 500ms (2 FPS)
// Backlight Auto-off
#define BACKLIGHT_TIMEOUT 60000 // 60 seconds# PC IP (auto-detect if empty)
PC_IP_ADDRESS=
# Server port
SERVER_PORT=8080
# Libre Hardware Monitor port
LIBRE_HW_MONITOR_PORT=8085
# Debug mode (true/false)
DEBUG_MODE=false
# Max disks to display
MAX_DISKS=2Single Press (Short):
- Toggle display ON/OFF manually
- Display will turn back on automatically when backlight timeout expires
Long Press (7 seconds):
- Enter WiFi configuration portal
- LED will blink rapidly to confirm
- Device creates hotspot
ESP8266-Config
Update firmware wirelessly without USB cable:
Method 1: PlatformIO OTA
# Make sure ESP8266 is connected to WiFi
# Find device IP from serial monitor or router
# Upload via OTA
platformio run --target upload --upload-port 192.168.1.XXXMethod 2: Arduino IDE OTA
- Go to
Tools→Port - Select network port:
ESP8266 at 192.168.1.XXX - Click Upload button
Method 3: Web Browser OTA
- Open browser:
http://ESP8266_IP/update - Click "Choose File" and select
.binfirmware file - Click "Update" and wait for completion
- Device will restart automatically
Important Notes:
- Ensure stable WiFi connection during OTA
- Don't power off during update process
- If OTA fails, use USB cable to reflash
┌────────────────┐
│ SYS │
├────────┬───────┤
│ CPU │ RAM │
│ 45% │ 67% │
│ 38°C │ 8.5GB │
├────────┼───────┤
│ GPU │ VRAM │
│ 32% │ 28% │
│ 42°C │ 2GB │
├────────┴───────┤
│ STORAGE │
│ D1:45% D2:67% │
│ 38°C 42°C │
├────────┬───────┤
│ UP │ DOWN │
│ 12 │ 45 │
│ Mb/s │ Mb/s │
└────────┴───────┘
┌─────────────────────────┐
│ SYS │
├────────┬────────┬───────┤
│ CPU │ RAM │ GPU │
│ 45% │ 67% │ 32% │
│ 38°C │ 8.5GB │ 42°C │
├────────┼────────┼───────┤
│ VRAM │ SSD │ NET │
│ 28% │ D1:45% │ U:12 │
│ 2GB │ 38°C │ D:45 │
└────────┴────────┴───────┘
Display not working?
- Check wiring connections
- Verify display type in
config.h - Try different
SCREEN_ROTATIONvalues
WiFi connection fails?
- Hold button 7 seconds to enter config mode
- Check WiFi credentials
- Ensure 2.4GHz network (ESP8266 doesn't support 5GHz)
No data from server?
- Verify Libre Hardware Monitor is running
- Check server IP and port in config portal
- Test:
curl http://SERVER_IP:8080/system-info - Allow Python through Windows Firewall
Display too slow?
- Decrease
REFRESH_INTERVALinconfig.h - Recommended: 100ms for smooth updates
System-Info-ESP8266-NodeMCU/
├── include/ # Header files
│ ├── config.h # Main configuration
│ ├── display_manager.h # Display driver
│ ├── network_manager.h # WiFi & HTTP
│ └── ...
├── src/ # Source files
│ ├── main.cpp # Main program
│ ├── display_manager.cpp
│ └── ...
├── server/ # Python server
│ ├── system_monitor_server.py
│ ├── .env # Server config
│ └── requirements.txt
├── platformio.ini # PlatformIO config
└── README.md # This file
Contributions are welcome! Please:
- Fork the repository
- Create feature branch (
git checkout -b feature/amazing-feature) - Commit changes (
git commit -m 'Add amazing feature') - Push to branch (
git push origin feature/amazing-feature) - Open Pull Request
This project is licensed under the MIT License - see LICENSE file for details.
- Libre Hardware Monitor - Hardware monitoring
- Adafruit GFX Library - Graphics library
- WiFiManager - WiFi configuration
Màn hình giám sát thông số PC thời gian thực sử dụng ESP8266 NodeMCU và màn hình TFT SPI. Theo dõi các thông số CPU, RAM, GPU, VRAM, Storage và Network với giao diện dashboard phong cách gaming đẹp mắt.
- 🎮 Dashboard Phong Cách Gaming - Layout dạng tile hiện đại với màu sắc sống động
- 📊 Giám Sát Thời Gian Thực - CPU, RAM, GPU, VRAM, Storage, Network
- 🔄 Tự Động Xoay - Layout tự động thích ứng với chế độ dọc và ngang
- 📱 Hỗ Trợ Nhiều Màn Hình - ST7735 (1.8"), ST7789 (2.4"), ILI9341 (2.8")
- ⚙️ Cổng Config Web - Cấu hình WiFi và server dễ dàng qua trình duyệt
- 🔧 Cập Nhật OTA - Cập nhật firmware qua mạng không dây
- ⚡ Tốc Độ Làm Mới Linh Hoạt - Từ 10 FPS đến 1 FPS (100ms đến 1000ms)
- 🌐 Quản Lý WiFi - Tự động chuyển về chế độ config khi mất kết nối
- Board: ESP8266 NodeMCU (hoặc tương thích)
- Màn hình: TFT SPI Screen
- ST7735 (1.8" 128x160) - Khuyến nghị
- ST7789 (1.3"-2.4" 240x240/240x320)
- ILI9341 (2.2"-2.8" 240x320)
- Nút bấm: Push button (tùy chọn, để bật/tắt màn hình)
ESP8266 NodeMCU → Màn hình TFT (ST7735)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
D8 (GPIO 15) → CS (Chip Select)
D4 (GPIO 2) → RST (Reset)
D3 (GPIO 0) → DC (Data/Command)
D2 (GPIO 4) → LED (Đèn nền)
D7 (GPIO 13) → SDA (MOSI)
D5 (GPIO 14) → SCK (Clock)
3.3V → VCC
GND → GND
D1 (GPIO 5) → Nút bấm (nối GND)
- OS: Windows 10/11, Linux, macOS
- Phần mềm:
- Libre Hardware Monitor (Windows)
- Python 3.7+
- pip packages:
flask,requests,python-dotenv
# Di chuyển đến thư mục server
cd server
# Cài đặt thư viện
pip install flask requests python-dotenv
# Chạy server
python system_monitor_server.pyKết quả:
==================================================
System Monitor Server v1.8.2
==================================================
Server: http://192.168.1.100:8080
API: http://192.168.1.100:8080/system-info
...
Ghi nhớ địa chỉ IP - bạn sẽ cần nó để cấu hình ESP8266.
- Tải từ GitHub Releases
- Chạy với quyền Administrator
- Bật Remote Web Server:
Options→Remote Web Server→ ✅ Enable- Port:
8085(mặc định)
Sử dụng PlatformIO (Khuyến nghị):
# Clone repository
git clone https://github.com/AnyaChann/System-Info-ESP8266-NodeMCU-with-TFT-SPI-screen.git
cd System-Info-ESP8266-NodeMCU-with-TFT-SPI-screen
# Cấu hình loại màn hình trong include/config.h
# Bỏ comment loại màn hình của bạn:
# #define TFT_ST7735 // Cho màn 1.8" 128x160
# #define TFT_ST7789 // Cho màn 2.4" 240x320
# #define TFT_ILI9341 // Cho màn 2.8" 240x320
# Build và upload
platformio run --target uploadSử dụng Arduino IDE:
- Cài đặt thư viện:
- Adafruit GFX Library
- Adafruit ST7735 and ST7789 Library
- Adafruit ILI9341
- WiFiManager
- ArduinoJson
- Copy tất cả file
.cppvà.hvào thư mục sketch - Chọn board:
NodeMCU 1.0 (ESP-12E Module) - Upload
Lần khởi động đầu:
Cấu hình lại bất cứ lúc nào:
- Giữ nút bấm 7 giây
- Hoặc thiết bị tự động vào chế độ config sau 10 lần kết nối thất bại
// Loại màn hình (bỏ comment 1 dòng)
#define TFT_ST7735 // 1.8" 128x160
// #define TFT_ST7789 // 2.4" 240x320
// #define TFT_ILI9341 // 2.8" 240x320
// Góc xoay màn hình (0-3)
#define SCREEN_ROTATION 0 // 0°, 90°, 180°, 270°
// Tốc độ làm mới (milliseconds)
#define REFRESH_INTERVAL 100 // 100ms = ~10 FPS (khuyến nghị)
// Tùy chọn: 33ms (30 FPS), 100ms (10 FPS), 200ms (5 FPS), 500ms (2 FPS)
// Tự động tắt đèn nền
#define BACKLIGHT_TIMEOUT 60000 // 60 giây# IP của PC (để trống để tự động phát hiện)
PC_IP_ADDRESS=
# Port server
SERVER_PORT=8080
# Port Libre Hardware Monitor
LIBRE_HW_MONITOR_PORT=8085
# Chế độ debug (true/false)
DEBUG_MODE=false
# Số ổ đĩa tối đa hiển thị
MAX_DISKS=2Nhấn ngắn (1 lần):
- Bật/tắt màn hình thủ công
- Màn hình sẽ tự động bật lại khi hết thời gian chờ đèn nền
Nhấn giữ (7 giây):
- Vào chế độ cấu hình WiFi
- LED sẽ nhấp nháy nhanh để xác nhận
- Thiết bị tạo hotspot
ESP8266-Config
Cập nhật firmware qua mạng không dây, không cần cáp USB:
Phương pháp 1: PlatformIO OTA
# Đảm bảo ESP8266 đã kết nối WiFi
# Tìm IP của thiết bị từ serial monitor hoặc router
# Upload qua OTA
platformio run --target upload --upload-port 192.168.1.XXXPhương pháp 2: Arduino IDE OTA
- Vào
Tools→Port - Chọn cổng mạng:
ESP8266 at 192.168.1.XXX - Nhấn nút Upload
Phương pháp 3: Trình duyệt Web
- Mở trình duyệt:
http://ESP8266_IP/update - Nhấn "Choose File" và chọn file firmware
.bin - Nhấn "Update" và đợi hoàn thành
- Thiết bị sẽ tự động khởi động lại
Lưu ý quan trọng:
- Đảm bảo kết nối WiFi ổn định trong quá trình OTA
- Không tắt nguồn khi đang cập nhật
- Nếu OTA thất bại, dùng cáp USB để flash lại
┌────────────────┐
│ SYS │
├────────┬───────┤
│ CPU │ RAM │
│ 45% │ 67% │
│ 38°C │ 8.5GB │
├────────┼───────┤
│ GPU │ VRAM │
│ 32% │ 28% │
│ 42°C │ 2GB │
├────────┴───────┤
│ STORAGE │
│ D1:45% D2:67% │
│ 38°C 42°C │
├────────┬───────┤
│ UP │ DOWN │
│ 12 │ 45 │
│ Mb/s │ Mb/s │
└────────┴───────┘
┌─────────────────────────┐
│ SYS │
├────────┬────────┬───────┤
│ CPU │ RAM │ GPU │
│ 45% │ 67% │ 32% │
│ 38°C │ 8.5GB │ 42°C │
├────────┼────────┼───────┤
│ VRAM │ SSD │ NET │
│ 28% │ D1:45% │ U:12 │
│ 2GB │ 38°C │ D:45 │
└────────┴────────┴───────┘
Màn hình không hoạt động?
- Kiểm tra các kết nối dây
- Xác minh loại màn hình trong
config.h - Thử các giá trị
SCREEN_ROTATIONkhác nhau
Kết nối WiFi thất bại?
- Giữ nút 7 giây để vào chế độ config
- Kiểm tra thông tin WiFi
- Đảm bảo mạng 2.4GHz (ESP8266 không hỗ trợ 5GHz)
Không nhận được dữ liệu từ server?
- Kiểm tra Libre Hardware Monitor đang chạy
- Kiểm tra IP và port server trong cổng config
- Test:
curl http://SERVER_IP:8080/system-info - Cho phép Python qua Windows Firewall
Màn hình quá chậm?
- Giảm
REFRESH_INTERVALtrongconfig.h - Khuyến nghị: 100ms cho cập nhật mượt mà
System-Info-ESP8266-NodeMCU/
├── include/ # File header
│ ├── config.h # Cấu hình chính
│ ├── display_manager.h # Driver màn hình
│ ├── network_manager.h # WiFi & HTTP
│ └── ...
├── src/ # File nguồn
│ ├── main.cpp # Chương trình chính
│ ├── display_manager.cpp
│ └── ...
├── server/ # Python server
│ ├── system_monitor_server.py
│ ├── .env # Cấu hình server
│ └── requirements.txt
├── platformio.ini # Cấu hình PlatformIO
└── README.md # File này
Mọi đóng góp đều được chào đón! Vui lòng:
- Fork repository
- Tạo nhánh tính năng (
git checkout -b feature/tinh-nang-tuyet-voi) - Commit thay đổi (
git commit -m 'Thêm tính năng tuyệt vời') - Push lên nhánh (
git push origin feature/tinh-nang-tuyet-voi) - Tạo Pull Request
Dự án này được cấp phép theo giấy phép MIT - xem file LICENSE để biết chi tiết.
- Libre Hardware Monitor - Giám sát phần cứng
- Adafruit GFX Library - Thư viện đồ họa
- WiFiManager - Cấu hình WiFi
Made with ❤️ by AnyaChann
⭐ Star this repo if you find it useful!







