Main Content

This project started with an idea of making a simple clock for a child that just wants to know “should I get up yet”.

Problem description
The project focuses on providing a simple clock, set by GPS, that gives the user a quick visual indicator (red / yellow / green) based on a defined schedule.

The initial goal of the project was to create a clock for a child that would simply tell them if it was time to wake up or not. However, after I started working on the project my child said they also wanted to know what time it was so it still needed to function as a regular clock.

Other Uses including Work from Home (WFH)
Once the project was working, I realized it could be a “quick look” indicator for other purposes too. A solid use case would be work from home environments because it could 1) allow the person working to quickly see if they should be wrapping up soon (since it is easy to get caught up and lose track of time) and 2) allow family members, especially younger ones, to know if they can go talk to the person working. Since the project uses a RGB backlight for a quick red/yellow/green indicator, it would allow a younger child to know if the adult is available without having to read the actual time and remember a schedule.

GNSS/GPS feature of Spresense board
The Spresense board has a built-in GPS receiver, which allows the clock to easily set the time in a very accurate manner. The accuracy of time for GPS is very important, so it is reliable source to use to set your time. I compared my clock’s GPS set time and the official US time, and the time displayed was effectively the same time shown on ( the Official U.S. time ).

How does the project work?
High level, this is what the code does:

- Does initial setup - initialize LCD w/ RGB backlight, start the real time clock (RTC) and start the GPS receiver.
- Starts to check the GPS time. If the year is less than 2000, the code assumes the GPS signal is still searching and shows “Waiting on GPS” on the top row and it does show the time since the device started on the bottom row so 30 seconds after running would show “12:00:30 AM”.
- The GPS signal seems to take just under a minute to sync/get an accurate time which is used to set the RTC. A time zone offset is defined in the code.
- Once the time is accurate, the display shows the date ( MM/DD/YYYY format ) on the top row and the time (AM/PM format) on the bottom row. The time on the screen is updated every second.
- The backlight color changes based on the child’s sleep schedule. Red = Sleeping, Yellow = Soon to wake up or soon to go to bed, Green = Awake. So at any time they can quickly glance to know if it is bedtime or not, and can see the exact time/date if they want.
- The hour ranges below set the RGB backlight color:

0-6: Red
7-8: Yellow
9-21: Green
22: Yellow
23: Red

Showing it off
For my project, I decided to just mount everything into a cardboard box. It allows me to easily show off the insides if I want, and since it is powered by micro-USB I can use a standard adapter or battery pack. Using a cardboard box allows you (or your kid) to easily decorate the box however you want.”

Link to article