Made by: Karin Novelia (kn2596)

Have you ever rushed out the door only to just miss your bus/train? With the catch-your-commute alarm clock system, you can customize an alarm clock to be tailored to your everyday commute. It’ll tell you when you it’s time to leave, when it’s really time to leave running, or when… it’s not worth rushing, you’re already late, just catch the next one.

In this project, I will create an ESP32 powered alarm clock with 3 modes: Real-Time Clock, Subway Alert and Commute Alarm. As a stretch goal, beyond the basic enclosure, I will also create a portable watch mode.

This is usually where I put a demo video of the finished setup, but I ran into issues and couldn’t record it working as a whole 😞. So while this project is incomplete, I’ll walkthrough the parts I got working as much as possible, and explain the issues I ran into that made it hard to debug and finish this.

Hardware Components:

Base Alarm Clock:

  1. LilyGo ESP32 T-Display microcontroller - to display time and text
  2. A USB-C cable
  3. A breadboard
  4. A PCB joystick module - to move between menu options/modes
  5. 2 momentary push buttons - to select between menu options

For more technical instructions on how to recreate this project, visit my GitHub page

Real-Time Clock Mode

Out of the 3 modes I planned to implement, this turned out to be the easiest one. I found a simple webapi site called https://worldtimeapi.org/ that lets you easily lookup your local timezone.

To get your local time, you simply to give a timezone and city, as laid out in their api.

An example HTTP request, for my timezone:

https://worldtimeapi.org/api/timezone/America/New_York

A video demonstration of the RTC mode in action

A video demonstration of the RTC mode in action

Subway Arrival Mode

This mode turned out to be a lot harder than I expected. The MTA does have a free-to-use web API, however, the data isn’t exactly easy to extract. They use the GTFS (General Transit Feed Specification) format that uses Protocol Buffers, a compiler that takes the GTFS template and translates it to other programming languages from Python to C. While it’s a convenient concept, in theory, the documentation is long and hard to get through, and they are not exactly kept up to date.