February 12, 2023
Description
This are the files to mount a custom designed Prusa LED sign to your MK3 printer.
The LED-PCB with diffusor and screws is available on Tindie.
In addition to this, you need a micro-controller board to drive it (e.g. Arduino, ESP32, Pixelblaze, Pi Pico). Code examples and mapping files are available on Github.
The PCB includes a 3mm acrylic diffusor. It's also possible to use printed diffusors or just a foil. To design your own diffusion front, the mounting holes and cut-out for the letters will be available as dxf file soon.
Originally, the sign was designed to replace the engraved Prusa sign on the MK3 frame, but this position will limit your maximum print height, because the sign is colliding with the print head. So there are two other options two mount the sign at the top of the frame.
using two clip_back.stl
using two clip_top_back.stl
using one clip_top_back.stl and one clip_top_side.stl (mirrored)
The main holder for the PCB and diffusor is the same, only the clips are different.
With the PCB 4 screws and an acrylic diffusor are coming. The Srews are used to fasten the PCB, diffuser holder and backframe together.
Optional, there is a printable diffusor if you want to match the color to your printer or use white or transparent filament for diffusion. The printable diffusor doesn't use screws and hold the PCB and backframe with 4 clips at the diffusor. Simple color change after the first layer will give you a crisp diffusion.
This diffusor has 4 alignment pins for the PCB.
For final assembly the wires for the controller have to be soldered to the PCB. The PCB has 3 pads on the backside, one for 5V, one for Data IN (IN) and one for Ground (GND). The LEDs on the sign are addressable LEDs (WS2812, Neopixel) which are controlled with just one pin. The PCB has an inbuilt level shifter, so the DIN pin can be driven with either 3.3V or 5V logic voltage level.
Solder 3 wires to the display before assembling it with the diffusor and backframe.
The backframe has a slot for the cables with two options, either on the bottom or on the side.
Now add the diffusion frame and insert the 4 screws.
Finally remove the protection film from both sides of the acrylic diffusor and snap it into the frame.
For the printable diffusor, don't use the screws, just align the PCB and backframe with the diffusor, and snap it together.
For driving the LEDs, you need a separate Micrcontroller board (Arduino, ESP32, etc.). Good options are:
Because it's maybe the cheapest option, the Raspberry Pi Pico is used here to show the process of getting animations to the display. The wires are soldered to the following pin on the Pico:
5V → VBUS (red)
GND → GND (white)
IN → GP28 (green)
Install ArduinoIDE 2. After installation, start the IDE and open the board manager by clicking on the board symbol on the upper left. Type in PICO and install the Arduino Mbed OS RP2040 package.
Then install the FastLED library:
The Raspberry Pi Pico isn't supported by FastLED 3.5.0, but by the latest version available in Github. Download it by selecting Code/Download ZIP.
Unzip it and rename the Folder to FastLED. Copy this Folder to the Arduino/libraries folder, which should be in your documents folder. Overwrite the existing FastLED folder.
In ArduinoIDE, open File/Examples/FastLED/DemoReel100. Change the following lines 19-24:
#define DATA_PIN 28
//#define CLK_PIN 4
#define LED_TYPE WS2812B
#define COLOR_ORDER GRB
#define NUM_LEDS 79and also remove the FastLED. term in line 79
// insert a delay to keep the framerate modest
delay(1000/FRAMES_PER_SECOND);Connect the Pico to the PC and select it under Tools/Boards/Arduino Mbed RP2040/Raspberry Pico.
Now upload the script to the board.
A good starting point is the LED mapping example from Jason Coon (Github). Replace the coordinate section (line 45-48) with the coordinates for the Prusa sign (Github). Change the DATA_PIN, LED_TYPE and NUM_LEDs like described above and replace line 159 with
// insert a delay to keep the framerate modest
delay(1000/FRAMES_PER_SECOND);Also uncomment line 157 to call FastLED.show();
License:
Creative Commons — Attribution — Noncommercial — Share Alike
7