PixelClock 32x8 NeoPixel LED matrix to be placed on a desk or on your wall.
For BIG printers as 1 piece front and small printers in 2 front parts too! =)
This project can be assembled without soldering. More on this below…
Video:
Music credit: Used some free music from Apple iMovie
Notes:
04.06.2024: The device just learned a new trick:
You can upload the great AWTRIX3 project software to it with minimal software changes too to get this really cool solution running on this matrix with all it’s functions like sending dynamic tests and icons to it via MQTT or JSON content. Here are a very few examples how this can look, more info can be found on the projects page. Before I found this cool project shortly I wanted to create something similar but I would never be able to spend so much time and effort into this to get to the status of AWTRIX3. A few changes are needed to be able to use the code on this matrix, which I will add to this article soon. So this 3D model may get a good solution to run this project without using the usual and more costly matrix model… =)
07.06.2024: Here are the settings for AWTRIX3 to change to run it on your PixelClock 32x8 matrix. For the rest of the settings please follow the documentation on the AWTRIX3 projects pages:
After connecting the ESP32 with AWTRIX3 to your WiFi network follow these steps to use the matrix with this software:
Open the portal of AWTRIX3 by opening the during startup shown IP-address.
Select the menu item “Files”:
After the file browser of the device opened follow these steps:
1: Click in the field and add the string “/dev.json”.
2: Click the button “MkFile” to add the file named “/dev.json”.
3: Select the just created file “/dev.json”.
4: Add the exact shown content marked with the 4.
5: Save the changes by using the “Save” button.
6. Restart the device and it should show the content correct on the matrix.
{
"sensor_reading": false,
"matrix": 2
}
Because the default settings of AWTRIX3 contain the apps for battery, humidity sensor and temperature sensor set to on, we need to turn it off to avoid showing the always set to 0 values. To do this you can follow the AWTRIX3 documentation or just run this PowerShell script to turn them off at once and to turn on the calendar app. To do this change the IP-address “192.168.178.244” to the value of your device. After that run this script on your MS Windows machine in the “PowerShell ISE”:
$YourIP = '192.168.178.244'
$JSON = @'
{
"BAT": false,
"HUM": false,
"TEMP": false,
"DAT": true
}
'@
Write-Host "Transfer the settings to your device $YourIP now..."
$response = Invoke-RestMethod -Uri "http://$YourIP/api/settings" -Method Post -Body $JSON -ContentType "application/json"
Write-Host $response
Write-Host "Restart AWTRIX3 on $YourIP now..."
Invoke-RestMethod -Uri "http://$YourIP/api/reboot"
Here are just a few pictures of my first tests with it:
Functions:
Pixel inspired clock using a 32x8 LED matrix and a custom created number font.
Super easy print and build, 3 wires to solder or attach solder free only.
Video instructions available to help you with the code and WiFi setup.
Small print size to fit well on the Prusa MK3S+/MK4 or any 200x200mm printer.
Large front piece to be printed as 1 part on large printers like the Prusa XL, Voron 2.4 or Sovol SV08.
The case can be placed on a desk without a stand or on your wall.
The diffuser layer to show the LED colours is printed in white PLA with a color change of the front part.
Web configuration interface to control the PixelClock functions.
Custom created WiFi manager integration to avoid setting your WiFi credentials manually in the code.
The from your WiFi router received IP-address is shown as text on the display to inform you about the current value.
During startup a text for “WIFI” is shown in cyan color until the WiFi settings were done for the first time. Afterwards blue until the device received a new IP-address then in green color.
In case the configured time server cannot be reached a red “TIME" text will be shown in red color and the device will restart until it can reach the time server.
The configuration can be set with an integrated web portal with the ESP32 own host name like “http://esp32-D88998” or via IP-address like "http://192.168.178.50"(depending on your ESP32 hostname and your router settings).
Operation Mode: "Online Mode" with WiFi usage or in "Offline Mode" without the need of a local WiFi possible. In both cases the internal web configuration portal is available.
The LED color for the time texts and the background can be configured to a static value.
Also available is an option to set a random text color every new minute.
The LED intensity can be set for a day time and optional for a night mode usage. With that a time span can be selected to turn off the LEDs fully or reduce their intensity for night time usage.
Updates of the software can be done “Over The Air” / “OTA” with the internal web portal as well to avoid connecting the device to Arduino IDE again. See instructions below.
The in the internal Wifi manager stored settings can be set to default on request to switch to a new WiFi router afterwards.
The other settings can be set to default as well. WiFi and some other basic settings will be kept.
In case the WiFi is no longer available the device will reset the WiFi settings automatically to avoid flashing with Arduino IDE again. Follow the initial WiFi setup then again.
Smart Home environment integration to turn the LED display OFF and ON with HTTP url commands to save some power when e.g. you are not at home. The HTTP commands can be viewed from the web configuration portal.
Integrated web configuration interface:
This PixelClock can be used in "Online Mode" with WiFi usage or in "Offline Mode" without the need of a local WiFi. In both modes you will be able to use an internal configuration portal to configure your PixelClock. See pictures below. =)
The setup process is similar to my WordClock projects so I will reuse these videos here and will explain the very few differences to setup the PixelClock:
Please follow the 2 videos below and try to follow them closely!
IMPORTANT: While adding the ESP32 board drivers make sure to select the version “2.0.17” of the “Espressif ESP32“ boards, not the ≥V3.0.0 version, which will not compile!
Other than mentioned in the videos please set the “NodeMCU-32S” as board in the Arduino IDE: The “D1 Mini ESP32” is no longer used in. The rest of the setup remains the same in the Arduino IDE.
Upload the code to your ESP32 via Arduino IDE and let it reboot.
Setup the PixelClock according to the instructions in the videos.
The device will show the actual to it assigned IP-address during startup.
After startup when the device shows the time already it can be configured with the shown IP-address: “http://YourPixelClockIP-Address” which is also listed in the Arduino IDE Serial Monitor as shown in the videos.
From now on you can configure PixelClock with the web interface only.
Enjoy! =)
Update the code of a running PixelClock:
Updates can be done “Over The Air” / “OTA” with the internal PixelClock web portal.
Use the OTA activation button and follow the instructions in the then available link:
Upload the “Code.ino.bin” file and wait for the device to restart after the update.
Printing instructions:
PixelClock comes in 2 variants:
For smaller printers like the Prusa MK3S+/MK4 in separate parts to be held together by the lid parts from the back.
For bigger printers like the Prusa XL, Voron 2.4 or Sovol SV08 to print the front and back parts in single parts.
Supports needed very few for the lid middle part only from the bed only to support the cutout for the matrix. All other parts did not need supports to be printed.
Using a brim was not needed in my tests, because I cleaned my textured sheet with dishwashing liquid carefully with a new sponge and then with isopropanol alcohol again on the printer to make the parts stick really good. If you face problems with adhesion feel free to add a 5mm brim to the front and lid part.
0.3 draft profile used. You can print in 0.2, but it was not needed for my printers.
Textured sheet used:
If you use a textured sheet too, let it cool down completely after the print and wait for the part gets loose by itself. Do not pull on it to avoid ripping off the letters!
In my case it takes 45-60 minutes after the print has ended and the part just lays loose on the print bed.
Do not touch the print bed and clean it with Isopropanol alcohol before printing.
Black color filament should be used for the matrix to avoid light shining trough to the other cells of the matrix.
One color changes in the front part from white to black is required at about 1.1mm height to create the diffuser layer. Why “at about”? Well it depends on your layer height:
0.2mm = Changes at 1.0mm
0.3mm = Changes at 1.1mm
Color changes are done in this order:
1st color = white = layer 0 to 1.0/1.1mm
2nd color = black = layers 1.1/1.2mm to the top
To read how such a color change is done, you will find a really good article here.
If you use the .3MF files the color change is preconfigured for 0.3mm layer height.
Parts needed:
1x 32x8 LED matrix (Use this one. The case is made to fit to it only!)
You do not need to solder to assemble this project - if you not want to… I will explain the assembly for the solder free variant here only. =)
Connecting the parts for this PixelClock is as easy as possible.
You may need to solder or connect solder free 3 connections only to the ESP32.
The small holders in the lid can be used for a small cable ties to secure the cables.
Have a look into the pictures how to arrange the LED matrix in the front part to ensure that the direction of the LEDs is correct.
In case you want to solder, the only change compared to the solder free variant would be to solder the 3 wires to the ESP instead of using the named plugged cables. Details will not be described here due the connections are the same as for the solder free variant. The Wago clamps would be used in this case too, because they are really handy to use…
Please check the table which pins are connected for the project as well as the pictures:
USB-C port:
ESP32:
LED matrix:
Wire color:
5V
VIN
5V
Red
GND
GND
GND
Black or White
D32
DIN
Green
Wiring this device is easy! It might look confusing at first, but there are 3 different wires only to take care of. I will try to explain for you to assembly it as easy as possible: =)
First action is to press in the USB-C connector into its tight holder:
Now all wires should be unstripped with the wire stripper tool to 11 mm …
… except for the jumper wires. These can stay as they are because of the male part.
After removing the insulation, drill the wires itself together to secure them in place. This can easily be done with 2 fingers and 3-4 spins. The result should look similar to this:
Then add the 3 female/male jumper wires to the ESP32 as shown in the picture below:
RED wire to pin 5V
BLACK wire to pin GND next to the 5V pin
GREEN wire to pin D32
Attach the ESP32 to its holder in the lid and screw it in place. The cutouts in the holder will help you a bit to see if you added the wires to the correct pins on the ESP32 and they will secure the wires in place:
Add the 3 WAGOs to their holder in the lid and open all clamp arms and add the wires:
All RED wires have to be placed into the “5V” clamp.
All GREEN wires have to be placed into the “D” clamp
The remaining BLACK and WHITE wires have to be added to the “G” clamps.
NOTES:
After adding each wire to a clamp gently pull it to see if it was secured in place.
In case 2 wires need to go into 1 clamp section just drill 2 of them together to avoid not putting one of them not correctly into the WAGO clamp. That should be ok and made the use of 3 port WAGOs possibel instead of the then needed 5 port ones:
The not used matrix cable at the DOUT connector can be placed under some of the cables from the ESP32 to secure it a little in place. You can cut it off too if you like, but that should do the trick for it too:
Connect the LED matrix connector together. (Red side to red side and white to white!)
Add the USB-C to USB-A cable to the connector and secure it with the cable ties.
Finally add the top of the lid. Try to avoid catching some of the wires under it. It should close easily. Watch for the “^TOP^” label in your lid middle part to help you what is up and down. Trust me, I added this for a reason… ;-)
You can use one of the back or bottom holes to route the USB cable out of the device depending if you want to hang it on your wall or put it on a desk:
Attach the USB cable to the power supply and run the WiFi setup process which is similar to the one used in my WordClock projects shown in the linked video. The temporary WiFi hotspot is called: “PixelClock”:
When the PixelClock boots up and can connect to the set WiFi it will show its IP-address you can use in your browser to configure your device.