DEV Community

Cover image for πŸš€ Arduino Live System Monitor Using Node.js (jhonny-five)
Muhammad Sheharyar Butt
Muhammad Sheharyar Butt

Posted on

πŸš€ Arduino Live System Monitor Using Node.js (jhonny-five)

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

Arduino Live System Monitor


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


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

Link

Contributions and improvements are welcome.

Running Locally

  1. Connect the Arduino to your PC via USB
  2. Install dependencies and start the app:

bash
npm install && node index.js

Enter fullscreen mode Exit fullscreen mode

Top comments (0)