My son's swim team needed a new pace clock for the pool, so I decided it would be a good project for us to do together. We wanted something cheap, bright and large, and I think we did a great job on all those requirements.
If you enjoy this instructable, pleasevote for it in the lights and micro controller contests! It's easy, just click the "Vote!" banner button to the right of the title on this page, and select the vote button next to the category.
This project was inspired by the $100 dollar pace clock instructable by mjacobson1 here: https://www.instructables.com/id/100-Pace-Clock-or..., but we wanted something a little cheaper and with larger numbers. In all, the project cost about $175, which is cheaper than the $100 dollar clock because that one had no case. Our electronics cost about $80. Comparable pace clocks cost $800 dollars and up online.
This was my first project of this kind, and in all it took about 40 hours in total (including research, programming, shopping, building, painting, etc.). Someone who knows what they are doing could probably build one in about 1/2 - 2/3 of the time. This would also make a good countdown timer, or larger clock with minor changes to programming and/or more LED drivers.
The numbers are over a foot tall and 6" wide. We used red 2835 SMD 600 LED strips which have 3 LED's per inch, and the clock (which only displays minutes and seconds) used 510 LED's in total. They are pretty bright and are visible even in direct sunlight.
It uses an Arduino Mega 2560 but could use an Uno. A DS3231 Real Time Clock (RTC) to keep the time, and 4 Sparkfun Large LED Drivers which worked great.
I worked on the project with my 14 year old son, so we used the CNC machine we got him for Christmas to route out the groves for the 7 segment displays, and it was a great learning experience for both of us because the machine is only big enough for 2 digits at a time and we needed to line everything up perfectly!
Full parts list:
- CNC Router (you could do this by hand with a router, or mount LED strips directly on the MDF Board)
- Philips Head Screw Driver
- Circular Saw
- Soldering Iron
- Box Cutter
- Wire Stripper
- Arduino Mega 2560 - https://www.amazon.com/gp/product/B00OH21CRM/ref=o...
- 2835 SMD 600 LED Strip - https://www.amazon.com/gp/product/B01ELDOWJG/ref=o...
- DS3231 RTC (optional) - https://www.amazon.com/dp/B00QSIDZCI/ref=wl_it_dp_...
- 4 x Large 7 Segment digit drivers - https://www.sparkfun.com/products/13279
- 12 volt power supply - https://www.amazon.com/dp/B00BPCL0MY/ref=wl_it_dp_...
- Jumper wires - https://www.amazon.com/dp/B00JUKL4XI/ref=wl_it_dp_...
- Double stick tape - https://www.amazon.com/gp/product/B01LT9K06Y/ref=o...
- Electrical tape
Case (materials purchased at Home Depot):
- 2 x 2 by 4
- Coroplast semi transparent sheet
- 2 cans enamel black satin spraypaint
- 1 can enamel black matte spraypaint
- Clear Silicon sealer
- 2 x #4 1/2" screws to mount the RTC
- 38 x #6 1/2" screws
- 3 x 4 x 2" wood screws (for holding down power supply)
- 8 x 2 1/2" wood screws
- 14 x L brackets
- 2 eye bolts to hang it from
Step 1: The 7 Segment Mounting Board
After cutting the 1/2" MDF mounting board to size, we routed groves using our CNC to help focus the light. We went all the way through with a hole in each grove so the wires would go through to be soldered to the drives mounted on the back. The holes were strategically placed so they were as near the center as possible to reduce the length of wire needed for most of the segments. the top and bottom segments were the longest.
Once the groves were routed, we used black matte spraypaint over the whole face, and polyurethane over the back to seal the MDF. On the back side of the board we used a pencil and marked the letter of each segment's position from the front to make it easier to wire.
Prime and paint the board before putting the LED segments in.
If we were to do it again, we would have put a bit more space in the center for the colon's. We also would have made the numbers 1 inch smaller in height to allow us to buy smaller materials for the case which would be more cost effective.
Step 2: The Electronics and Code
The electronics were surprisingly easy to setup with the jumper ribbon cables. We just hooked up the RTC to the Arduino Mega 2560 with SDA on pin 20; and SCL on pin 21. For an Uno R3 they are A4 and A5. You also need to plug in a ground and 5V.
The RTC is optional. We decided to use it to make the coaches life easier because he has one clock at each end of the pool, and the one we didn't make does not have a clock and needs to be reset manually. He just turns ours on and syncs the other one to match it. I have also included a version of the code I did before we decided to use the RTC which uses a millisecond timer (Clock-millis.ino). Not having an RTC will save you about 5 dollars, but the code has not been fully tested.
For the segments, I attached 5v, VIN (12v), and ground and (clock) 12, (latch) 11 and (data) 38 to Large Segment Display driver. If you use an Uno you would attach them to pins (clock) 6, (latch) 5 and (data) 7. After running the clock, the VIN and Ground were not enough to power all of the digits so we took 12v and ground directly from the power supply to the first driver which worked great.
More info on wiring the driver can be found here: https://learn.sparkfun.com/tutorials/large-digit-d...
Once that is wired up, use the attached program (NOTE: you need to set the time by uncommenting out the line in the setup function, run it and then comment it out and upload/run the program again so that the RTC doesn't get set every time you run it).
Step 3: Mounting and Soldering the 7 Segment Display
We cut the LED strips into 6 inch segments with 18 LED's on each, and soldered wires to the 12v and ground tabs. When cutting the LED strips, make sure the leave as much tab as possible to solder the wires to. Once the wires were soldered, we took a needle nose pliers and bent the wires at a 90 degree angle and then fed them through the holes in the board. We took the tape backing off and used an eraser to push them firmly in place, then used a glue gun to put a few dabs of glue on each end and the center to hold them firmly in place as the tape didn't do the job. If you mount directly to the MDF, you will probably need something better than the double sided tape it comes with.
For the colons, we used one inch strips from the leftover LED strips, each with 3 LED's. We wired them up to the DP (Decimal Point) wire from one of the drivers. In the sample code, they are always on so it didn't matter which one we wired it to. You could also easily turn them on and off in code every second if you wanted them to blink.
Once each of the strips were in place, we soldered the wires to their corresponding spot on the LED driver, we used a thicker wire for the 12v to make things easier, and twisted all of the 12v wires together and soldered them to the thicker jumper wire (you can see them in the center of the driver), then put a small piece of electrical tape over them to prevent shorts.
We wired the leads from the power supply directly to the 12v and ground of the LED drivers to ensure enough power to the LED's, rather than having it go through the Arduino. This change was made however after the clock was completed and the above pictures were taken.
We also used electrical tape to keep the wires held down by their holes. We mounted the Arduino and RTC to the back using screws. The RTC required a small piece of plywood screwed to the board first, so it would lie flat. This picture has them flopping around loose but I didn't take picture of the final mounting before we closed it up.
Step 4: First Light
Here is the picture of it working and before we made and mounted it in the case. We used a towel to lay it down on when we were working on it so it would not scratch the paint. It has been working for the team for about a month now with no issues.
The case was much easier to build than we thought and it fits pretty tightly. Make sure to measure twice and cut once. We made the outside of the case a bit tight on purpose and then trimmed down the MDF with a jigsaw in the places it was to big to fit, that way we didn't have any large gaps.
Step 5: Finishing Touches
Here is the final product. The case was 2 2 x 4's cut to size, and put together with long boards on the top, and screwed down into the side boards using 2 2.5" screws in each corner. This was so if there is any rain the seam will be less likely leak.
The backing board was the same size as the display board. Everything got a coat of polyurethane, primer, and then 2 coats of black enamel satin spraypaint. We mounted the back of the display first so it is tight and flush with the back. We took 4 L brackets and pounded them flat with a hammer then attached them and screwed them down. Then we flipped it over, and mounted 4 L brackets on the inside so that the back couldn't be pressed in too far once everything is together. The backing board can be taken off to give access to the inside should something need to be repaired or if the RTC battery needs changing.
We then removed the back and set the front in place with 3/4 inch of space between the board and the front of the case. It will help shield the numbers from sunlight and weather. We used 6 L brackets from the back to hold it in place using 1/2 inch screws.
We drilled holes in the side for the cable to the 12v power supply, and I drilled 1/2 inch holes from the inside to insert the power supply into and make it more stable, then I took 3 screws and put 2 behind the brick and one on top to hold it securely in place (on the outside of the brick, not through it).
The next step was to use clear silicon calking to seal up any gaps. The last thing was to take the coroplast and cut it to fit using a utility knife, and screw it down gently using 8 1/2" screws. Make sure to go slowly when tightening the screws so they don't damage the plastic.
As you can see, it works great, even in direct sunlight it is clearly visible.