Retro 7 Segment Clock - the Final One(s)
by parallyze in Circuits > Clocks
42038 Views, 200 Favorites, 0 Comments
Retro 7 Segment Clock - the Final One(s)
2021/10/20 - Update
Added the XL version (4 LEDs / segment). Parts/Info can be found at the bottom of this Instructable. So there's now 4 options available (3/4 LEDs, 4/6 digits).
--
Here's another set of 7 segment modules including a clock example. There's nothing really new on this one, it is meant as a replacement for my most popular (according to the broken stats on another site) clock so far, the "Retro 7 Segment Clock - Regular Edition".
While working on ClockSketch v7 and adding support for older designs I noticed I absolutely don't like many, many things about the current design and this somehow forced me to do an update.
As before the whole design consists of the digits module and a center/dots module. Some of my designs (like Lazy 7 / One or S7ripClock) required different modules depending on their positions (often an additional 3rd module for 6 digit versions). This is not the case here, the modules can be daisy chained to as many as you'd like to.
Since it's an update I tried to keep the requirements for printing the parts the same as before. The biggest footprint is to be found on the digits cover at 176.25mm x 146.95mm. So this design should still be printable on many printers (default 20x20, prusa mini, makerbot clones).
The clock is running ClockSketch v7, so you will have to get the sketch from that Instructable (Step 3). I highly recommend reading that Instructable if you're going to build any of my designs.
Most comments are about the sketch anyways, so I'll keep "Hardware" like this seperated from the "Software" in this case.
The finished clock is 392mm (6 digits: 608mm) x 147mm x 30mm in size, not including the optional feet. Wall mount is included right in the back mount, hole spacing is exactly 100mm. Oh, of course... there's 3 LEDs inside each segment, just as before. The dots module will use 2 LEDs per dot. Total LED count is 103 (6 digits: 157).
For a list of features have a look at the ClockSketch v7-Instructable, there's a lot of combinations possible (Arduino, ESP8266, various RTCs, settings, ldr support, 12/24h format and so on). This Instructable is only about the clock example for this module and as shown in the pictures - using a Arduino Nano and a DS3231 RTC (ZS-042).
Supplies
The clock example (4 digits version) requires the following 3d printed parts:
- 1x 7SCv3_Backplate.STL
- 1x 7SCv3_Backplate_Cover.STL
- 1x 7SCv3_Cable_Covers.STL
- 2x 7SCv3_Digits_Cover.STL
- 2x 7SCv3_Digits_Diffusers.STL
- 2x 7SCv3_Digits_Frame.STL
- 1x 7SCv3_Dots_Cover.STL
- 1x 7SCv3_Dots_Diffusers.STL
- 1x 7SCv3_Dots_Frame.STL
- 1x 7SCv3_Elec_Case.STL
- 1x 7SCv3_Feet.STL (optional)
I recommend printing everything except the diffusers from black material. I've been using transparent/natural PLA for the diffusers. If you'd like to get a different colored front I recommend swapping filament after 2-3 layers when printing the front covers. Printing them completely in white will result in light leaking into other segments.
Material usage heavily depends on print settings, but using PLA it's about ~390g/~140g (black/transparent).
Non-printed parts required:
- 103x WS2812B LEDs, 5V, 60 LEDs/m, individually addressable, IP30 (IP65/67 will NOT fit)
- 1x Arduino Nano (ATmega328, 5V)
- 1x RTC module, DS3231 / ZS-042 modules recommended
- 2x push buttons, 6mm x 6mm (button length ~1.5mm-3.0mm recommended)
- 1x USB cable (used for powering the device, so micro/mini usb doesn't matter, only interested in the usb a-side - or whatever plug the available power supply might have)
- power supply, 5V/1A USB
- Some wires to connect all the components
- 10x M3 screw, length 7-16mm, 8-10mm recommended
Other requirements:
- A properly set up Arduino IDE including all the required libraries for ClockSketch v7
- Basic knowledge of what you're doing there
- If you're skipping both of the above... well, you're on your own
Notes about wiring:
As written in the ClockSketch v7-Instructable the sketch is limited to 500mA by default. On this clock using 4 digits I recommend setting this to around ~900mA when finished, otherwise you'll notice the limitation on higher brightness settings (digits will dim down whenever the dots are on, all dependent on what time it is / how many segments are lit).
One thing I've seen very often is people using very thick wiring inside my designs. When running them at limits around 800-1500mA there's not really the need for using something like AWG18/20. The holes inside the modules will fit quite thick wire gauges but this is also dependent on the thickness of the insulation (3x ~1.7mm diameter max). The short wires attached to many LED strips are such an example. The wires I'm using in this Instructable are 0.25mm², that's somewhere in between AWG22/24. And even if you're going to raise the power limit further you'll only need the appropiate wiring on the LED strip - there's not really a benefit in using AWG22/20 for the connections to the microcontroller, RTC and buttons, it will just make things a bit harder. Something like AWG26 (~0.13mm²) is perfectly fine for those components and will make it easier to do things like fitting 2 wires to a single GND point on the microcontroller.
The power limit will only be active for the LEDs. So if you're going to use another microcontroller, like one from the ESP8266 range, make sure your power supply is providing sufficient current. ESP8266s can peak up to ~400mA when powering up and will peak at around ~200mA all the time if WiFi is enabled.
Also I'd recommend lowering the power limit from 500mA to 300-400mA on ESP8266s when running the sketch for LED tests to avoid problems when using the USB port only.
Comparison Old / New / Others
Major changes to the previous design:
Way less screws. Used to be > 20 for the 4 digits version, that's now down to 10. Hole diameter is a tiny bit smaller than before (like on my recent designs, 2.90mm vs 2.85mm).
Much better diffusion. I spent surprisingly much time on the diffusers. But I do think the result is clearly better than the old design.
Wiring is much easier on the new one. No need to add data/power to different spots on the strips. Also it's a bit more straight forward (as in S7ripClock, L7/O and others - one side of the led strip is powered, rest attached to the other side).
The big holes between the segments are now closed. I didn't want to thicken up the old design even more so this time the electronics are inside the digits module. This allowed me to shave of ~9mm on the parts on the back and keep a total depth of 30mm, while increasing the modules/diffusers depth for better diffusion.
One sacrifice had to be made: There's more unused LEDs than before. While the old design did require 99 LEDs, it's 103 on this one. To make the segments noticeably wider I just had to do this, otherwise the way the strip is routed would still limit to a maximum width of 8-9mm for the segments. Right now they're ~12mm, which is a 50% increase compared to the old one.
Of course you can always remove the unused LEDs and save them for other projects, but you will have to adjust the array definitions inside the sketch to make it work properly. If you don't know how to do this, have a look at the ClockSketch Instructable or stick to this Instructable and waste some LEDs.
The distance between the digits was slightly increased. That's a mistake I repeated on S7ripClock if you look closely. It does work well in small/medium rooms but depending on the distance and time displayed it's sometimes quite hard to tell some digits apart. That's actually the reason why I've never published the larger S7ripClock after building the prototype... :D
Distance between dots/digits is identical to the distance digits/digits now. I think the pictures comparing the old and new designs clearly show the improvments in readability.
Sadly many people don't really check out the printing instructions/infos. The old one was designed using wall widths of 1.2mm/2.4mm, so I always recommended printing the parts at 0.6mm extrusion width/line width. Printing at 0.4mm would immensely increase print times and produce weaker parts - still people did so quite often.
On this design all walls are multiples of 0.5mm. This fits many slicers standard settings (or is close enough, for example Simplify3D is using a default width of 0.48mm on 0.4mm nozzles). This should make the print even easier than before.
As always there's no supports needed or any tricky parts in the files. No steep overhangs, no big bridging areas or whatsoever.
I've added some pictures comparing this one to various of my other designs. This might be helpful when choosing between different designs, sometimes it's hard to tell from the pictures how big/small a clock will turn out.
(1. Grid Clock v2, Small Printers Edition, this one)
(2. Lazy 7 / Quick Build Edition, this one)
(3. Old one, new one, SPE, S7ripClock, Lazy 7 / One)
In a Nutshell
Here's what's going on inside the clock. 2x digit modules with 49 LEDs inside each, 1 center module with 5 LEDs inside and some parts to hold everything together. The pictures should give you an idea of what to expect when building this.
Note: All the pictures are available in higher resolution, you just need to click the "download" button appearing in the lower left corner when viewing the pictures.
Inserting the LED Strips
Make sure the modules are pointing into the right direction when putting in the LED strips. Not paying attention here will require disassembly later on, the parts on the back won't fit if the modules are not pointing upwards as shown here!
(Actually they will fit if all modules are the wrong way. But the wall mounts will be on the bottom and you will have to adjust the sketch to fix the top/down display by yourself!)
Watch out for the solder blobs every 50cm on the LED strip. You'll not be able to bend the strip at those joints, so carefully pre-bend the LED strips and make sure the solder joints won't end up on a corner before cutting them off.
Start inside the center segment on a digits module as shown. Watch the direction markings here.
There's 2 LEDs between the left upper/lower segments. Always be careful when bending the strip to avoid knocking off some of the tiny resistors.
After finishing the left digit there's 3 LEDs in the center before starting the right digit from the lower left segment.
The strip routing is like it is in the left digit, just mirrored. So there's another 2 LEDs between the right upper/lower segments.
When you're done simply repeat this for the second digits module.
The center module is fairly straight forward, just a piece of strip with 5 LEDs, starting from the top.
Make sure the strip is going down into the "guides", there should be 2-3mm clearance above the LED strips before putting in the diffusers later on.
Wiring the LED Strips
Let's connect the 3 pieces of LED strip together. Start with the one inside the left digits module at the end of the strip.
Carefully bend the solder pads at the end of the strip so they will be inside the cavity behind the LED strip in the center segment. Route the wires through the hole in the side to reach the next module.
Connect the end of the LED strip inside the left digits module to the start of the LED strip inside the dots module.
Now connect the end of the LED strip inside the dots module to the start of the LED strip inside the right digits module.
Note: If you don't like the idea of routing the wires through the little holes on the sides of the modules, you don't have to. You can simply connect wires to the LED strips, route them through the rectangular holes and connect them together after putting the backplate on. But this will make things a bit harder as the backplate can only be fixed using the screws when the covers are in place. The red toned pictures show this alternative.
Connecting the Arduino / Testing the LEDs
Let's connect the Arduino. Add some wires to the start of the LED strip inside the left digits module and connect them according to the pictures. Make sure you route the wires through the rectangular hole as can be seen in the pictures. Keep the area around the circular holes clear, this is where the screws will end up!
5V -> 5V, GND -> GND, Data In -> Arduino D6
Now it's time to see if the LED strip is working as intended. Open up the sketch inside the Arduino IDE and have a look at this part on top of the sketch:
// RTC selection - uncomment the one you're using, comment all others and make sure pin assignemts for // DS1302 are correct in the parameters section further down! // #define RTC_DS1302 // #define RTC_DS1307 #define RTC_DS3231
For testing the LED strip without an RTC connected you need to disable it temporarily by commenting out "#define RTC_DS3231":
// RTC selection - uncomment the one you're using, comment all others and make sure pin assignemts for // DS1302 are correct in the parameters section further down! // #define RTC_DS1302 // #define RTC_DS1307 //#define RTC_DS3231
(If you don't do this you can still test the LED strip - but you'll only be able to see anything displayed while in setup and/or the animations on color switches are running)
Note: The only reason I recommend powering this using USB only at this point is because I know the sketch is limited to 500mA by default. You should never power a large amount of WS2812B LEDs this way without a power limit!
I've put a piece of paper on top of everything while testing, looking right into the LEDs isn't really a nice experience.
Compile and upload the sketch.
The clock should start up displaying 0:00. You can use the serial monitor inside the Arduino IDE to check if everything is working, like setting time, switching color palettes by sending the corresponding buttons (7/8/9, check the ClockSketch v7-Instructable for usage instructions).
Check the serial monitor for output/status messages.
Adding RTC, Power and Button Connections
Prepare 5 wires as shown. 4 of them will be connecting the RTC to the Arduino, the 5th one is added to the same GND pin on the Arduino and used for the two push buttons.
Connections (RTC->Arduino): VCC -> 3.3V, GND -> GND, SDA -> A4, SCL -> A5
Note: ZS-042/DS3231 can be used from 3-5V, the reason why I'm connecting it to 3.3V here is explained in the ClockSketch v7-Instructable.
Add the USB cable, connecting +5V and GND at the end of the strip. I recommend using a cable tie and/or knot to make sure accidentally pulling on the cable won't rip off the solder pads. Make sure to keep the area around all circular holes clear!
Add the buttons as shown, one to D3/GND on the Arduino, the other one to D4. GND for the second push button will be connected to the first buttons GND connection.
Diffusers and Front Covers
Put in the diffusers as shown, the round indentations are meant to face the LEDs.
The center segments are different from the outer ones, watch out for this when trying to push them in.
There's 3 different types: The ones for the dots (much smaller than the other ones, only for 2 LEDs), the center ones inside the digits and the outer ones from all digits.
Now put on the front covers (watch the direction!) and make sure everything fits nicely without any squeezed/trapped wires.
Note: I was taking the pictures on different days and while testing different parts. So don't be too confused by the fact the buttons aren't connected in some pictures, I just forgot to take new pictures after connecting the buttons.
Test Again
At this point I recommend setting the sketch to your desired settings (enabling/disabling options, setting the power limit, enabling the RTC again if disabled in the previous test) and flashing it to the Arduino. Test everything does work as expected before continuing. Once the Arduino is mounted inside the digits module you won't have access to the USB port any longer!
If you're raising the power limit I recommend to avoid powering everything by the USB port only - use the USB/power cable added in step 6.
You can always access the Arduino by removing 2 screws later on if you should need to, but for now I recommend to stick to the instructions.
Final Assembly
Flip over all the modules carefully and rotate them by 180° so you end up looking at them like in the first picture.
Add the backplate as shown and fix it using 6 screws.
Hold the buttons in place and fix them by sliding in the c-shaped blocks.
Note: One button is "button A" (yellow, D3), the other one is "button B" (orange, D4). It's up to you which one you put on what side, I put them in so "button A" will be the left one when looking at the finished clock from the front.
Note: I was taking the pictures on different days and while testing different parts. So don't be too confused by the fact the buttons aren't connected yet in some pictures, I just forgot to take fresh pictures showing all this after connecting the buttons.
Place the Arduino and RTC inside the electronics case.
Route the wires as shown, flip it all over and insert everything into the digits module as shown.
Add the cable cover parts and route the wires as shown. The final covers should clip/snap fit into place - if this doesn't work as expected you can use additional 3 screws (M3, min. 5mm - max. 7mm) to hold them in place.
When putting on the big cover on the backplate make sure to watch the indents on the lower side, you'll need to put it on there first.
Optional: 6 Digits
The idea is the same as in my other designs/the old one:
Printer another digits + dots module, add them to the clock using a 2nd backplate, set the sketch to 6 digits, done.
You'll need 1 digits module, 1 dots module, 1 backplate + cover and 6 screws for this.
We want to add another dots + digits module to the right side of the clock, displaying seconds. Prepare the modules as before.
Flip everything and rotate it by 180° so you're looking at the clock from the back like in the 3rd picture.
Remove the 4 screws holding the left cable cover (USB power cable) and the left digits module in place.
Flip/Rotate everything again and remove some diffusers so you get access to the end of the strip, just where the USB cable is connected.
Remove the USB cable and connect it to the end of the new digits module.
Connect the end of the old digits module to the strip inside the new dots module.
Put the diffusers and covers back in place, flip/rotate everything again.
Put in all the screws (6 + 4) to mount the 2nd backplate and hold everything together.
Remove the 2 screws on the right cable cover (Arduino + RTC)
Look for this part inside the sketch (line ~#250):
#define LED_DIGITS 4 // 4 or 6 digits, HH:MM or HH:MM:SS #define LED_COUNT 103 // Total number of leds, 103 on Retro 7 Segment Clock v3 - TFO #if ( LED_DIGITS == 6 ) #define LED_COUNT 157 // leds on the 6 digit version #endif
Set "#define LED_DIGITS" to 6, compile and upload the sketch.
Put the Arduino/RTC back in place, put in the two screws.
Done.
Note: You might want to raise the power limit a bit further when adding a module, somewhere in the range ~1200mA-1300mA should work alright.
XL Version
This is a replacement for the former XL-Remix of my old Retro 7 Segment Clock, which can be found here.
This one is using 4 LEDs in each segment (3 for the dots), otherwise it is exactly like the one above.
Required LEDs: 133 (4 digits) / 203 LEDs (6 digits) - 63 per digits module, 7 per dots module
Size of the finished clock: 474mm (6 digits: 731mm) x 186mm x 30mm (not including optional feet).
The biggest part as before is the digits cover, requiring 217mm x 186mm on the build plate. If your printer can't handle this, there's a split version of the digits frame and cover available. The biggest part will then be the backplate, requiring 185mm x 145mm, depending on rotation (214mm x 157mm @ 0°). So while this will still work on replicator style printers (220mm x 147mm) it will not work on printers like the Prusa Mini (180mm x 180mm).
Simply print the left/right parts of the digits frame and put them together using 2 screws (M3 x 10). Be cautious when handling/rotating the clock while building it, splitting the frame does affect stability quite a lot... (not really a problem when it's done and put on it's feet or on the wall, that's fine).
Here's the STL files. The splitted digits frame/cover and matching feet are all included in "XL_Split_Parts.STL", seperate and arrange them as needed. If you need help on this, please have a look at this thing.
The sketch (4 and 6 digits pre-configured) can be found in the ClockSketch v7-Instructable, like the other one.
Note: It's the "7SCv3-TFO-4"-sketch, "7SCv2-XL" is the old one!