MBTA Bus Tracker

I often ride the 96 bus for my commute, and the posted timetable is not very accurate. Some days arrived early and I miss it by two minutes, then wait another 30 for the next bus. Other times, the bus is late and I stand in the hot sun or cold snow for ten minutes. The live arrival times are the only source that is reliable. I wanted those in front of me without having to pull out my phone, so I built a display that sits by my door and shows when the next buses are really coming.

The tracker is built around an ESP32 and an e-ink display. Every minute, it connects over Wi-Fi to the MBTA API, finds the next two arrivals for my stop. The display is designed to be readable at a glance:

  • The two closest bus times are shown as minutes away.
  • A small house represents my bus stop, and a small bus icon moves toward it as the closest bus’s countdown drops.
  • When the bus is 3 minutes or less away, the screen switches to a huge 3, 2, 1 countdown, which tells me to leave now.

The enclosure is a simple snap-together 3D-printed case that holds each component in place with no screws or glue. The whole system plugs into the wall, so there’s no battery to charge or die, which would otherwise leave stale bus times on the screen. That matters because an e-ink display keeps showing its last image even when it loses power.