Project Gestalt
Greetings everyone, and welcome back!
This is Project Gestalt, a DIY wall-mounted RGB matrix display that I built from scratch. It features two 64×32 RGB LED matrices chained together to create a single 64×64 display, all driven by a Raspberry Pi Pico.
The device can display various animations and visuals that I’ve added, including gaming-related animations, random patterns, and several other effects.
The entire enclosure was designed in Fusion 360, with its design heavily inspired by the Pods from NieR: Automata. This is also where the name “Gestalt” comes from. Gestalt is a German word that roughly translates to “form” or “shape,” and it also refers to the idea of individual elements coming together to form a complete whole. I thought this was a fitting name for a project where two separate RGB matrices come together to create one complete display.
Project Gestalt is powered by a 3.7V, 2600mAh lithium-ion cell, providing approximately four hours of battery backup, which is pretty decent for a device running a total of 4,096 RGB LEDs.
I have previously worked on a similar project called WaveForm, where I used a single 64×32 RGB matrix along with a microphone to detect surrounding sound and display an audio-reactive waveform. As the sound level increased, the waveform displayed on the matrix reacted accordingly.
I liked that feature so much that I decided to implement the WaveForm code in Project Gestalt as well.
For controlling the device, I added three buttons: Previous, WaveForm, and Next. The Previous and Next buttons allow us to cycle backward and forward through the different animations stored on the device.
Pressing the WaveForm button switches the device into WaveForm mode. In this mode, the RGB matrix displays an animated waveform that reacts in real time to the sound picked up by the onboard microphone.
In this Instructables, I’ll cover the complete build process of Project Gestalt, including the enclosure design, electronics, assembly process, and code.
Let’s get started!
Supplies
These were the materials used in this project—
- Custom PCBs
- 64x32 P3 HUB75 RGB Matrix x 2
- Matrix Ribbon Connector
- Raspberry Pi PICO
- IP5306 Power Management IC
- 10 uF Capacitors
- 1 uH SMD Inductor
- Type C Port
- 0805 LED Indicator
- 10K Resistor: 0805 Package
- Lithium cell 3.7V 2600mAh with PCM
- Push Buttons 12x12 Size
- Push Buttons 6x6 Size
- Connecting Wires
PODS FROM NieR: AUTOMATA
The inspiration behind this project came from PODS from NieR: Automata.
For those unfamiliar with NieR: Automata, Pods are tactical support units commonly assigned to YoRHa soldiers. They are equipped with various weapons for long-range attacks, relay messages from Command, exchange operational intelligence between units, and provide general support during missions.
Throughout most of the game, Pods appear to be emotionless machines that simply follow orders. Their dry and overly literal conversations also occasionally provide some of the funniest moments in the game. However, by the end of NieR: Automata, their role becomes much more profound. Without going too deep into spoiler territory, the Pods begin to represent something beyond their original programming, making them an unexpectedly meaningful part of the story.
As someone who really likes NieR: Automata, I had wanted to build my own Pod-inspired device for quite some time, something that I could place on my workbench as a functional piece of gaming memorabilia.
Interestingly, the RGB matrix display wasn’t actually part of the original idea. The project initially started simply as an attempt to design and build my own Pod-like device. The idea of incorporating two RGB matrices and turning it into an interactive display came later during the design process.
This eventually resulted in Project Gestalt: a device that combines the visual design of the Pods from NieR: Automata with a 64×64 RGB matrix capable of displaying animations, gaming-related visuals, random patterns, and an audio-reactive waveform.
DESIGN
For the enclosure design of this project, my primary inspiration was the Pod from NieR: Automata, more specifically Pod 042, which is assigned to 2B. While all Pods share the same overall design, Pod 042 is distinguished by its orange accent pieces, making it instantly recognizable.
The original Pod has a fairly boxy design, whereas the RGB matrix is almost completely flat. Because of this, I couldn't create an exact replica and instead designed an enclosure that captures the overall look while accommodating the display. One feature I wanted to preserve was the cylindrical top section with its two eye-like details, which is one of the most recognizable elements of the Pod's design.
To achieve a metallic appearance, I planned to print the majority of the enclosure using grey PLA, with separate orange accent pieces to resemble Pod 042.
The enclosure consists of two main parts: the Main Body and the Back Lid. The Main Body houses both RGB matrices, the Pico Driver Board, the Switch Board, the power switch, the front grille, and the switch actuators. The Back Lid closes the enclosure from the rear and is secured using M2 screws.
The cylindrical Pod-inspired top section is sandwiched between the Main Body and the Back Lid, holding it securely in place without requiring additional fasteners. Finally, an orange accent piece is attached to the front of the enclosure using super glue, completing the overall Pod-inspired appearance.
3D PRINTED PARTS
Once the enclosure design was complete, all the parts were exported as mesh files and 3D printed on my Anycubic Kobra S1 using Grey Hyper PLA and Orange Hyper PLA.
The larger structural components, including the Main Body, Back Lid, and Pod-inspired Cylinder were printed in Grey Hyper PLA, while the grill, button actuators, and front accent piece were printed in Orange Hyper PLA, giving the project a clean dual-tone aesthetic inspired by Pod 042.
For most of the prints, I used the following settings:
- Layer Height: 0.2 mm
- Infill: 25%
- Nozzle: 0.4 mm
- Supports: Tree Supports with a 0.3 mm Top Distance
These settings provided a good balance between print quality, strength, and print time.
HARDWARE- 64x32 RGB MATRIX
For this project, we are using two 64x32 RGB matrix panels, each consisting of 2048 RGB LEDs arranged in a 64-by-32 grid, producing vibrant text, images, and animations.
This panel is controlled using a HUB75 interface, which relies on multiple control pins, including RGB pins, address pins, a clock pin, a data latch, and an output enable pin.
The HUB75 connection enables the row-column scanning method by shifting a row of pixel data into a shift register, then using a demultiplexer to select which rows to display. The HUB75 connector includes RGB channels, addressing pins (A, B, C, D), a clock signal (CLK), a latch signal (LAT), and an output enable (OE) pin.
This interface allows precise control over the LED matrix, enabling smooth and bright displays ideal for text, images, and animations.
While it might appear complex to set up, this method ensures high-intensity displays and smooth, seamless graphics transitions.
Using a 5V power source, we can drive this display, but there's a catch. The current draw can vary significantly depending on the number of LEDs lit and their brightness levels. A fully lit panel can draw substantial current, so a power supply capable of providing at least 4-5 Amps is recommended.
Additionally, by utilizing the included IN and OUT connectors, we can connect multiple panels in pairs and form a chain. One of the challenges of connecting numerous panels is ensuring that the control solution (PICO 2) we are employing can handle the extra data load of two or more displays.
With the PICO 2, we are currently using a single panel that can power two or more displays without causing any issues.
Waveshare made this matrix, and the wiki link below has more detailed information on the Matrix board:
PCB DESIGN- PICO DRIVER
The first PCB designed for this project was the Pico Driver Board, which acts as the main controller for Project Gestalt. It interfaces the Raspberry Pi Pico 2 with the RGB matrix through a standard HUB75 (CON16) connector.
The HUB75 signals are connected to the Pico as follows:
- A to GPIO19
- B to GPIO16
- C to GPIO18
- D to GPIO20
- E to GPIO22
- CLK to GPIO11
- LAT/STB to GPIO12
- OE to GPIO13
- R1 to GPIO2
- G1 to GPIO3
- B1 to GPIO4
- R2 to GPIO5
- G2 to GPIO8
- B2 to GPIO9.
A CON2 connector is also included, which connects to the Pico's 5V and GND pins to provide power to the Driver Board.
Additionally, we added a CON6 connector that breaks out several GPIO pins. This connector will later be used to connect the tactile buttons and the microphone module.
The PCB also includes footprints for a DFPlayer Mini audio module. Although it is not used in Version 1 of this project, I decided to include it on the board so audio functionality can be added easily in a future revision.
Once the schematic was completed, the PCB outline was created based on the dimensions of the 3D model. After placing the mounting holes were placed, all the components and connectors were positioned, and the board routing was completed.
PCB DESIGN- SWITCH BOARD
Next, we designed the Switch Board, which houses three 12×12 mm tactile push buttons along with the microphone module.
The three push buttons are connected with one terminal tied to GND, while the other terminals are routed individually to a CON6 connector. This connector interfaces directly with the Pico Driver Board and carries the button signals.
A MAX9814 microphone module is also included on this board. Its output signal, along with the VCC and GND connections, is routed through the same CON6 connector, allowing the Raspberry Pi Pico to read the surrounding audio for the WaveForm mode.
Just like the Pico Driver Board, the PCB outline was created using the dimensions from the 3D Model. After positioning the switches and connectors, the traces were routed to complete the board design.
PCB DESIGN- POWER BOARD
The third PCB used in this project is the Power Board, which serves as the primary power source for the entire system.
A 3.7V Li-ion/Li-Po cell is connected to an IP5306 power management IC, which boosts the battery voltage and provides a stable 5V, 2A output to power both the RGB matrices and the Pico Driver Board.
The board also includes a momentary push button connected to the IP5306's KEY pin. Pressing this button enables the output, powering on the entire device. A USB Type-C connector is provided for conveniently charging the battery without opening the enclosure.
Like the previous two PCBs, the board outline was created using the dimensions from the Fusion 360 enclosure model. Once the mechanical constraints were finalized, all the components were placed in position, and the PCB routing was completed.
NextPCB PCB SERVICE
After completing the PCB design, Gerber data for all three PCBs were sent to HQ NextPCB, and an order was placed for Green Solder mask boards with a white silkscreen for all three.
After placing the order, the PCBs were received within a week, and the PCB quality was pretty great.
In addition, I have to bring in HQDFM to you, which has helped me a lot through many projects. Huaqiu’s in-house engineers developed the free Design for Manufacturing software, HQDFM, revolutionizing how PCB designers visualize and verify their designs.
Take advantage of NextPCB's Accelerator campaign and get 2 free assembled RP2040-based PCBs for your innovative projects.
https://www.nextpcb.com/blog/rp2040-free-pcba-prototypes-nextpcb-accelerator
This offer covers all costs, including logistics, making it easier and more affordable to bring your ideas to life. SMT services can be expensive, but NextPCB is here to help you overcome that hurdle. Simply share your relevant project, and they'll take care of the rest. Don't miss out on this amazing opportunity to advance your tech creations!
HQDFM: Free Online Gerber Viewer and DFM Analysis Tool
Also, NextPCB has its own Gerber Viewer and DFM analysis software.
Your designs are improved by their HQDFM software (DFM) services. Since I find it annoying to wait for DFM reports from manufacturers, HQDFM is the most efficient way to perform a pre-event self-check.
This is what I see in the online Gerber Viewer. It's decent for a quick look, but not entirely clear. For full functionality—like detailed DFM analysis for PCBA—you’ll need to download the desktop software. The web version only offers a basic DFM report.
With comprehensive Design for Manufacture (DFM) analysis features, HQDFM is a free, sophisticated online PCB Gerber file viewer.
With over 15 years of industry experience, it offers valuable insights into advanced manufacturing processes. If you’re looking for reliable PCB services at a budget-friendly price, HQ NextPCB is definitely worth checking out.
PCB ASSEMBLY - PICO DRIVER
- We begin the Pico Driver Board assembly process by applying solder paste to all the Pico pads using a solder paste dispensing needle. Here, we are using Sn/Pb 63/37 solder paste, which has a melting temperature of 200°C.
- Next, we pick and place the Raspberry Pi Pico onto the PCB, making sure all of its pins align correctly with the corresponding pads.
- The PCB is then placed on a reflow hotplate. Here, we are using the Miniware MH50, a compact reflow hotplate that is perfect for assembling the Pico Driver Board.
- Finally, two CON8 male header connectors are installed on the HUB75 connector pads. We flip the board over and solder the header pins in place using a soldering iron, completing the assembly of the Pico Driver Board.
PCB ASSEMBLY - SWITCH BOARD
- Next comes the PCB assembly process for the Switch Board, which begins by placing the MAX9814 microphone module and all three push buttons in their respective positions.
- The board is then flipped over, and all the leads are soldered using a soldering iron, securing each component firmly in place.
PCB ASSEMBLY - POWER BOARD
- We begin by applying solder paste to all the component pads using the same solder paste dispenser as before.
- Next, all the SMD components are picked and placed in their respective positions.
- The entire PCB is then placed on a reflow hotplate. This time, we use a slightly larger hotplate since the Power Board is larger than the previous PCBs.
- Once the reflow process is complete and all the SMD components are secured, we install the push button, followed by the USB Type-C connector.
- The board is then flipped over, and the leads of the through-hole components are soldered using a soldering iron, securing them in place.
- Next, we connect the positive terminal of a 3.7V, 2600mAh lithium-ion cell to the B+ terminal of the Power Board and the negative terminal to the B- terminal using a soldering iron.
To verify that everything is working correctly, we press the power button. The status LED lights up, indicating that the board has powered on. We then use a multimeter to measure the output voltage and obtain a stable 5V, confirming that the Power Board is functioning as expected.
PICO DRIVER & MATRIX ASSEMBLY
- We begin by connecting the VCC and GND terminals of the RGB matrix to the 5V and GND outputs of the Pico Driver Board using a soldering iron.
- Next, we connect the matrix's HUB75 interface to the CON16 connector on the Pico Driver Board using a 16-pin ribbon cable.
MATRIX DEMO
We then upload the demo code below, which displays Cyber Ghost, a Pac-Man-inspired ghost featuring animated feet and continuously shifting RGB colors.
Here's the complete code.
DUAL MATRIX ASSEMBLY
After testing the single-matrix setup, we added the second RGB matrix by connecting its VCC and GND lines in parallel with those of the first matrix.
Next, we used a slightly longer 16-pin ribbon cable to connect the HUB75 DOUT connector of the first matrix to the HUB75 DIN connector of the second matrix. This daisy-chains the two 64×32 matrices together, allowing them to operate as a single 64×64 RGB matrix display.
DUAL MATRIX DEMO
Just like the single-matrix demo code, we prepared the same Cyber-Ghost animation for the dual-matrix setup, which has a total resolution of 64×64 pixels.
We uploaded the code below to the Raspberry Pi Pico, and the setup worked perfectly, with both RGB matrix operating together as a single 64×64 display.
Updated Code
WIRING - PICO DRIVER & SWITCH BOARD
- The Pico Driver Board is first disconnected from the RGB matrix and connected to the Switch Board.
- We begin by connecting the GND of the Pico Driver Board to the GND of the Switch Board, followed by connecting the 5V output of the Pico Driver Board to the VCC input of the Switch Board.
- Next, Switch 1 (PREV) is connected to GPIO0, Switch 2 (NEXT) is connected to GPIO14, and Switch 3 (WAVEFORM MODE) is connected to GPIO1. Finally, the microphone output pin on the Switch Board is connected to GPIO28 of the Pico.
For all these connections, we use single-core silver-plated copper wire.
WIRING - PICO DRIVER SWITCH BOARD WITH POWER BOARD
The 5V and GND outputs of the Power Board are connected to the 5V and GND terminals of the Pico Driver Board using two connecting wires.
CODE
Before beginning the matrix assembly process, I uploaded the main code below into the raspbeery pi pico.
Here's the code breakdown.
MATRIX ASSEMBLY
- Now comes the final assembly process, which begins by reconnecting the Pico Driver Board to the RGB matrices. We solder the VCC and GND wires of the matrices back to the 5V and GND terminals of the Pico Driver Board.
- Next, the 16-pin ribbon cable of the first matrix is reconnected to the HUB75 connector on the Pico Driver Board.
- Before proceeding further, we power up the setup to make sure everything is working correctly. Once we confirm that both matrix and the display are functioning properly, we begin assembling the enclosure.
- The Main Body is placed over the displays by aligning its mounting holes with the mounting points on the RGB matrices. We then use a total of ten M3 bolts to secure both matrices to the Main Body.
- Next, the Pico Driver Board is positioned between the two matrices by aligning its mounting holes with the mounting points on the matrices. Two M3 bolts are then used to secure the Pico Driver Board in place.
- The three orange Switch Actuators are positioned in their respective slots, followed by the orange Grille Part. The Switch Board is then placed over the three actuators and secured in place using M2 screws.
- Next, the orange actuator for the main power switch is positioned in its slot.
- The 3.7V lithium-ion cell is then placed inside the enclosure. The Power Board is positioned over the main switch actuator and lithium-ion cell and secured in place using M2 screws.
- Finally, the Back Lid is positioned on the rear side of the Main Body. M2 screws are inserted from the left and right sides and tightened to secure the Back Lid to the Main Body, completing the assembly process.
RESULT
And here’s the end result of this project, PROJECT GESTALT, a fully functional RGB matrix display that combines animations, gaming-inspired visuals, and a sound-reactive WaveForm mode, all inside a custom enclosure inspired by the Pods from NieR: Automata.
To turn the device ON, we press the main power button, which powers up the system and initializes the display.
Three control buttons are provided: Previous, WaveForm Mode, and Next.
The Previous and Next buttons allow us to cycle through the different animations stored on the device. Pressing the Next button moves to the next animation, while the Previous button takes us back to the previous one.
The dedicated WaveForm Mode button switches the device into its sound-reactive mode. In this mode, the microphone picks up the surrounding sound level, which is then visualized in real time as an animated wave on the RGB matrix. As the surrounding sound gets louder, the wave expands and reacts accordingly.
ANIMATIONS
Project Gestalt currently features nine custom animations, each created using procedural graphics and lightweight code to run smoothly on the Raspberry Pi Pico.
- Cyber-Ghost- A colorful Pac-Man-inspired ghost with animated feet and continuously shifting RGB colors.
- Cyberpunk 2077 Relic- a Cyberpunk-inspired Relic logo featuring glitch effects, screen tearing, and randomized digital interference.
- Retro DOOM Fire- a classic pixelated fire effect inspired by old-school games and demoscenes, with flames dynamically rising across the display.
- XOR Cyber-Fractal- a constantly evolving geometric pattern generated using lightweight bitwise operations and procedural animation.
- Synthwave Outrun Grid- a retro 80s-inspired animated sunset and moving perspective grid that creates the illusion of traveling forward.
- Neon Qix Trails- inspired by the classic Mystify screensaver, featuring bouncing neon lines that leave colorful fading trails behind them.
- Pikachu- an animated 8-bit Pikachu with a bobbing head and moving mouth designed to mimic its iconic “Pika Pika!” expression. (This was my Fav one)
- It's a Me Mario- a miniature animated scene where Mario runs, jumps into a Question Block, and sends a gold coin flying out.
- Matrix Digital Rain- the iconic Matrix-inspired effect featuring streams of glowing green code continuously falling across the display.
WAVEFORM MODE
Another feature I incorporated into Project Gestalt comes from one of my previous projects, WaveForm: The Background Sound Visualizer.
WaveForm is a sound-reactive visualizer that transforms surrounding sound into an animated wave displayed on a HUB75 RGB matrix. As the sound gets louder, the wave expands and reacts in real time.
Since Project Gestalt already uses a large RGB matrix, I ported my previously developed WaveForm code to this project as well. By pressing the dedicated WaveForm button, the device switches to an audio-reactive mode where the displayed wave responds to surrounding sounds in real time.
You can check out the complete WaveForm article from the link below.
https://www.instructables.com/WaveForm-the-Background-Sound-Visualizer/
Here's the code that I edited for the dual RGB Panel setup.
CONCLUSION
This project has been a success, and one of my favorite things about Project Gestalt is its versatility. It can either be mounted on a wall or placed on a desk using a stand, making it a great interactive and aesthetic addition to my workspace.
The device currently features nine custom animations along with the sound-reactive WaveForm mode. More animations can easily be added in the future, keeping the display fresh and interesting over time.
There are also several upgrades I’m planning for the next version of this project. One major improvement would be replacing the Raspberry Pi Pico with a Pico W to add Wi-Fi functionality, which could allow images and other content to be sent wirelessly to the matrix. I would also like to add a DFPlayer Mini module to bring audio playback to the project.
These upgrades will hopefully make the next version of Project Gestalt even more interactive and capable. For now, I’m quite happy with how this version turned out, and I hope you liked the project as well.
For now, Project Gestalt is complete, and all the details you need to build your own version are available in this article, including the code, schematic, enclosure files, and complete build instructions.
Special thanks if you made it this far, and I hope you enjoyed reading about this project as much as I enjoyed building it.
I’ll be back with another project very soon. Until then, stay tuned, and happy making!