Introduction

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

Status

2018-04-01: I have a box with the piezo speaker mounted in it. Still a bit stuck on the auto-play-on-USB-plugin stuff. First, I could just play back audio from a specific directory first.
2017-10-10: basically I'm stuck on the software part, unable to decide how I should solve how to play audio files on USB stick plugin, I've got several hints but no definite solution. Getting more hints like "why *don't* you try X" are confusing the issue more. Also a bit stuck on the construction part (housing, etc.)
2017-06-24: successfully played audio back from a raspberry pi 3, running the amplifier from one of the USB ports. The rpi3 shows a little lightning bolt indicating undervoltage while playing.
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:

just play back stuff in a loop from a fixed directory on the sd card, using this script that is started on boot (using systemd or an @boot cronjob)

file transfer can be done using winscp?

Hardware

block diagram

50 kHz sine wave

100 kHz sine wave

150 kHz sine wave

TDA2030 amplifier schematic

speaker dimensions

The hardware consists of the following parts:

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

A USB audio card to create the analog ultrasonic signal

An amplifier to amplify the ultrasonic signal

A speaker to turn the signal into actual ultrasonic audio

media player

As a media player, I'm using a raspberry pi, in particular a raspberry pi 3.

The player hardware needs at least two high-speed USB 2.0 ports, one for the USB stick containing the wav files and another one for the USB audio card.
Bandwidth needed over USB is equivalent to 2-channel 16-bit audio at 384 kHz, which is 12.28 mbps, exceeding USB 1.0 full-speed throughput of 12 mbps.

The main use case of the entire player is as follows:

user switches on the ultrasonic player

the user plugs in a USB stick (formatted as FAT32 for windows compatibility) with some wav files

the player automatically mounts the USB stick as a read-only device, e.g. using udev. Mounting it read-only should prevent corruption of file data on the USB stick.

the player automatically plays all files from the USB stick, on repeat.

when done playing, the user just pulls out the USB stick, the playback process is stopped automatically.

Amplifier

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.

Speaker

I'm considering this one:
Vifa/Tymphany XT25SC90-04.
This speaker is also used in other products that produce ultrasonic audio.
Price: about E22,-

Power

Waveform of AL697 running into 1 kOhm load

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 into a 1 kOhm load

switching frequency is about 15 kHz

peak-peak ripple of about 200 mV

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:

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.

Software

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.