Skip to content
Back to Projects

January 20, 2025

ESP32Next.jsAPIIoT

On Time Every Time

Full setup with display and web interface

On Time Every Time is a physical bus schedule display powered by an ESP32 and a web dashboard. It pulls real-time arrival data from the University of Michigan bus API and shows upcoming departures on an LED matrix — mounted on my apartment wall so I never miss the bus.

Interface

An ESP32 drives a 64x32 LED matrix panel showing the next few bus arrivals for my stop. The display updates every 30 seconds and color-codes routes for quick scanning. It connects to my Wi-Fi and fetches data through a Next.js API proxy.

A companion web app lets me configure which stops and routes to track, and provides the same real-time view in the browser. The API proxy handles authentication with the MBus API and caches responses to stay within rate limits.

The final setup is mounted next to my front door. My roommate uses it!

LED matrix display showing bus times