Skip to content

veronicaoi/hardware-dashboard-workshop

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 

Repository files navigation

Hardware Telemetry Dashboard

A real-time hardware telemetry dashboard built with Arduino, Python, Flask, and Socket.IO.

This project reads sensor data from an Arduino over serial, sends it to a Python backend, and visualizes it live in a browser dashboard.

Built for the ACM x WECE Hardware Telemetry Workshop (2026).

What This Project Demonstrates

This project shows how to build a simple full-stack hardware interface:

You will learn how to:

  • Read sensor data on an Arduino
  • Send structured data over serial
  • Parse data in Python
  • Stream telemetry with websockets
  • Visualize real-time data in a browser dashboard

Features

  • Real-time telemetry dashboard

  • Works with Arduino Uno

  • Supports potentiometer + temperature sensor

  • Serial data formatted as JSON

  • Live statistics:

    • current value
    • min / max
    • moving average
  • Chart visualization with Chart.js

  • Fake data mode for testing without hardware

Hardware Requirements

Any Arduino Uno compatible board.

Workshop tested kits:

  • Arduino Uno Starter Kit
  • Elegoo Arduino Uno Starter Kit

Components used:

  • Arduino Uno
  • Potentiometer
  • LM35 temperature sensor
  • Breadboard
  • Jumper wires

Note: You will need a standard USB port. The Arduino cable typically is USB and not USBC.

Installation

1. Fork the repository

  1. You will first fork this repo, and then clone your fork to your machine
git clone https://github.com/<your-username>/hardware-dashboard-workshop.git
cd hardware-dashboard-workshop

2. Create a Python environment

Recommended:

python -m venv venv

Activate it.

Windows

venv\Scripts\activate

Mac / Linux

source venv/bin/activate

3. Install dependencies

pip install -r requirements.txt

Dependencies include:

  • flask
  • flask-socketio
  • pyserial

Arduino Setup

Upload the Arduino sketch from:

telemetry/telemetry.ino

The sketch:

  • reads the potentiometer and temperature sensor
  • converts them to normalized values
  • sends JSON telemetry over serial

Example output:

{"t_ms":5234,"pot":0.53,"temp":0.41}

Serial settings:

baud rate: 115200

Running the Dashboard

Start the Python server.

Fake Data Mode (no hardware required)

python server/app.py --source fake

Arduino Serial Mode

python server/app.py --source serial --port COM5

NOTE: your port may be different. You can check (on Windows) by searching for Device Manager in the start menu, and clicking on the Ports dropdown

Examples:

Windows

python server/app.py --source serial --port COM5

Mac

python server/app.py --source serial --port /dev/tty.usbmodemXXXX

Linux

python server/app.py --source serial --port /dev/ttyACM0

Then open your browser:

http://127.0.0.1:5000

You should see the live telemetry dashboard.


CLI Options

--source   fake | serial
--port     serial port (required for serial mode)
--baud     baud rate (default 115200)

Example:

python server/app.py --source serial --port COM5 --baud 9600

Data Format

Telemetry is sent as JSON lines:

{
  "t_ms": 5234,
  "pot": 0.53,
  "temp": 0.41
}

Fields:

Field Description
t_ms milliseconds since Arduino boot
pot potentiometer value (0–1)
temp normalized temperature value (0–1)

Fake Data Mode

If hardware is unavailable, the dashboard can generate synthetic telemetry.

Run:

python server/app.py --source fake

This allows students to:

  • test the dashboard
  • debug frontend code
  • run the project without hardware

Troubleshooting

Dashboard loads but no data

Check the console output of app.py.

Serial port error

Ensure the correct port is used:

Windows example:

COM3
COM4
COM5

Check in Arduino IDE → Tools → Port.


Arduino resets when server starts

This is expected behavior. Opening the serial port triggers an Arduino reset.

The server waits briefly to allow the Arduino to reboot.

Workshop Authors

Jacob Frankel Sally Golding

ACM @ University of Florida Women in Electrical & Computer Engineering (WECE)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 37.8%
  • JavaScript 25.3%
  • HTML 17.7%
  • CSS 13.2%
  • C++ 6.0%