WaveForm takes this unseen phenomenon and transforms it into an interactive visual wave displayed on a HUB75 matrix. As the sound grows louder, the wave expands and intensifies in real time.

We built a custom enclosure that houses the RGB matrix along with a custom PCB featuring the Raspberry Pi Pico 2 and the MAX9814 microphone amplifier, paired with a dedicated power and button board. This enclosure lets us mount the device on a wall inside our workspace.

When the room is silent, WaveForm displays a calm, single center line. As soon as there’s activity—my 3D printer running, mechanical keyboard typing, or even general background music—the device picks up those sounds and transforms them into smooth, flowing waves.

The result is a visually engaging ambient display that looks great in the background while revealing the hidden sound patterns of our environment.

This article covers the complete build process of this project. Let's get started!

MATERIALS REQUIRED

These are the materials used in this project:

UNDERSTANDING SOUND WAVES

Sound is all around us, but we never actually see it. At its core, sound is simply a vibration traveling through the air—tiny, rapid changes in air pressure created whenever something moves, taps, clicks, or speaks. These pressure variations form a waveform: a repeating pattern of peaks and valleys that represent how the air is compressing and expanding over time.

Our ears interpret these changes instantly, but the waveform itself remains completely invisible.

Our project, WaveForm, is built around the idea of revealing this hidden pattern.

Using a MAX9814 microphone amplifier, the Raspberry Pi Pico 2 continuously measures the incoming sound pressure and converts it into digital readings hundreds of times per second. In our code, each of these readings becomes part of a sequence of numbers—the raw shape of the sound wave.

Here’s the exact moment the waveform is captured: (I will be explaining more about code in later later section of the project.)

for (int i = 0; i < OVERSAMP; i++) {
int v = analogRead(MIC_PIN);   // read sound level from mic
samples[i] = (float)v;         // store it in the buffer
sum += v;
if (v < vmin) vmin = v;
if (v > vmax) vmax = v;
delayMicroseconds(150);
}

Each number represents a single instant of air pressure. By processing this stream of data in real time, we can calculate the sound’s amplitude (loudness), filter out background noise, and map every moment of the waveform to a corresponding point on the display.

These points are then drawn as a smooth, scrolling curve across the HUB75 RGB matrix. Quiet sounds create gentle ripples near the center of the screen, while louder sounds stretch the waveform outward and shift its color toward red. The result is a living visualization of something we normally experience only with our ears.

3D DESIGN

Before diving into the PCB design process, we first prepared a complete 3D design of the device. This began by importing models of the LED matrix, the Pico 2, the MAX9814 microphone module, and the push buttons. We then rearranged them to form an enclosure layout: the matrix display sits in the center, and on the right side we created a custom compartment that holds three push buttons aligned in a row. Above the buttons, we placed the microphone module.

The idea was to keep all interactive elements—buttons, microphone, switch, and USB port—on one side. Because the internal space was quite limited, we positioned the Pico 2 driver board and the battery on the backside of the display.

The enclosure was split into two main parts: a left and a right side. The right side houses the switch, microphone, and power-management board. The left side exists mainly to support and stabilize the LED matrix. Finally, a back lid was designed to close the enclosure and secure all components together into a solid, unified body.

After assembling the full 3D model, we exported each part as a separate mesh and printed them in two colors to achieve a dual-tone aesthetic. The switch actuators, microphone grill, and back lid were printed in brown PLA, while both side enclosures were printed in white PLA.

PCB DESIGN

For this project, we designed two separate circuits. The first is a Switch–MIC–Power board, which includes three push buttons, the MAX9814 microphone module, and a dedicated power management IC. The second is the Pico Driver board, which pairs the Raspberry Pi Pico 2 with a HUB75 connector and is responsible for running the 64×32 LED matrix.

Let’s have a look at the Pico driver board first. To connect the Raspberry Pi Pico 2 to the matrix’s HUB75 interface, we designed a small driver PCB that uses a CON-16 connector.

We connected the matrix's HUB75 pins (CON 16) to the PICO's GPIO pins in the following order: 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, and B2 to GPIO9.

We also added a CON2 port connected to the 5V and GND pins of the Pico. This CON2 connector is used to provide power to the Pico Driver Board. A CON4 connector is also added that breaks out GPIO0, GPIO1, GPIO26, and GPIO28. We will be using GPIO28 for linking the output of the MAX9814 with our Pico board.

Next, we have the Switch–MIC–Power board, which combines three main things all connected together. This board works as the power source for the whole project. A Li-Po cell is connected to the IP5306 power-management IC, which provides a stable 5V 2A output to power the matrix and the Pico driver. The board contains three buttons: one is the main power switch connected to the IP5306, and the other two are connected to GPIO0 and GPIO1. We also mounted the MAX9814 module on this board. It is powered through the 5V line from the IP5306, and its output is linked to GPIO28 of the Pico.

For both boards, we designed the PCBs using the PCB outline from our 3D CAD model. This helped us place the push buttons, USB Type-C port, microphone module, Pico footprint, mounting holes, and connectors correctly based on the enclosure dimensions.

NextPCB PCB SERVICE

After completing the PCB design, Gerber data was sent to HQ NextPCB, and an order was placed for a green solder mask with white silkscreen.

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 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 have to wait around for DFM reports from manufacturers, HQDFM is the most efficient method for performing 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.