Budget Arduino RGB Word Clock!
By Jack Soldano
Introduction
Hello everyone, here is my guide on how to make your own simple & cheap word clock!
For a long time, I've wanted to make an RGB desk word clock along the lines of the Adafruit project. The goal of this project was to create a cheap and simple version using a budget RGB Matrix & an Arduino Nano, then to 3D print a custom enclosure, bypassing the need for laser-cut parts. The key things stopping me were the cost of the parts and the need for laser-cut parts.
Hope you enjoy, now let's get started!
Project Overview Image Description:
A photograph shows a finished, compact, black RGB word clock displaying the time in illuminated words on its front face. The words visible include "ATWENTY", "QUARTERY", "FIVEHALF", "DPASTORO", "FIVEIGHT", "SIXTHREE", "TWELEVEN", "FOURNINE". The clock is placed next to gaming console controllers, suggesting a hobbyist or entertainment context.
?️ Tools You Will Need for This Project
- Soldering Iron & Solder
- Wires (Ideally at least 3 different colours)
- 3D Printer (Or access to one; you could also send the .stl files to a print house if you don't have your own printer)
- Basic Tools (Screwdrivers, wire cutter, file, etc.)
All the parts you will need to order are covered in the BOM section of this guide!
1️⃣ Step 1: Project Proposal
The goal of this project is to create a budget-friendly RGB word clock using an Arduino Nano and a readily available 8x8 RGB Matrix. The enclosure will be 3D printed, eliminating the need for custom laser cutting.
2️⃣ Step 2: Bill of Materials (BOM) - Electronics & Mechanical
The Bill of Materials (BOM) for this project should come to approximately £13.21 for 1 complete word clock. The total order cost (including postage for the UK) is estimated at £51.34 if you need to buy every part, including full 1KG spools of PLA for the enclosure.
Component List:
- £6.42 - 8x8 WS2812B Matrix: ? Link
- £1.83 - Arduino Nano V3: ? Link
- £1.75 - RTC Module DS1307: ? Link
- £1.25 - Power Micro USB (TP4056): ? Link
- £4.31 - Protoboard: ? Link
- £1.05 - M3 35mm Screws x20: ? Link
- £4.13 - 4mm Rubber Feet x4: ? Link
- £12.99 - BQ 1.75mm PLA - Coal Black: ? Link
- £19.99 - AMZ3D 1.75mm PLA - Natural: ? Link
The PLA calculations are based on an assumed volume of 800 cm³/kg, meaning a 1kg spool contains approximately 330 meters of plastic. This was used to predict the cost per part.
3D Model Image Description:
A 3D render shows the assembled word clock with its front panel displaying illuminated words like "ATWENTY", "QUARTERY", "FIVEHALF", etc. Another render shows the back of the clock, revealing the internal components and the 3D printed enclosure. A third render displays the 8x8 LED matrix grid, and a fourth shows the internal structure of the enclosure with mounting points.
3️⃣ Step 3: 3D Printed Parts
The 3D print models are available on Thingiverse: ? Link. Printing instructions can be found on the linked Thingiverse page.
The enclosure was designed in Fusion 360, using the Adafruit Laser Cut enclosure design as a template. The front panel letters are kept the same as the Adafruit project to ensure compatibility with the provided code. The enclosure is angled at 10° for better viewing. The letter layout is slightly larger than the Adafruit version due to the chosen 8x8 RGB LED matrix measuring approximately 64mm x 64mm, compared to the Adafruit NeoMatrix's 60mm x 60mm.
Enclosure Parts:
- Front Panel: Features the word letters positioned in front of the LED Matrix.
- Mid Panel (Angled): Holds the matrix and connects the Front and Back Panels. This section is angled at 10°.
- Back Panel (Angled): Houses the power adapter and connects to the middle panel.
- Power Adaptor Lock: A small part to secure the power adapter.
- Divider Grid: Helps isolate light from each LED, reducing light bleed between letters.
- LED Diffuser: A clear PLA part that blends RGB LED light, improving letter intelligibility. (Note: 64 diffusers are needed, one for each LED).
The entire enclosure is assembled using M3 35mm and M3 15mm screws.
3D Model Renders Description:
Multiple 3D renders illustrate the components of the 3D printed enclosure: the Front Panel with letter cutouts, the angled Mid and Back Panels, the Divider Grid, and the LED Diffusers. One render shows the internal structure of the assembled enclosure, highlighting mounting points and space for electronics. Another shows the complete enclosure from the back, with a port for the USB power adapter.
4️⃣ Step 4: Code
Getting Arduino IDE
First, download and install the Arduino IDE from: ? Link to Arduino IDE download.
Getting the Code Base
The project code, developed by Adafruit, can be found on GitHub: ? Link to GitHub Repository.
For users new to GitHub, follow these steps to download the code:
- Click the link to the GIT Repo.
- Click the 'Clone or download' button (Green) and select 'Download ZIP'.
- Extract the downloaded ZIP file to a convenient location.
- Open the Arduino IDE.
- In the Arduino IDE, go to 'File' > 'Open'.
- Navigate to the extracted folder and select the 'WordClock_NeoMatrix8x8.ino' file (e.g.,
C:\Users\xxxxxx\WordClock-NeoMatrix8x8-master\WordClock-NeoMatrix8x8-master\WordClock_NeoMatrix8x8.ino
).
Making Modifications to the Code
A minor modification is needed for the code as a different microcontroller is used compared to the original Adafruit project. In the 'WordClock_NeoMatrix8x8.ino' file, modify the following #define
pins:
- Change
RTCGND
toA4
andRTCPWR
toA5
. This assigns the SDA & SCL connections for the Arduino Nano. - Change
NEOPIN
toD3
. This specifies the connection for the 8x8 RGB Matrix DIN.
If you are unsure, you can download a modified version of the code and replace the original file in your directory.
Getting the Required Libraries
Before programming, you need to download and install the required libraries. Adafruit provides links in the code comments, or you can access them directly:
- RTClib: ? Link
- DST_RTC: ? Link
- Adafruit_GFX: ? Link (Note: The original PDF linked to DST_RTC, but Adafruit_GFX is the standard for graphics)
- Adafruit_NeoPixel: ? Link
- Adafruit_NeoMatrix: ? Link
To install Arduino IDE Libraries:
- For each library link above, click the 'Clone or download' button and select 'Download ZIP'.
- Open the Arduino IDE.
- Go to 'Sketch' > 'Include Library' > 'Add .ZIP Library...'.
- Navigate to the downloaded .ZIP file and select it.
- Repeat these steps for all 5 libraries.
Programming the Arduino Nano
Ensure the Arduino IDE is set up to compile for the "Arduino Nano" board. To verify:
- Click on the 'Tools' tab.
- Hover over the 'Board:' option and select "Arduino Nano".
- Plug the Arduino Nano into your PC and select the correct COM Port from the 'Tools' menu.
Once configured, press the upload button to program the Arduino Nano.
Code & Software Image Description:
Screenshots show the Cura slicing software interface, displaying 3D models of the enclosure parts being prepared for printing. Another screenshot shows the Arduino IDE with the 'WordClock_NeoMatrix8x8.ino' code open, highlighting the code editor and menu options.
5️⃣ Step 5: Electronics
With the Arduino Nano programmed, it's time to set up the electronics. Before wiring, disconnect the Arduino Nano from the USB connector. The electronics assembly is designed to be simple, suitable for beginners.
Connections:
- TP4056 (Power Micro USB): Solder the red wire to the '+' terminal next to the micro USB connector (this is 5V). Connect the black wire to the '-' terminal.
- 8x8 RGB Matrix: Connect the 'Din' pin to Arduino Nano Pin D3. Connect 'Vcc' to 5V and 'GND' to GND.
- DS1307 RTC Module: Connect 'SDA' to Arduino Nano Pin A4. Connect 'SCL' to Arduino Nano Pin A5. Connect 'Vcc' to 5V and 'GND' to GND.
- Arduino Nano Power: Connect the 5V pin to the 'Vin' pin on the Arduino Nano, and connect GND to the GND pin next to 'Vin'.
Once all connections are made, the circuit is complete. It's recommended to verify connections using a breadboard before soldering.
Troubleshooting: Clocks time not correct?
If the word clock displays an incorrect time, try reprogramming the Arduino Nano while it's connected to the RTC module. If the issue persists, remove and reinsert the cell battery from the RTC module, then attempt to reprogram the Arduino again.
Schematic & Breadboard Image Description:
A schematic diagram illustrates the connections between the Arduino Nano, TP4056 module, DS1307 RTC module, and the 8x8 RGB Matrix. A photograph shows the actual electronic components wired together on a breadboard, demonstrating the physical connections.
6️⃣ Step 6: Assembly
Now that you have the 3D printed parts, code, and electronics ready, it's time to assemble the word clock.
Assembly Steps:
- Place the Standard Front panel flat on a desk and insert the 64 LED Diffusers into each slot. Ensure all diffusers are flush and not inserted sideways.
- Place the Divider Grid into the Standard Front assembly.
- Prepare the electronics as discussed in the previous step.
- Place the Angled Back panel flat on the desk.
- Insert the USB charger module into its slot in the Angled Back part, ensuring the USB port aligns with the rear cut-out.
- Place the Angled Mid panel over the electronics and align it with the Angled Back panel. Insert the electronics into place.
- Place the 8x8 LED matrix over the electronics, aligning it with the slots on the Angled Mid panel.
- Place the assembled angled structure onto the Standard Front panel.
- Insert and tighten the M3 35mm screws to secure the assembly.
- Place the 4 rubber feet on the base of the clock.
Congratulations! You have completed the assembly. Time to power it up and enjoy your word clock!
Assembly Images Description:
A series of photographs guide the user through the assembly process. They show: placing LED diffusers into the front panel, inserting the divider grid, assembling the electronics on a breadboard, preparing the angled back panel with the USB module, fitting the mid panel and LED matrix, and finally securing the enclosure with screws and adding rubber feet.
7️⃣ Step 7: Lessons Learned & Conclusion
Overall, the outcome of this project is satisfying, but there are a few areas for potential improvement.
Issue 1: RTC Module Accuracy
The RTC DS1307 modules can be frustrating to set up and tend to drift out of sync quickly, requiring frequent reprogramming to re-sync the time.
Issue 2: Enclosure Design
Regarding CAD, the enclosure could be designed differently to improve the assembly process, perhaps by incorporating a dedicated mounting solution for the Arduino Nano.
Issue 3: Future Improvements (Wi-Fi)
A great solution to Issue 1 would be to incorporate Wi-Fi. When starting this project, the author lacked experience with ESP8266/ESP32. However, for a future revision or a new project, adapting the code to use Wi-Fi to fetch the current time instead of relying on the DS1307 would be highly beneficial. This could also enable additional features, such as adjusting the display colour based on weather forecasts or other dynamic information.
Thank you for following this guide. If you have any questions, feel free to leave a comment or send a direct message!
Final Product Image Description:
A photograph shows the completed RGB word clock powered on, displaying the time in words: "TWENTY FIVE TO ELEVEN". The LEDs emit a colourful glow, showcasing the final product.