WMATA Metro Train Status

An ESP8266 will connect to DC Metro's api and control a neopixel ring, 7-segment LED, and 20x4 LCD screen.

Similar projects worth following
This project utilizes an Adafruit Huzzah esp8266, 24 count neopixel ring (line color), 7-segment serial LED (arrival time in minutes), and 20x4 serial LCD screen (station updates) to display train arrival times per station using the DC metro system api (WMATA).

This project was created for those who hate looking at a phone app for train arrival times for your station.

An ESP8266 will control a neopixel ring (metro line), 7-segment LED (arrival time), and 20x4 LCD screen (station updates).

An Adafruit Huzzah programmed with the Arduino Software using and FTDI cable will attempt to connect to the wifi network specified in the code. If for some reason it does not connect, the ESP8266 CPU will restart and continue trying. Once it connects to the wifi network, it will attempt to connect to WMATA's API "" using a subscription key. If successful, it will look for the station information and then based on what if available, display the train arrival time and station information.

To see the most recent code update visit,

Project Breakdown:

  • Neopixel Ring
    • Displays Metro Line
      • RD - RED
      • OR - ORANGE
      • YL - YELLOW
      • GR - GREEN
      • BL - BLUE
      • SV - SILVER
    • Fades in-out upon arrival (1-3 min)
    • Sparkle flash upon boarding (0-1 min)
  • 7-Segment LED
    • Displays arrival time (minutes)
    • arr - arriving
    • brd - boarding
    • oos - out of service
    • no - no passenger
    • na - metro has no data (null return from api call)
  • 20x4 LCD
    • Displays station updates
      • LN - Line
      • CAR - Number of cars on train
      • DEST - Destination station
      • MIN - Minutes until arrival

View all 6 components

  • April 9 - May 19 (code changelog)

    Brian05/08/2017 at 02:39 0 comments

    • 4/9/2017 - Created files and coded Neopixel ring and button to change stations.
    • 4/10/2017 - Fixed errors and made modifications
    • 4/11/2017 - Fixed errors and refined code
    • 4/13/2017 - Added metro colors
    • 4/23/2017 - Update LCD Library include
    • 4/26/2017 - Added some code
    • 4/27/2017 - Added JSON parsing, modified code and libraries, INITIAL RELEASE!
    • 4/28/2017 - Changed neopixel brightness, parsing port (parsing), and added neopixel sparkle code (arrival)
    • 4/30/2017 - fixed color notifications and modified button.
    • 5/1/2017 - added "No passenger", "brd", "arr" and simplified the wifi and OTA code.
    • 5/2/2017 - stabilized network connection. Added NetworkRestart()
    • 5/6/2017 - stabilized device with more "yield()" and added added code to determine if metro has no data (null return from api call).
    • 5/18/2017 - fixed minor bugs

  • Started coding

    Brian05/08/2017 at 02:35 0 comments

    April 9, 2017

    Coding of the project started at this time. It was the "bare bones" push to github without the JSON parser.

  • Initial creation

    Brian05/08/2017 at 02:32 0 comments

    March 26, 2017

    Initial idea for the project was formed. A sketch of the overall look of the project was created.

View all 3 project logs

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates