Abstract
It's not magic; it's science! Build your own acoustic levitator to make objects float in midair using invisible sound waves.
Summary
Previous Arduino experience is recommended. See our How to Use an Arduino page for tutorials.
A kit is available from our partner Home Science Tools®. See the Materials section for details.
Pets may be sensitive to ultrasonic sound.
Objective
Design, build, and test an ultrasonic levitator.
Introduction
Sound waves travel through the air as vibrations. A moving source (like a speaker) bumps into the nearby air particles, which in turn bump into other air particles, and so on. Regions where the air particles are closer together, called compressions, have a higher pressure. Regions where they are farther apart, called rarefactions, have a lower pressure. Rather than drawing individual air particles, we can represent a sound wave (or pressure wave) graphically with a sine wave, as shown in Figure 1. The y-axis of this graph represents pressure, so the peaks correspond to regions of high pressure, and the valleys correspond to regions of low pressure.

Something interesting happens when two waves overlap. The amplitudes, or heights, of the waves add up. At any given moment, the height of a wave can be positive (above zero, or the average value of the wave) or negative (below zero). When both heights are positive, the amplitudes combine to make the resulting wave bigger. This is called constructive interference. When one height is positive and the other is negative, the resulting wave becomes smaller. This is called destructive interference. If you aim two identical waves directly at each other, they can combine to create a standing wave as shown in Figure 2. The blue wave travels from left to right. The red wave travels from right to left. They combine to form the black wave, which appears to oscillate in place without moving in either direction. The standing wave has nodes, represented by red dots, where the waves perfectly cancel each other out. These nodes do not move at all. Remember that this sine wave is a graphical representation of the pressure in a sound wave. This means that the nodes are points where the pressure does not change.

A sound's frequency, or pitch, is the number of waves that pass a point in one second. Frequency is measured in hertz (Hz). Typical human hearing range goes from about 20 Hz up to around 20,000 Hz, or 20 kilohertz (kHz). The exact range can vary from person to person and with age. Sounds with a frequency above 20 kHz are in the ultrasonic range. Humans cannot hear these sounds, but many animals can, including common household pets like dogs and cats. In this project, you will use ultrasonic transmitters, also called transducers. They are like speakers that are designed specifically to produce ultrasonic sound. This works because they have a resonant frequency - the frequency at which they vibrate the most - in the ultrasonic range. When you aim two of these transmitters at each other and drive them at the same frequency, they create an ultrasonic standing wave. Lightweight objects, like bits of foam, can get trapped in the resulting pressure nodes, as shown in Figure 3. The physics behind why the particles get trapped in the pressure nodes (as opposed to the pressure anti-nodes, which are displacement nodes, where pressure changes are at a maximum but the air is not moving) is somewhat complicated. See the references in the Bibliography for a more detailed explanation. Qualitatively, you can think of the pressure nodes as points of minimum potential energy, so the particles will move towards those points, just like a ball rolling down a hill to the bottom of a valley.

Do you think people will believe that the foam is truly levitating, or will they think it is an optical illusion or trick? Build your own ultrasonic levitator and find out!
Terms and Concepts
- Wave
- Vibration
- Compression
- Pressure
- Rarefaction
- Amplitude
- Constructive interference
- Destructive interference
- Standing wave
- Node
- Hertz
- Transmitter
- Transducer
Questions
- How do sound waves travel through the air?
- How is a standing wave created?
- How does ultrasonic levitation work?
Bibliography
Follow the first few tutorials in this series if you have never used an Arduino before:
- Finio, B. (n.d.). How to Use an Arduino. Science Buddies. Retrieved July 24, 2025
The following ultrasonic levitators all provided inspiration for this project:
- mukeshnjangra (n.d.). Making an Acoustic Levitator or Ultrasonic Levitation. Instructables. Retrieved July 24, 2025
- Physics Girl (2017, December 13). I built an acoustic LEVITATOR! Making liquid float on air. YouTube. Retrieved July 24, 2025
- Edison Science Corner (2020, August 14). How to make Ultrasonic levitator at home | full theory explained | Acoustic levitator. YouTube. Retrieved July 24, 2025
Check out these resources to learn more about the physics behind ultrasonic levitation:
- Harvard Natural Sciences Lecture Demonstrations (2017, February 23). Acoustic Standing Waves and the Levitation of Small Objects. YouTube. Retrieved July 24, 2025
- Jackson, D. and Chang, M. (2021). Acoustic levitation and the acoustic radiation force. American Journal of Physics. Retrieved July 24, 2025
Materials and Equipment 
Recommended Project Supplies
-
Electronics Kit for Arduino, available from our partner Home Science Tools®.
- Note: This project will work with the Arduino UNO R3, UNO R4 Minima, UNO R4 WiFi, and compatible third-party boards.
- Windows or Mac computer. See this page if you have a Chromebook. Your computer will need:
- Access to the Arduino IDE, either installed local version or web-based editor. Watch this video for a comparison of the two options.
- USB port. The Science Buddies kit comes with a USB-A to C cable. The "C" end plugs into the Arduino, and the "A" end plugs into your computer. You will need an adapter or different cable if your computer only has USB-C ports. Watch this video to learn about the different types of cables and adapters.
- Additional parts (not included in the kit) must be purchased separately. Note that many parts are available in bulk on Amazon. You can purchase individual parts from electronics vendors like SparkFun, Adafruit, or Jameco Electronics.
- Ultrasonic transmitters (2)
- Alligator clip leads (4)
- L293D H-bridge motor driver (1)
- 12V wall adapter power supply with 5.5x2.1mm plug (1)
- Female 5.5x2.1mm plug adapter (1)
- 74HC04N inverter (1)
- Additional jumper wires (assorted)
- Tweezers
- Small pieces of a styrofoam block (you can salvage from packaging material instead of buying new)
- Optional: construction materials to build a stand, such as wood, cardboard, or building blocks, and hot glue
Disclaimer: Science Buddies participates in affiliate programs with Home Science Tools®, Amazon.com, Carolina Biological, and Jameco Electronics. Proceeds from the affiliate programs help support Science Buddies, a 501(c)(3) public charity, and keep our resources free for everyone. Our top priority is student learning. If you have any comments (positive or negative) related to purchases you've made for science projects from recommendations on our site, please let us know. Write to us at [email protected].
Experimental Procedure

Note: this project has you start out by powering your levitator with a 9 volt battery. Your levitator might not work right away at this voltage. That is OK. The procedure contains instructions to test progressively higher voltages.
- Assemble the circuit as shown in Figure 4. You can also access a Tinkercad Circuits version of the circuit here. Note that the power and ground buses on your breadboard may be reversed from what is shown in the diagram. In the diagram, the power (+) buses are on the left and the ground (-) buses are on the right.
- Connect the Arduino's 5V pin to the right-side power bus.
- Connect one of the Arduino's GND pins to one of the ground buses. Connect the two ground buses with a jumper wire.
- Insert the H-bridge into the breadboard so it is spanning the gap in the middle, with the semicircular notch pointed towards the top of the breadboard. The H-bridge's pins are numbered 1 through 16, going counterclockwise from the top left. Connect them as follows. We will leave some of the pins empty for now:
- Pin 1 to 5V (right-side power bus)
- Pin 2 to Arduino pin 3
- Pin 4 to ground
- Pin 5 to ground
- Pin 7 to ground
- Pin 8 to the left-side power bus (you have not connected an external power supply yet)
- Pin 12 to ground
- Pin 13 to ground
- Pin 16 to 5V (right-side power bus). This provides the logic-level voltage for the H-bridge to operate with on/off signals from the Arduino.
- Connect your ultrasonic transmitters to the breadboard using alligator clips and jumper wires (Figure 5).
- Connect one pin from each transmitter to H-bridge pin 3.
- Connect one pin from each transmitter to H-bridge pin 6.
- Connect an external power supply to the power and ground buses on the left side of your breadboard. This provides a higher voltage to power the ultrasonic transmitters.
- You can start out with a 9V battery. Use a snap connector and barrel jack adapter to connect it to the breadboard.
- Note that it is important for your entire circuit to have a common ground, which is why the breadboard ground buses, the battery's negative wire, and the Arduino GND pin are all connected.
- It is important not to connect the two different positive power buses, which have two different voltages (5V and 9V). This will create a short circuit and can damage your Arduino.


- Download the ultrasonic_levitator_digitalWrite.ino example code. Read through the commented code.
- The example code is written for an Arduino Uno R4 or compatible third-party board. It uses the
digitalWriteanddelayfunctions to rapidly toggle an Arduino pin on and off, generating an approximate 40 kHz signal. Since thedigitalWritecommand takes some time to run, the timing is not exact, but the signal should be reasonably close to 40 kHz. - If you are using an Arduino Uno R3 or a compatible board, you can use the Arduino
tonefunction instead to generate a signal at almost exactly 40 kHz. (You cannot use thetonefunction on an Uno R4 because it results in an actual output signal of 41.67 kHz, which is too far past the transmitter's resonant frequency.)
- The example code is written for an Arduino Uno R4 or compatible third-party board. It uses the
- Upload the code to your Arduino. Remember that you cannot hear ultrasonic sound, and there will be no visual indication that your transmitters are on, so it can be hard to tell if your circuit is working at first. That is OK.
- Hold one of the transmitters a few centimeters above the other, as shown in Figure 3.
- Use a pair of tweezers to carefully place a small bit of foam midair in between the two transmitters. What happens? It can take some practice. Try again and don't get discouraged if the foam falls. Make sure you do not pinch the foam too hard or, it may stick to the tweezers.
- If you still have difficulty getting the foam to float, try upgrading to a higher voltage power supply, such as a 12V wall adapter instead of a 9V battery.
- Important: there are two ways to provide a higher voltage to your breadboard. You can plug the power supply directly into your Arduino's barrel jack, then connect the Arduino's Vin pin to your breadboard's power bus. However, it is only safe to do this if your power supply's voltage is below your Arduino's maximum rated input voltage. For higher voltage power supplies, you should connect directly to the breadboard using the barrel jack adapter, as shown in Figure 5.
- To get even more powerful output from your transmitters, add an inverter and rewire your circuit as shown in Figure 6. This configuration doubles the voltage applied to the transmitters. You can also access a Tinkercad Circuits version of the circuit here.
- Place the inverter in the breadboard across the middle gap. Make sure the semicircular notch is facing toward the top of the breadboard. Like the H-bridge, its pins are numbered counterclockwise, starting with 1 in the top left.
- Connect pin 7 to the ground bus.
- Connect pin 14 to 5V (right-side power bus).
- Remove the jumper wire connecting H-bridge pin 7 to the ground bus.
- Use a new jumper wire to connect H-bridge pin 7 to inverter pin 2.
- Use another jumper wire to connect H-bridge pin 2 to inverter pin 1.
- Place the inverter in the breadboard across the middle gap. Make sure the semicircular notch is facing toward the top of the breadboard. Like the H-bridge, its pins are numbered counterclockwise, starting with 1 in the top left.

- Test your levitator again. If you can get one piece of foam to levitate, try adding more. Can you get multiple pieces to levitate at once, as shown in Figure 7? There are many more things you can do with this project. See the Variations section for more ideas.

Ask an Expert
Global Goals
The United Nations Sustainable Development Goals (UNSDGs) are a blueprint to achieve a better and more sustainable future for all.
Variations
- Build a stand for your ultrasonic levitator to hold the transmitters in place.
- Try using a syringe to dispense and levitate drops of water, as shown in this video.
- Look up the relationship between the speed of sound, frequency, and wavelength. How is the wavelength of the sound related to the distance between nodes in a standing wave? Is this distance consistent with what you observe in your experiment?
- Does acoustic levitation need to be ultrasonic? Can you get this experiment to work with regular speakers?
- Can you build an ultrasonic levitator with a dome-shaped array of multiple ultrasonic transmitters on each side (see Bibliography)?
- Can you control the phase of the drive signal between multiple transmitters to move an object around in space? Due to the precise timing required, this may require more advanced drive electronics than an Arduino.
- If you have access to an oscilloscope, experiment with different ways to generate a 40 kHz signal with an Arduino. Use the oscilloscope to measure the actual output frequency of the resulting signal. How close can you get to 40 kHz?
- Measure your transmitter's frequency response by driving it with different frequencies, as demonstrated in the video at the top of this page. Use a two-channel oscilloscope to measure A) the actual frequency of your output signal and B) the peak-to-peak voltage of the resulting signal on an ultrasonic receiver held at a fixed distance from the transmitter. What is the transmitter's resonant frequency? If you have access to a function generator, you can use it to generate the drive signal instead of an Arduino, replacing the input to H-bridge pin 2 with the output from the function generator.
Careers
If you like this project, you might enjoy exploring these related careers:
Contact Us
Our kits are developed in partnership with Home Science Tools®. If you have purchased a kit for this project, Home Science Tools® is pleased to answer any questions.In your email, please follow these instructions:
- Include your Home Science Tools® order number.
- Please describe how you need help as thoroughly as possible:
Examples
Good Question I'm trying to do Experimental Procedure step #5, "Scrape the insulation from the wire. . ." How do I know when I've scraped enough?
Good Question I'm at Experimental Procedure step #7, "Move the magnet back and forth . . ." and the LED is not lighting up.
Bad Question I don't understand the instructions. Help!
Good Question I am purchasing my materials. Can I substitute a 1N34 diode for the 1N25 diode called for in the material list?
Bad Question Can I use a different part?
Contact Support










