Skip to the content
2 layers31 × 10 mmULHolder, the printed circuit board in 3D

AcoustiFly, a single transducer Acoustic Levitator

Size
31 × 10 mm
Copper layers
2
Thickness
1.6 mm
Parts
6
Nets
2
Pads
5
Tracks, vias
8, 0
Routed
Yes
KiCad
KiCad 7 (file 20221018)
Created
30 Oct 2024
Updated
15 Dec 2025

Overview

ULHolder is an open-source printed circuit board by TUDA-MUST, from the TUDA-MUST/AcoustiFly repository on GitHub, published under the GPL-3.0 licence. It is a 2-layer board of 31 × 10 mm with 6 parts on 2 nets, routed with 8 tracks and 0 vias.

README

README.md

AcoustiFly, a single transducer Acoustic Levitator

Badge_must Badge Badge

Unlock the Power of Sound: Explore Acoustic Levitation with Ease and Precision. This project focuses on the development of an acoustic levitator, a fascinating technology capable of suspending small objects in mid-air using ultrasonic waves. It is:

  • Low Cost: Affordable and accessible to everyone -> approximately between 15-25 USD per unit
  • Easy to Build: Simple setup with readily available components
  • Open Source: Free to use, modify, and distribute
  • Mobile: Battery powered operation possible
  • Adjustable: Distance between transducer and reflector can be adjusted, thus stability can be tuned

This repository provides all the necessary resources, including code, schematics, and documentation, to build and experiment with your very own acoustic levitation system.

Move


Table of Contents

Introduction

Our repository is dedicated to showcasing a method of acoustic levitation using a single transducer and a reflector. Acoustic levitation, also known as acoustic trapping, is a fascinating technique that allows objects to float in mid-air using sound waves.

In our approach, we utilize a single transducer, which emits high-frequency sound waves, and a carefully designed reflector. The transducer generates an acoustic field that interacts with the reflector to create standing waves within a confined region. These standing waves produce regions of high and low pressure, forming what is known as an "acoustic pressure node".

When an object is placed at a specific position within the acoustic pressure node, the forces exerted by the surrounding sound waves counteract the gravitational force, resulting in levitation. By precisely adjusting the distance of the transducer and the reflector, we can control the levitation height and stability of objects.

This unique approach offers several advantages. Firstly, it simplifies the setup by using only a single transducer and a reflector, reducing complexity and cost. Secondly, it enables precise control over the levitation process, allowing for manipulation and positioning of objects with great accuracy. Lastly, it opens up possibilities for various applications, including material handling, microfluidics, and scientific experiments.

In our repository, we provide detailed documentation, source code, and demonstrations to help you understand and implement this acoustic levitation technique. Whether you are a researcher, teacher, hobbyist, or enthusiast, we invite you to explore our repository, contribute to its development, and unlock the potential of acoustic levitation with a single transducer and a reflector.

Join us on this exciting journey of harnessing the power of sound waves to defy gravity. Visit our homepage to delve into our research and learn more about our team.

Assembly

To assemble the Acoustifly you will need the following components:

Acoustifly Components
  • 3D-printed:

    Base, Battery-Cover, Transducer-Holder, Vertical profile

  • Electrical Components:

    UT-1640K-TT-2-R Transducer, Transducer PCB, Acoustifly PCB, EXP-T11-020 3.7V 720mAh Lithium Polymer Battery with JST-PH connector,

  • Others:

    Ruthex M3s threaded inserts, M3 screws

Instructions:

  1. To install the threaded inserts you need to heat them up to 230°C. Best is to use a soldering tip to melt them into the 3D-printed parts.

Solderint Tip with threaded insert Base with threaded insert Transducer holder with threaded inserts Vertical Profile with threaded insert Battery Cover with threaded insert

  1. Mount the Transducer PCB with the Tranducer on the Transducer holder:
Transducer holder with Transducer
  1. Attach it to the vertical profile:

complete transducer holder complete transducer holder with screw

  1. Screw the complete Tranducer Holder to the Base:

Transducer holder to base Transducer holder to base

  1. Put the Transducer cord through the two holes on the Base and solder them to the PCB:

Transducer cords Soldered transducer

  1. Install the Acoustifly PCB into the Base and connect the JST-Connector. After that you can also connect the Battery-cover:

Base with Acoustifly PCB Acoustifly open

  1. Close the cover and enjoy your Acoustifly!:

Transducer holder with Transducer Transducer holder with Transducer

Installation

PlatformIO

Here's a Quickstart Guide on how to use Platform IO with Visual Studio Code.

Arduino IDE

To enable working with the underlying microcontroller (ESP32-S3-MINI-1-N4R2) you are required to install the relevant board package. To do this, open Tools > Board > Boards Manager and install the 'esp32' package by Espressif Systems.
The Board should be set to Adafruit Feather ESP32-S3 2MB PSRAM as this comes closest to the used microcontroller. The relevant options under Tools should be set according to the following image. Make sure to enable USB CDC on Boot, which permits USB communication.

Arduino IDE options

Uploading Code

Since this board does not use a separate usb-to-serial chip, the microcontroller needs to be put into the bootloading state manually. To accomplish this, simply hold down down the BOOT button on the PCB and then quickly press the Reset button once. After releasing the BOOT button, you are now able to upload your code.
! The COM Port is likely to change after entering Boot-mode and may need to be set again in your Software !

Usage

Pinout

PinNameDescription
1LED_YELLOWGREENemits yellow-green light (current sink!)
2LED_REDemits red light (current sink!)
4HBRIDGE_ENABLEHIGH enables the h_bridge/output for both transducers
5HBRIDGE_A_NORMALPWM Input for Transducers A
6HBRIDGE_A_INVERTEDinverted PWM Input for Transducers A
7HBRIDGE_B_NORMALPWM Input for Transducers B
8HBRIDGE_B_INVERTEDinverted PWM Input for Transducers B
9HBRIDGE_CURRENTSENSEread analog voltage to measure transducer current consumption
10BAT_STATEused to read battery voltage
40MISOSCPI
41SCKSCPI
41MOSISCPI

The LEDs are setup in a current sink configuration, meaning a LOW signal will emit light while a HIGH signal will shut them off. Consider the command GPIO.func_out_sel_cfg[PIN].inv_sel = 1 to reverse this.
The HBRIDGE_* inputs require either the typical PWM signal or the inverted one. The easiest way to achieve this is to set both to the same LEDC Channel and invert one output with the already mentioned command.
CURRENTSENSE can be used to measure the current consumption of the h-bridge, so both transducers simultaneously. Current is measured via a 500mΩ high side shunt. The voltage across which is amplified by a factor of 100 and then averaged with a low pass filter. As a result, the average current consumption can be calculated by measuring the voltage on Pin "HBRIDGE_CURRENTSENSE" and dividing it by 50.
BAT_STATE can be used to read the battery voltage. However, it is reduced by a voltage divider. Multiply the measured voltage by 11 to read the correct voltage level.
! As a small sidenote, the used microcontroller ESP32 does not have a very accurate, integrated ADC. However, finding the peak voltage is sufficient to determine the resonant frequency. !

License

This project is licensed under the GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007. Please see the LICENSE file for more details.

Reference

If you would like to reference our project, feel free to support us by citing our research paper:
AcoustiFly: An Open-Source, Low-Cost Acoustic Levitator for Hands-On STEM Education

text
@inproceedings{Suppelt2025,
  title = {AcoustiFly: An Open-Source,  Low-Cost Acoustic Levitator for Hands-On STEM Education},
  url = {http://dx.doi.org/10.1109/educon62633.2025.11016546},
  DOI = {10.1109/educon62633.2025.11016546},
  booktitle = {2025 IEEE Global Engineering Education Conference (EDUCON)},
  publisher = {IEEE},
  author = {Suppelt,  Mark and Suppelt,  Sven and D\"{o}rsam,  Jan Helge and Altmann,  Alexander A. and Kupnik,  Mario},
  year = {2025},
  month = apr,
  pages = {1–5}
}

(or click here if you want to read the paper without having to go through a paywall)

Parts

6
QtyValueFootprintReferences
2MCS08ULHolder:MCS08LSP1, LSP2
2TPTP20SQULHolder:TP20SQTP1, TP2
1LOGOLOGOG***
1MountingHoleMountingHole:MountingHole_3.2mm_M3H1

Similar boards

  • 2 layers18.5 × 11.1 mmSwitch, the printed circuit board in 3D

    Switch

    byrantech/laptop

    anyon_e, a highly integrated, high end, open source laptop. Attempt the impossible.

    6 parts4.3kMIT
  • 2 layers14.6 × 33 mmBrain board SD Card 1, the printed circuit board in 3D

    Brain board SD Card 1

    rusefi/rusefi

    rusefi - GPL internal combustion engine control unit

    6 parts1.2k
  • 2 layers9 × 9 mmDpoint, the printed circuit board in 3D

    Dpoint

    Jcparkyn/dpoint

    Open-source digital stylus using camera tracking and inertial measurements

    6 parts1.1kMIT
  • 2 layers51.5 × 16.6 mmMicroswitchXY Endstop, the printed circuit board in 3D

    MicroswitchXY Endstop

    VoronDesign/Voron-Hardware

    Cool Hardware designed by the Voron Design group

    6 parts1.1kGPL-3.0
  • 2 layers21.9 × 76.7 mmAmiga External, the printed circuit board in 3D

    Amiga External

    hoglet67/RGBtoHDMI

    Bare-metal Raspberry Pi project that provides pixel-perfect sampling of Retro Computer RGB/YUV video and conversion to HDMI

    6 parts1kGPL-3.0
  • 2 layers88.9 × 50.8 mmBusinesscard, the printed circuit board in 3D

    Businesscard

    hackclub/OnBoard

    💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

    6 parts915
  • 2 layers20.3 × 15.2 mmL0 RGB led, the printed circuit board in 3D

    L0 RGB led

    Luos-io/luos_engine

    Open-source and real-time orchestrator for cyber-physical-systems, to easily design, test and deploy embedded applications and digital twins.

    6 parts546MIT
  • 2 layers9 × 3.6 mmOpticalEncoder, the printed circuit board in 3D

    OpticalEncoder

    adamb314/ServoProject

    Getting the most out of your hobby servo

    6 parts545

Questions

How big is the ULHolder PCB?

It measures 31 × 10 mm and has 2 copper layers, 1.6 mm thick.

What parts does the ULHolder use?

6 parts. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the ULHolder KiCad files?

From the TUDA-MUST/AcoustiFly repository on GitHub, at the commit this page was made from: the board is PCB/Transducer Plate/ULHolder.kicad_pcb and its schematic PCB/Transducer Plate/ULHolder.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the ULHolder design in my own project?

Its repository publishes it under the GPL-3.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).