Difference between revisions of "UltrasonicPlayer"

From RevSpace
Jump to: navigation, search
Line 116: Line 116:
* peak-peak ripple of about 200 mV
* peak-peak ripple of about 200 mV
Measurement for board with "AL697"-chip (I've got three of these):
Measurement for board with "AL697"-chip (I've got three of these): into 1 kOhm load

Revision as of 00:10, 25 June 2017

Project UltrasonicPlayer
An inexpensive DIY ultrasonic audio player
Status In progress
Contact bertrik
Last Update 2017-06-25


This project is about a do-it-yourself portable ultrasonic audio player, built out of inexpensive modules available on sites like AliExpress.

A typical use case for this is a kind of "lure" for biology researchers to improve the results of trying to catch bats in a net. The player emulates (social) bat calls which attracts the bats to the net, increasing the chance for them to be caught.

Another use case is to use it as an educational tool, to train people in the use of a bat detector. The player makes it easy to play the exact same sound again and again, allowing people to experiment with finding the best setting for their equipment and to improve their determination skills.

The ultrasonic player consists of a USB sound card with high sampling rate plus a speaker to turn it into actual ultrasonic audio. A built-in Linux single-board-computer (something like a Raspberry Pi) controls playback of audio files. The idea is that you prepare one or more USB sticks with bat calls and just plug one in the player, then the player automatically plays them in a loop


 2017-06-18: realized that an orange pi zero is not going to work: it doesn't have enough USB ports
 2017-06-16: playing a bit with udev scripts to automate actions upon USB stick plugin: I can do short actions (like mount/unmount) but no longer running actions from udev!
 2017-05-01: replaced a feedback resistor on the amplifier, to reduce the gain from about 30 to 3, this also makes it easier to adjust the gain using the potmeter
 2017-04-30: found the schematic for the amplifier, plan to modify it for lower gain (better level control and higher bandwidth)
 2017-04-16: created a video of current progress.
 2016-10-11: received the amplifier boards.
 2016-10-02: ordered the parts (USB audio, amplifier, a few step-up circuits).

Next steps:

  • get/buy a raspberry pi (>= version 2) and verify playback (check that playback from stick to USB sound card is fast enough)
    • get power consumption estimate for complete system including raspberry pi: 0.61A from 5V for everything (rpi3/ac-dc/usb-audio/amplifier) except the USB stick
    • calculate theoretical run-time from power consumption
  • order USB cables from AliExpress:
    • get some right-angled USB connectors so I can power it from a USB battery while keeping things compact
    • get some USB power splitters to connect up the 5v-12v step-up converter
  • work some more on automatically mounting USB stick and playing the file on it
    • simple alternative: just put in a USB stick and reboot
    • simplest alternative: just put the audio files on the sd card and forget about the USB stick for now


block diagram
50 kHz sine wave
100 kHz sine wave
150 kHz sine wave
TDA2030 amplifier schematic

The hardware consists of the following parts:

  1. Some kind of media player which takes care of the storage and playback of the ultrasonic files, for example a single-board computer like a Raspberry Pi
  2. A USB audio card to create the analog ultrasonic signal
  3. An amplifier to amplify the ultrasonic signal
  4. A speaker to turn the signal into actual ultrasonic audio

media player

This is currently the greatest unknown where requirements are most vague.

This will be some kind of Linux single board computer (e.g. a Raspberry Pi / Orange Pi Zero / etc) working as follows:

  • the user puts in a USB stick (formatted as FAT32 for windows compatibility) with some wav files, and possibly a playlist file (.m3u)
  • the player mounts the USB stick as a read-only device, e.g. using udev
  • the player just plays all files, on repeat
  • when done playing, the user pulls out the USB stick, the playback process is stopped automatically

See also:


  • Starting playback upon USB stick plugin, using udev?
  • Stopping playback upon USB stick plugout, using udev?
  • Linux experts saying: "You can't pull the stick without unmounting! That would be bad!"

USB sound card

I'm considering this one: USB sound card based on a SA9227+PCM5102 chip.

It allows a maximum sample rate of up to 384 kHz, or equivalently audio op to about 170 kHz. Price: about E30,- On the right, rom top to bottom: the signal at 50 kHz, 100 kHz, 150 kHz respectively

Measurements of amplitude vs frequency:

  • on the scope you can clearly see the sampling steps: at 100 kHz one wave is sampled using only 3.84 samples.
  • the amplitude drops a bit when going higher, but only like 30% at 150 kHz compared to 50 kHz


I'm considering this TDA2030-based module: amplifier board based on a TDA2030 chip.

The TDA2030 chip has a claimed audio bandwidth of up to 140 kHz. Price: about E1,-

Measurements with a separate power supply for the amplifier:

  • seems to be able to handle 50 kHz and 150 kHz audio input equally
  • additionally, it seems the amplifier still works down to 5 or 6V power supply voltage.

Modification: replace R5 (150k) with a 15k resistor. This reduces the gain of the amplifier from about 30 to 3 times, making adjustment of input level easier and also improves bandwidth. We don't need a gain of 30, the input signal is already at about 1V level.


I'm considering this one: Vifa/Tymphany XT25SC90-04.

This speaker is also used in other products that produce ultrasonic audio.

Price: about E22,-


I'm thinking of using a 5V USB battery. There are plenty of models to choose from, in varying capacity ranges and prices.

To supply the amplifier with 12V, I'm considering this voltage converter: 5V-to-12V step-up cable or possibly this USB 5V to 12V converter. A consideration for the step-up converter is that the switching frequency is considerably higher than any ultrasonics frequencies we are interested in.

Measurement results for the "AL519" converter, running into a 1 kOhm load:

  • switching period is about 134 us (7.5 kHz)
  • peak-peak ripple of about 200 mV

Measurement for board with "AL697"-chip (I've got three of these): into 1 kOhm load

  • TODO

Current measurement (total current over USB)

  • normally 0.36A (USB audio + step-up + amplifier)
  • when playing: 0.39A
  • current consumed by USB audio: 0.18A idle, 0.19 when playing

Mounting it in a case

parts to be integrated

The various parts have the following dimensions (length x width x height) approximately:

  • USB battery: 111x68x?? mm (without plugs)
  • USB audio: 66x51 mm (PCB only), 77x51 mm (including connectors, without plugs)
  • speaker: 66 mm (outside diameter), 52 (mounting hole diameter)
  • orange pi zero: 48x46 mm(PCB only), 54x46 mm (including USB and sd card connector, without USB plug)
  • raspberry pi 3
  • amplifier: 32x25x24mm
  • step-up converter: 42x15x12 mm (without plugs)


  • With a orange pi zero, there are not enough USB ports: we need one for a USB stick and another one for the USB audio, the orange pi zero has only one.
  • Put it all in a practical case. For the first prototype, I'm thinking about just laser-cutting a basic enclosure, then use zip-ties to tie stuff to the inside of the box. Make part of the USB battery stick out, so we can use it as an on/off switch and allow access to the charge port.

Perhaps I can use a raspberry pi to solve the USB port problem, see this table on wikipedia for comparison. For example the model B, generation 1+ has four USB port. Also it has modest power requirements.


As an operating system, I prefer Debian Linux, because I'm familiar with it on the desktop. This distribution allows a small basic minimal image without a graphical environment and systemd support.

Software will be added to my batplayer github archive, things like:

  • playback scripts, to scan for wav-files and play them
  • udev scripts, to automatically mount and unmount USB sticks
  • etc.

To play back an audio file, I just use aplay (from package alsa-utils), for example:

aplay -D plughw:CARD=Audio,DEV=0 noise.wav -v

Audio files

Suitable audio files for playback:

  • the 'synthesized' versions from batcalls.com by AviSoft, these are mostly mono 16-bit PCM, sampled at 250000 Hz