DIY 8x32 LED Matrix Smart Clock With Awtrix 3.0
by Rau7han in Circuits > Gadgets
499 Views, 3 Favorites, 0 Comments
DIY 8x32 LED Matrix Smart Clock With Awtrix 3.0
Hi everyone.
Following the old maker rule: why buy something when I can build it myself for twice the effort đ
Also, to be honest, I saw a YouTuber do something similar a while ago and thought, âyeah⌠I want that on my shelf too. I wanted a small LED matrix behind my desk that could show my subscriber count, time, and other info.
You can buy ready-made displays like this for around âŹ60. The goal here was simple: stay well below that and still get something cool and customizable. That also meant using my 3D printer for the case.
So this is how I built my own LED matrix smart clock using AWTRIX Light.
Supplies
I tried to keep this simple and cheap. This is what I used:
- ESP32 Dev Board (Aliexpress.com)
- 8Ă32 WS2812B LED matrix display (Aliexpress.com)
- 5V power adapter (Aliexpress.com)
- Some jumper wires
- BMP280 sensor (optional) (Aliexpress.com)
- 3D printed case
- USB cable and basic tools
You might already have some of these parts lying around. Download the below attached STL file and 3D print it.
Sponsored by NextPCB
This project was successfully completed with the support of NextPCB, a reliable multilayer PCB manufacturer. With over 15 years of experience in PCB fabrication and assembly, NextPCB offers high-quality and dependable PCB solutions for makers and professionals worldwide.
You can order high-quality PCBs starting at $1.9, and multilayer PCBs starting at $6.9:
https://www.nextpcb.com/pcb-quote
Get free PCB assembly for up to 5 boards:
https://www.nextpcb.com/pcb-assembly-quote
You can also check your designs using their free online DFM & Gerber viewer:
Choosing the Parts
About âŹ5 went into the ESP32.
Itâs important to use an ESP32 because AWTRIX Light only works properly with it.
For the display, I went with an 8Ă32 LED matrix. Earlier I considered using four 8Ă8 modules, but in the end this was cleaner and easier.
Flashing AWTRIX 3 on the ESP32
The next step was the software part.
To flash AWTRIX Light, you need Google Chrome or any other Chromium-based browser like Edge.
I connected the ESP32 to my PC using a USB cable and opened the AWTRIX online flasher page.
After clicking CONNECT, a list of serial ports appeared. On Windows, this usually shows up as a COM port. On Linux, itâs typically something like ttyUSB0. If youâre not sure which one is correct, unplug the ESP32 and plug it back inâwhatever port appears again is the right one.
Once connected, I clicked INSTALL AWTRIX 3. Since this was the first time flashing the board, make sure Erase device was checked, then clicked Next and Install.
The flashing process takes about two minutes. Keep the browser tab open and donât disconnect the ESP32. Sometimes it looks like itâs stuck for a moment, but thatâs normal. When the process finishes, youâll see Installation complete. The ESP32 reboots automatically, and AWTRIX is now installed and ready for Wi-Fi setup in the next step.
Quick Wiring Test
Before putting anything into the 3D printed case, I did a full test on a breadboard. This really helps because if something is wired wrong, you can fix it easily without opening the case again and again.
First, I soldered a JST-SM 3-pin connector to the LED matrix for power and data. I also soldered the power cable so itâs solid and doesnât come loose later. For the BMP280 sensor, I used a 4-pin jumper cable so it can plug directly into the ESP32.
The LED matrix wiring is very simple. It only needs 5V, GND, and a DATA line. The power line goes to both the ESP32 and the LED matrix, and the data line is connected to GPIO 32, which is the pin recommended by AWTRIX.
In the photo here, you can see my temporary wiring and soldering. Itâs definitely not the prettiest setup, but itâs strong enough for testing, which is all I needed at this stage.
I also connected three buttons for testing. AWTRIX comes with a few default apps like time, date, battery, temperature, and animations. The buttons make it much easier to change settings and navigate the menu.
These are the pins I used for the buttons:
- GPIO26 â left button
- GPIO27 â middle button (inverted)
- GPIO14 â right button
For temperature readings, I connected a BMP280 sensor using I²C:
- GPIO21 â SDA
- GPIO22 â SCL
AWTRIX also supports other sensors like BME280, HTU21D, and SHT31, so you can use whatever you already have.
To keep the power stable, I added a 470ÂľF, 16V capacitor between VIN and GND on the ESP32. This helps smooth out voltage drops, especially when the LED matrix draws more current.
Once everything was connected on the breadboard, I powered the setup using an external 5V, 3A power adapter. Since AWTRIX was already flashed earlier, the ESP32 was now ready for setup and testing.
Wi-Fi Setup and AWTRIX Configuration
After powering it on, the ESP32 starts its own Wi-Fi and web server automatically. I connected my phone to the AWTRIX Wi-Fi network. The default password is 12345678.
Once connected, it opens a setup page where you enter your home Wi-Fi details. One important thing to remember: the ESP32 only works on 2.4 GHz Wi-Fi, so make sure you select that band.
After the ESP32 connects to your Wi-Fi, the display shows the AWTRIX logo along with the date and time. At first, the time was wrong because the default timezone didnât match my location.
The IP address of the ESP32 is shown directly on the LED matrix. I typed that IP into my browser to open the AWTRIX web dashboard. From there, I changed the timezone (Iâm in India, so I set GMT +5:30), saved it, and the time updated correctly.
Adjusting Settings and Buttons
At this point, everything was working. The display showed time, date, temperature, humidity, and battery status. Since Iâm using a power adapter, I didnât need the battery icon, so I disabled it in the settings.
Most settings can also be changed directly using the buttons on the clock. AWTRIX has a built-in on-screen menu:
- Press and hold the middle button for 2 seconds to open the menu.
- Use the left and right buttons to navigate.
- Press the middle button to select.
- Hold the middle button again for 2 seconds to save and exit.
You can also turn the display on or off by double-pressing the middle button when youâre not in the menu.
Iâll attach photos showing the menu in action, including brightness, colors, transition speed, and enabling or disabling icons. After setting everything the way I wanted, the matrix was ready to be mounted into the 3D printed case.
If anything doesnât work the first time, donât worryâmost issues are just wiring or Wi-Fi related. Feel free to comment if you get stuck.
3D Printing the 8Ă32 LED Matrix Frame
For the case, I used a ready-made 8Ă32 LED matrix frame design. One thing I really liked about it is that it doesnât require glue, tape, or screws. Everything is designed to snap together, which makes assembly much easier.
The frame keeps the USB port accessible, and you can use it either on a desk or mount it on the wall. It also has snap-fit spots for the ESP32, microphone modules, and the DC power connector. Thereâs even a version without sockets if you want to keep it super simple.
One small note: even though itâs a snap-fit design, I recommend gluing the two front frame pieces together. That part just feels more solid that way.
I want to say thanks to the enclosure designer FractalNoise â itâs a really nice design. There are plenty of similar 8Ă32 matrix enclosures online, so feel free to use any design that fits your display and setup.
Printing the Parts
These are the parts I printed:
- 2Ă Front (split)
- 2Ă Diffuser (split)
- 1Ă Back Left (split)
- 1Ă Back Right (split)
For the diffuser screens, I followed specific print settings to get a horizontal âscanlineâ effect on the display. It gives the LEDs a nicer pixel look instead of looking too harsh.
These are the slicer settings I used for the diffuser:
- Top/Bottom surface pattern: Aligned Rectilinear
- Internal solid infill pattern: Aligned Rectilinear
- Sparse infill pattern: Aligned Rectilinear
- Infill direction: 0°
If youâre printing the diffuser in white filament, it matters which build plate you use. A textured plate makes the light more scattered and a bit dimmer. A smooth plate gives much better results. For clear filament, a textured plate actually works really well.
My prints arenât perfect because Iâm using an older 3D printer, so donât stress if yours donât come out flawless either. It still works just fine.
Downloads
Assembly in the Enclosure
After printing everything, I went back to the electronics. First, I soldered the wires to the ESP32 according to the same pinout I used earlier during testing.
Once that was done, I started placing all the parts into the printed enclosure. The LED matrix goes in first, followed by the diffuser and front frame. Then I placed the ESP32, sensor, and power connector.
Some parts didnât fit as tightly as I wanted, so I used a bit of hot glue to secure the ESP32 and the sensor. This isnât mandatory, but it helps keep everything in place, especially if you plan to move it around.
After everything was in place, I closed the back cover, snapped the diffuser and front frame on, and powered it up one last time.
At this point, the matrix was fully assembled and ready to use.
Final Result and Conclusion
After everything was assembled and powered on, the matrix was finally ready. I tried it both waysâsitting on my desk and mounted on the wallâand it works great in both positions.
On the desk, itâs perfect as a small smart clock. Itâs easy to read from a distance, and the brightness is adjustable so itâs not annoying at night. Mounted on the wall, it looks more like a proper display panel and blends in nicely with the setup behind my desk.
In the photos here, you can see how it looks. The 8Ă32 size is just rightânot too big, not too smallâand the diffuser gives it a clean pixel look without being too harsh on the eyes.
If you build one yourself or change something, feel free to share it in the comments. Happy making đ