I wanted a way to see surf conditions without pulling out my phone. The idea was a tabletop display that uses acoustic levitation to physically suspend small foam particles at different heights, each one representing a data point like swell height, period, wind speed, or direction. Instead of reading numbers on a screen, you glance at it and get an intuitive sense of conditions. I built this as my final project for MIT's How to Make (Almost) Anything course (MAS.863).


The system uses two 8x8 phased arrays of 40kHz ultrasonic transducers (128 total) to create standing waves that trap particles in mid-air. I designed custom driver boards with TC4427VOA MOSFET gate drivers and used two ATMEGA2560 microcontrollers to independently control each array. A web app queries Magic Seaweed's surf API and sends commands to the microcontrollers over web sockets, adjusting transducer phase outputs to reposition the particles in real time.
The PCB design was one of the most complex parts of the project. Each driver board routes signals from the microcontroller to 64 MOSFET gate drivers, each driving one transducer. The board went through several iterations in KiCad, and milling took roughly 2.5 hours per board on the Othermill. After milling, I hand-soldered over 200 components per board including the MOSFETs, capacitors, resistors, and header pins.


Everything was housed in a 3D-printed enclosure with laser-cut plywood supports, powered by an 18V supply. The enclosure design references the wave theme throughout, with undulating surface textures on the top and bottom shells. The assembly holds the two opposing transducer arrays at a fixed distance with aluminum standoffs.
All the subsystems worked individually: the driver boards, the arrays, the web application, and the enclosure. But reliable particle levitation remained just out of reach within the semester, likely due to the phase-shifting implementation at the microcontroller level. It was a humbling reminder of the gap between a subsystem working on a bench and a full system working together. The full documentation covers every detail of the build process.
Gallery

Phased array simulation research

KiCad schematic for 64-channel MOSFET driver board

Schematic detail showing gate driver and microcontroller connections

PCB layout with ratsnest showing unrouted connections

Routed PCB layout for the 8x8 transducer array

PCB layout alongside KiCad schematic

Final PCB outline with all traces routed

PCB copper fill and trace detail

First traces milled on copper board

Fully milled driver board before component placement
Soldering components onto the driver board

Populated driver board mounted in the 3D-printed base

3D printing the internal structure on the Ultimaker

Assembled enclosure with transducer array and standoffs

Enclosure with oscilloscope and wiring connected

Final assembly, front view

Final assembly, three-quarter view