Arduino Live System Monitor Using Node.js
A small hobby project that connects Node.js with Arduino UNO R3 to display live system statistics on an I2C LCD module.
The entire project is written in pure JavaScript, using Johnny-Five for serial communication and Standard Firmata on the Arduino side.
The goal is to provide a lightweight, hardware-based system monitor that runs independently of any desktop UI.
Features
- CPU usage (%)
- Memory usage (%)
- Download speed (MB/s)
- Upload speed (MB/s)
- Automatically detects the active network adapter
- Live updates via serial communication
Screenshot
Motivation
Most system monitoring tools are software-based and tied to the operating system UI.
This project explores a different approach by moving system metrics to a physical display, controlled entirely through JavaScript.
It also demonstrates:
- Using JavaScript for hardware control
- Real-time serial communication with Arduino
- Practical usage of Johnny-Five beyond basic LEDs and sensors
Tech Stack
- Node.js (>= 18, LTS recommended)
- Johnny-Five
- Arduino UNO R3
- Standard Firmata
- I2C LCD Module
- PCF8574T I2C Controller (configurable)
Requirements
- Node.js 18 or higher
- Arduino UNO R3 with Standard Firmata flashed https://www.instructables.com/Arduino-Installing-Standard-Firmata/
- I2C LCD Module
- PCF8574T I2C Controller
(Controller address can be changed in
index.js)
Possible Improvements
- GPU usage support
- Temperature and fan speed monitoring
- Support for other boards (Mega, Nano, ESP32)
- Configurable refresh intervals
- Multi-page LCD views
Source Code
Contributions and improvements are welcome.
Running Locally
- Connect the Arduino to your PC via USB
- Install dependencies and start the app:
bash
npm install && node index.js

Top comments (0)