Open Clock Project

Design and build a delightful alarm clock | Open Source Design | Open Source Hardware

github.com/cbonsig/openclock

See Me at Maker Faire!

The Open Clock Project

  • Is a touchscreen controlled, large display, multicolor LED matrix alarm clock, that is easy to see and use with uncorrected vision.
  • It was designed and built to fix everything that I don’t like about alarm clocks!
  • Color and brightness adapt to the time of day, and…
  • it plays a melodious recording instead of a shrill buzz when the alarm activates.
  • It’s open source and built on Arduino, so it’s completely hackable!
  • Was an invited project at the 2013 Make: Hardware Innovation Workshop
  • Won an Editor’s Choice award at Maker Faire 2013!
  • Was featured on Tested.com!

This website is a project journal, where I’ve written about everything I’ve learned along the way. The current code and design files are shared on GitHub and the Bill of Materials is shared on Google Docs. Everything is open source, so you can check it out, and build one of your own!

Do you want to build an Open Clock, buy a kit, buy a finished clock? I would love to hear from you! Just click on this link:

I’m interested - keep me posted on Open Clock!

Proto Shield Wiring

My first prototype was a tangled next of jumper wires, as first prototypes are meant to be. I wanted to clean things up, and use proper connectors to keep things neat and organized. In this design, I used an Adafruit Proto Shield PCB to connect the Chronodot RTC board, a socket connector for the 2x8 ribbon wire to the LED display, and a 4-pin connector for the touchscreen ribbon wire. The part numbers for the connectors are on the bill of materials.

Each component has a number of pins that need to be connected to their designated Arduino pins. The Proto Shield has some internal routings that are handy for some projects, but for these components, I needed to use a different approach. Normal jumper wires are too big to fit alongside the component leads on the PCB, so I need to use tiny “wire wrap” wires (available from any electronics supply source - I had some pre-cut wires from Fry’s).

Before starting to solder anything in place, I needed to hack the Proto Shield a little bit. It has rails in the middle for 5V and Ground, right in the same place where I had to position the socket for my display. Checking the pin assignments, the ground rail happens to line up with a ground pin… but the 5V rail lines up with a data pin. So I severed the rail connections in the places indicated by two blue lines — the rail is present on the front and back, so I broke the connection on both sides. I used a dremel cutoff wheel to break the connections.

The photo above shows routings for all of the components. The wires need to be soldered together with the component leads, which can be a bit tricky. I typically soldered the wires on the component end first, and then when I finished the component, I followed up soldering the Arduino pin end. I used 30AWG wire wrap wire for everything except the 5V and Ground connections for the display, where I used some heavier wire.

2D Design with Solidworks and Inkscape

MIT Technology Review recently published an article that argued “a lack of accessible design tools is holding back 3-D printing”. I have to agree, and the same applies to 2D laser cut design. I have access to Solidworks at work, and I wish that I could avoid using it for open hardware projects like this. While it’s expensive and bloated, it is an excellent tool for designing and developing engineered structures. So I’ve downloaded or created Solidworks versions of the clock’s innards, used it to design the pieces of the enclosures, and put everything together in an assembly to check the fit and tweak dimensions and features before laser cutting anything.

Ponoko requires an .SVG file for laser cutting, and they recommend using Adobe Illustrator, CorelDRAW, or Inkscape to create the file. Inkscape is open-source, but there isn’t a Mac native version readily available. I found a suspicious looking link to http://rapidshare.com/files/2591591009/Inkscape-r-10.7%2B-x86_64_RC5.dmg on an Inkscape forum. I was surprised to find that it works fine. Here’s are some notes on my workflow:

  • I created some basic T-slot box templates in Inkscape using Justin Shaw’s http://wyolum.com/t-slot-boxmaker/
  • From Inkscape, “Save as…” a DXF file, and select “mm” as the base unit, with “LWPOLYLINE type of line output” checked.
  • Opened the DXF file in Solidworks as a 2D sketch. I used the template as a reference for slot and tab sizes, hole placements, etc, and created my new geometry using dimensions, constraints, and all the other usual Solidworks methods.
  • I created all of the components as separate bodies in a single “parent” .SLDPRT file. This makes it easier to line up mating components, and reference feature dimensions between components. After everything was complete, I used “Insert > Feature > Save Bodies” to create separate new part files for each component. Then I created an assembly with each of the children, plus additional .SLDPRT’s for the electronics and other components. From here, I checked the fit and alignment of everything, and made changes in the original parent .SLDPRT file. The children and assembly update automatically when they are regenerated.
  • Once everything checked out OK, I created a Solidworks drawing (.SLDDRW) from the parent .SLDPRT with all the enclosure components (File > Make drawing from part). When prompted to select a sheet format, choose “cancel” because we don’t want any decorations — only geometry. Make sure the scale for the view is 1:1 (I also set the sheet scale to 1:1). Then save as a .DXF, an in the “options” dialog, choose version R13 and select the checkbox for “scale output 1:1 - enable”
  • Back in Inkscape, open the .DXF file. When prompted, make sure that the check box for “automatic scaling” is not checked, and that a manual scale factor of 1.0 is selected.
  • Now, make sure Inkscape is using “mm” units on its grid. Preferences > Grid > Rectangular grid > Grid units > “mm”. Select a feature and check the height and width dimensions displayed near the grid at the top of the window, and confirm that the scale is correct!
  • Select everything, and change the object properties for the line stroke to “0.010 mm” and color to 0/0/255 per Ponoko’s instructions.
  • Copy everything, and paste into a Ponoko template. I like to create groups for each part (box-select the features, then command-G) before moving them around to arrange them on the sheet.

This work was done using Solidworks 2012 and Inkscape 0.48, and all of the files are posted on GitHub: https://github.com/cbonsig/openclock/tree/master/enclosure_design/2D_rev2

Next week - One night only - Open Clock at the MAKE Hardware Innovation Workshop!

Before I started designing a clock of my own, I scoured the Internets for something that met all of my peculiar criteria. Most notably: crazy large, crazy simple to use, and pleasing to the eye and ear. Because I don’t wear my glasses to bed, I don’t think very clearly when I’m tired, and I have high standards for sleeping companions. I didn’t find any products or kits that had everything I wanted, but I did draw some inspiration for many of these:

Enclosure Upgrade

The first revision laser cut acrylic enclosure is neat, functional, and reasonably economical (about $40 from Ponoko). But the boxy aesthetic is a bit of a downer, for my taste. I really like the shape of the 3D-printed pyramid shaped enclosure that I used for the first prototype that has been sitting on my nightstand for almost a year. The elevation and angle of the display is perfect for viewing and tapping, and it looks great. Unfortunately, though, unless you have a 3D printer, the cost is prohibitive: it was quoted at over $500!

This new design combines the aesthetics of the pyramid with the affordability of 2D laser cutting (about $50 from Ponoko). And it borrows a page from my day job… Cardiovascular stents are expandable metal scaffolds that fit into tiny catheters, and expand into mesh-like cylinders to support diseased vessels. I’ve designed these little things for years, and I’ve also open-sourced resources related to stent design at nitinol.com and on GitHub. The curved edges of this enclosure use a classic stent pattern, allowing a flat 2D pattern to easily bend into the 120 degree, 60 degree, and 90 degree edges of the enclosure (I hope!). The curved design of the Ultimaker Ulticontroller by Bernhard Kubicek and Martijn Elserman was an inspiration (check out their story). Patrick Fenner has studied the properties of acrylic “lattice hinges” extensively at Deferred Procrastination. I shall report upon my findings here, as soon as I receive the first laser cut sheet!

Clear acrylic version of the box enclosure! I made a few edits based on what I learned from the first one. This one assembled almost perfectly… But the 3.0mm wide slots on the sides were just a bit too thin to accept the tabs of the interior pieces. This sheet of clear acrylic was on the high side of tolerance - about 3.1mm. I used some fine grit emery cloth to open up the width of the slots, and managed to get the pieces together.

The design files are on GitHub and the laser cutting pattern is shared on Ponoko.

Touchscreen + Paper + Tint.

When I built the first clock, I found that even at the dimmest setting, the LED’s were a little too bright for me. Sliding a sheet of paper between the LED and touchscreen glass created a subtle diffusion effect, and also toned down the brightness a bit. It also made the LED matrix frame invisible, with the LED dots shining through like magic. The white paper creates a white face for the clock — with a black enclosure, I wanted something closer to black. So I bought some window tinting film from TAP Plastics, and slid it between the paper and touchscreen. The photo here shows the appearance of the bare touchscreen glass, glass + paper, and glass + paper + tint. The appearance can be fine tuned by trying various paper weights and tint styles.

2D enclosure complete!

The first hack 2D box wasn’t perfect, but it wasn’t far off. The tabs and t-slots worked perfectly. The holes in the back didn’t line up perfectly with the waveshield, though, so I had to make some dremel modifications. The Inkscape and SolidWorks files for this version are on GitHub, and also available from Ponoko.

2D Enclosure enclosure parts from Ponoko!

Next goal: design an affordable enclosure that doesn’t require a 3D printer. I’ve been looking for a good excuse to give Ponoko a try, and here it is! This seemed like a good chance to try out a tabbed box “t-slot” design, and I found a very handy plugin for Inkscape here: http://wyolum.com/t-slot-boxmaker/. I managed to learn enough about Inkscape to design the enclosure, then imported it into SolidWorks to create a 3D rendering. I also found some interference problems that I’ll need to fix with a dremel, since I already ordered the first set of laser cut components!

Clock #1 + Clock #2.

Clock #2 lives! I uploaded the firmware, plugged everything in, and…. it worked!

Amusing discovery: The brand new RTC chip thinks it midnight on Jan 1, 2000 when its battery is first installed. When I tried to set the date, the year display was corrupted. When I checked the code, I found my very own Y2K bug! It was a simple fix.

Clock #2: Three Layers

Arduino + Proto Shield + Wave Shield.

Clock #2: Waveshield + Display

The Adaftuit Wave Shield is the top layer, and for this build, its also the layer where I’ve connected the Sure Electronics DE-DP14112 32x16 Bicolor LED. The red and black pair at the top provide +5V and ground, and the wires soldered to digital pins 0, 1, 6, and 7 connect with CLK, CS, WR, and DATA.

The DE-DP14112 comes with a 16-pin ribbon wire and 8x2 connector, but I didn’t use it. Instead, I connect the female end of jumper wires directly to the male pins on the back of the LED.