# Can someone please explain to me what an acoustic modem is and how to make one?

Discussion in 'Wireless & RF Design' started by zero_coke, Sep 28, 2011.

1. ### zero_coke Thread Starter Active Member

Apr 22, 2009
294
1
We have a school project and we're supposed to send a file from one computer to another using MATLAB. \

We are able to make different beep noise for a 0 and 1 but on the receiving end we just get an analog graph and we don't know what to do...

Last edited: Oct 11, 2011

Apr 22, 2009
294
1
Anyone?

Apr 5, 2008
15,806
2,390
4. ### davebee Well-Known Member

Oct 22, 2008
539
46
This all sounds fine, so far.

On the receiving end, do you have a way to convert the tones back to ones and zeroes, and to distinguish between individual bits?

5. ### zero_coke Thread Starter Active Member

Apr 22, 2009
294
1
I don't thats the problem. I am able to record the waveform of the signal and all, and I have a graph with some 500,000 data points, but I don't know how to analyze it.

Last edited: Oct 11, 2011
6. ### davebee Well-Known Member

Oct 22, 2008
539
46
Usually for an acoustic receiver, you would not record the incoming audio; instead, you would use a circuit that converted the audio back to a bit value based on its frequency.

"Modem" is short for Modulate-Demodulate, but the demodulation of the tone seems to be the part that you're missing.

For example, you might have 1000 Hz represent "0" and 2000 Hz represent "1".

The sender might send a continuous tone of 1000 Hz when at rest.

When data is to be sent, the message would be broken down into bytes, then each byte would be sent as a stream of individual bits just like for RS232 serial transmission with a start bit, data bits, a stop bit, at a specific baud rate.

For sending through an acoustic modem, the logic level change from rest to the start bit would modulate the transmitted tone's frequency from 1000 Hz to 2000 Hz.

At the receiver, those tone changes would be detected by an electronic circuit that would "demodulate" the tone by emitting a "0" for 1000 Hz and "1" for 2000 Hz.

Those bits would be reassembled into a byte again just as for RS232 serial, and the bytes would be built back into the received message.

7. ### BillO Distinguished Member

Nov 24, 2008
985
136
davebee has it right. However, I'd stay away from frequencies that are multiples of each other as it is difficult to eliminate and account for first and second order harmonics without using HiFi quality equipment and pure sinusoidal frequencies. Not sure what frequencies you are actually using, but try to stay away from simple multiples.

There are basically 3 ways you can demodulate the signal at the other end. Both involve filters. The first consists of two band pass filters with fairly hi-q. 12db per octave would be desirable, but 6db per octave might be enough. The outputs of these filters can then be rectified and passed on to comparator circuits and from there to the logic. You might be able to get away with high-pass and low-pass filters who's cross-over point is between the chosen frequencies if the line quality is good.

The 2nd and best way uses two frequencies that are very close to each other Maybe 5000hz and 5100hz. The receiver uses a third frequency, like 4970hz, and mixes that with the incoming frequency. You will then get heterodyne (beat) frequencies at 30hz and 130hz. Pass this mixed signal through a low pass filter to isolate the 30 and 130 hz. Then you can use the band pass arrangement like above. This method has much greater noise immunity.

The final method is the quick and dirty method. Just use one frequency. tone=1, no tone=0. The receiver can then be a simple single band pass filter to a rectifier, to a comparator. You'll need a nice clean line though for this one to work.

8. ### zero_coke Thread Starter Active Member

Apr 22, 2009
294
1
Thank you all for your help! I will do my best.