Voice over laser

So now that I have the laser, I might as well try fun stuff out with it. Like modulating the beam. I know hams have experimented with long-range laser communication, so maybe it could even work.

So I built a poor girl's beam modulator. It is, in essence, a sophisticated optical apparatus which I call a "Laser". It consists of a piezo buzzer stolen from a defunct fire alarm, a piece of a makeup mirror I broke, and lots of Blu-Tack, among other things. The piezo buzzer is directly connected to my laptop's audio Line Out, so I can make it buzz arbitrary signals. The piezo makes the mirror vibrate, which causes deviations in the beam's direction. Kind of like a DMD, except not digital nor micro.

[Image: A mess of wires and components attached to a mint tin using blu-tack. A laser module is pointing at a piezzo buzzer at an acute angle. A piece of mirror is glued onto the piezo buzzer. The laser and piezzo buzzer are connected to wires that lead out of the picture.]

The receiver side is situated a short distance away. It is just a simple wide-spectrum photodiode. It connects to another sound card's Line In. When the beam deviates a little, it won't directly hit the diode any more, and this causes the diode voltage to fluctuate. This should allow us to send information over the channel.

[Image: A photodiode attached to a cassette case using blu-tack. A piece of paper is attached to the base of the diode, and a line of red laser light is visible on the paper, also hitting the diode.]

I found a piece of audio with a folk tune in the beginning followed by a lady reading out numbers. I applied a suppressed-carrier single-sideband modulation at 6 kHz, so as to avoid the hum caused by lighting in the room. It's painfully trivial using SoX and Perl, by the way:

open(S,"sox salakalastaja.wav -t .raw -e signed -|");
open(U,"|sox -b 16 -c 1 -e signed -t .raw -r 44100 ".
       "- ssb.wav sinc 6000 -n 4096");
 
while(not eof(S)) {
  read(S,$a,2);
  print U pack("s",unpack("s",$a) *
          cos(($n++ * 2 * 3.141592653589793 * 6000) / 44100);
}
 
close(U);
close(S);

I still need to make some amplifiers. The piezo could take a lot more voltage, but line level only goes so far. Also, the unamplified output of the photodiode is very weak at -90 dB, so we're almost hitting the 16-bit quantization floor. Here's a sine wave being transmitted over the laser:

[Image: Spectral power plot of three signals with no frequency scale. The blue signal has a single peak scaled as 0 dB. The red signal has a -90 dB peak at the same frequency. The green signal only has background noise. Noise floor in all three is at -120 dB.]

However, audio from initial crude testing is actually pretty intelligible. In the beginning, you can hear the 50 Hz buzz caused by flickering lamps, and then me tuning the heterodyne to 6.000 kHz. The noise mostly comes from 16-bit quantization/dithering.

8 comments:

  1. I don't know if you are aware of this guys site, but it has a nice simple AM modulator for laser pointers with common easy to find parts
    http://www.kolumbus.fi/michael.fletcher/lasermod.htm

    But your system is very neat and requires zero modifications to the laser source.

    ReplyDelete
    Replies
    1. How cool is that! Thanks a lot for the link.

      Delete
  2. Nice touch using the Lincolnshire Poacher number station as your signal.

    ReplyDelete
  3. oh you had to do it! the most freaky tune in all of the known world!

    ReplyDelete
  4. Another nice and easy way is having the laser directly modulated by the tx pin of a µController with a phototransistor at a level shifter connected to a computer's serial port.
    Of course it needs some blocking from ambient light, placing the receiver in a pringles can and pointing the laser at the diffuse lid did a good job for me.

    ReplyDelete
  5. A slightly lower tech method of this was done on Rough Science (series 4, episode 2 "communication"). Laser pointer, old radio and tin can... worked really well over about 100m in full daylight. Hard to find show but typically YT provides http://www.youtube.com/watch?v=e-wrF728ZNo

    ReplyDelete
  6. When I was in my teens, I built a pair of "walkie talkies" using flashlights, LEDs and pieces of a solar cell. A 4PDT toggle switch handled the transmit/receive operation. A small amplifier (LM386) and a transistor preamp were the heart of the system. Bias the LEDS (4 in parallel) on, feed audio thru a capacitor, and that was it... Amplitude Modulated light! These units had a range of only about 50' but I didn't care... I had proved my concept! (They needed better optics! I was aiming the LED's at the reflector and also using it to crudely focus onto the piece of solar cell. The audio quality was actually quite good! When I fed music into it, the receiver was reproducing the full audio spectrum! :)

    BTW, did you know that an LED also works "in reverse"? That's right... it creates a tiny voltage when truck by light close to its own frequency! You can use an LED at the receiver end. I confirmed this in my own workshop, not too long ago, so I know it works. :) Happy tinkering! :)

    ReplyDelete
  7. Hello Oona,

    It is pretty inspiring and practical project.

    When I saw your project I just thought about sending digital samples over serial port using couple of optocouplers and diods. Which will provide clear sound output as you can build isolated circuits. You may also send some commands over serial, like volume up and down. I think pcm data will be hard to send but maybe lossy format like ogg is going to be easier. There are already codecs available for teensy and arduino.

    The only issue is if the frequency of laser and photodiode is fast enough to reach high baud rates.

    Here is a schematic that I drafted there should be ground and V+ on diode side but I forgot to draw it.

    Just another pure idea for whom who interested in... :)

    https://drive.google.com/file/d/0BwBnfbrThVdBNXFDMDBVMVE0Sms/view?usp=sharing

    ReplyDelete

The comments section is pre-moderated; it will take some time for the comment to show up.

You might want to check out the FAQ first.