TTC LED Transit Map
A custom 4-layer PCB of the Toronto TTC transit map with 419 addressable LEDs driven by an ESP32-C3, with the board artwork generated programmatically from real GTFS transit data
Technologies
KiCadESP32-C3WS2812PythonGTFSPCB Design
## Overview
The TTC LED Transit Map is a personal hardware project: a custom-designed printed circuit board shaped like the Toronto transit map, with 419 individually addressable WS2812 LEDs placed exactly where the stations are, driven by an ESP32-C3 microcontroller. The board layout is not drawn by hand, it is generated programmatically from real transit data.
## Problem
I wanted a physical, lit-up version of the TTC map where every station is an LED. Placing 419 LEDs and routing a board that large by hand would be enormous and error-prone, and the geometry needed to match the real network, not an approximation.
## Solution
I wrote a Python pipeline that reads the TTC's GTFS (General Transit Feed Specification) data, extracts the real station coordinates and line geometry, and generates the board artwork and LED placements automatically. That generated layout became a 4-layer PCB in KiCad, with the ESP32-C3 addressing the WS2812 chain so any station or line can be lit independently.
## Features
- **Data-driven layout**: board geometry and 419 LED positions generated from real GTFS transit data with Python
- **4-layer PCB**: designed in KiCad to route power and the addressable-LED signal across a large board
- **ESP32-C3 control**: drives the WS2812 chain, so individual stations and lines can be animated
- **Fabricated hardware**: the board was manufactured and is a real physical object, not just a design file
## Technologies Used
- **PCB**: KiCad, 4-layer design, WS2812 addressable LEDs
- **Firmware**: ESP32-C3
- **Tooling**: Python, GTFS transit data
## What I Learned
Bridging software and hardware end to end, from parsing open transit data and generating a board programmatically, to designing a real multi-layer PCB and driving hundreds of addressable LEDs from a microcontroller.