We present a simple example of data transmission using ultrasound, using a standard laptop using gnuradio. We simply make use of the laptops own in-built speaker, along with a cheap microphone.

Gnuradio is an excellent suite of programs, which allows the creation of Software Defined Radios.

The following is the flow diagram we designed using the gnuradio-companion program, which generates the necessary python

code for us. We make use of a carrier frequency of 23KHz, which is above the range of human hearing and a sample rate of 48KHz, which

allows us to produce this frequency. We tried PSK and FSK, but found FSK worked most reliably for this, however further research into the best modulation technique is necessary.

We make use of the packet encoder/decoder modules, in order to handle all good stuff like correctly aligning bits to the byte boundary etc.

One very important setting you must do is to make sure the gain of the final output, is around 0.5, as if not set to around this, you will get audible output.

Further research:

I’m looking to modify the generated python code, to automatically iterate through a wide range of different potential baud rates and different modulators, in order to find the most effective configuration to use.

Download

Download the gnuradio-companion file.

With thanks to the folks on #gnuradio for their help

46 Comments