Object – Final Project Documentation

Description

For this project, had just planned to make a simple world clock. After some feedback on the design, I wanted to take it a little further from a standard clock’s layout. I was inspired by another project by Mike Mak (they unfortunately removed it from their website, but you can find a photo of it here). I really liked the idea of using separate eyes as the two separate hands on a clock, so I decided to take that design slightly further by giving it the ability to automatically pull the local time from GPS, as well as update the timezone, taking this from a small manual clock to a more robust world-clock, while maintaining the whimsicalness the original displays. 

Moving through the order of operations, the first main action of this clock is to use the embedded GPS receiver to get a satellite lock and find the UTC time that all GPS satellites send as part of their default datapack. This means that we can get both our location and the UTC time anywhere we can almost see the sky; I had anticipated it to need an unobstructed view, but was actually surprised how well it works indoors.  While I’m fairly certain it wouldn’t work in 1B31, I don’t think it would have any problem getting a solid signal in the BTU.

At our latitude, the sizes of time zones are fairly consistent; with a few exceptions caused by not perfectly straight lines (a pet peeve of mine), each time zone is about 15° wide. This means that we can roughly estimate our UTC offset by simply dividing the current longitude by 15, keeping signs consistent. With our UTC offset and UTC time, it’s as easy as just adding the two numbers together to get our local time (some exceptions apply). 

Once we have the time, it’s fairly simple to set the rest of the system. The clock assumes it will start at 12 midnight, then sets itself for the first time. After that, the clock stays running and keeps an internal record of the current time. To display it, the dials increment by 1/60th of a revolution for the minute hand, and 1/12 a revolution on the hour hand when the minute has completed. I had started to make the eyes work simultaneously, but the stepped motion kind of grew on me, and I decided to leave it as-is.

I didn’t implement it into the final design, but I had plans to include a zeroing button in order to reset the clock when need be, but left this out in the final design in the interest of simplicity, and also partly because I was running out of pins and power that can be supplied by a Redboard. Instead, those buttons went towards the time zone selection, which is displayed on the LCD “teeth” screen. The buttons are located inside the housing, behind the “nostrils”. To press each button, you insert a pencil, chopstick, or similar object. Yeah, it’s kinda mean, but you get over it. Pressing one of the buttons individually moves the time zone in that direction, and pressing both of them submits the new time zone. When this happens, the clock takes the old and previous locations, finds the difference between them, then adjusts the hour eye appropriately.

The housing itself was a simple 3D print.  It should have been a bit deeper in order to fit all the components comfortably, but overall I was pleased with how it came out. I was pushing the limits of what my little desk printer could do, but on just about any mid-sized printer there wouldn’t be any issue printing a more suitable housing. I used PLA for cost and ease of printing, with the added bonus that it lets me draw directly on the body.

Schematic

Original Design


Revised Design

Photos


Code