Project: Arduino to Arduino Laser Comm.

Hello all,

As a project (I have 2 Arduino UNOs) I'm wanting to create an environment where two Arduino devices can communicate with each other via a laser carrier signal.

Starting off simple, I want one Arduino to be the receiver and one to be the transmitter. Ideally getting one Arduino to send an 8 or 16 bit binary "string" to the other Arduino. The second Arduino would then be able to decipher the transmitted string and display it so we can acknowledge transmission integrity.


Arduino1 [Laser Diode] ---> 11001011 ----> [Optical Sensor/Resistor] Arduino2 [Output] -----> 11001011.

I've tried a few things and nothing seems to work the way I want it to. The signal seems to get jumbled up from one device to the other.

Any advice / suggestions would be greatly appreciated.

Thanks in advance!

Post a schematic of how you have things hooked up, what parts you are using, etc. We can be much more helpful when given this data.

-- The Gadget Shield: accelerometer, RGB LED, IR transmit/receive, speaker, microphone, light sensor, potentiometer, pushbuttons

Initially we’re having the experiment consist of just the receiving Arduino. And instead of a laser as the carrier we’re using our TV remote (haha) for an IR source.

The second Arduino’s circuitry is extremely simple. We have a IR resister hooked up to power and a pin on the Arduino. In a closed room this will spit out values around 900-950 in the serial viewer, and when we push the buttons on the remote it will drop to a number less than 50.

So in the code we basically just assigned all numbers above 500 to be LOW (0s) and the rest to be HIGH (1s).

Thus we could get the serial viewer to spit out a series of zeros and then the ‘signal’ from the remote (1s AND 0s) when we pushed the button. Looking something like…


The problem we have is the ‘output’ like 11000101 above is only sometimes consistent. So we’re thinking obviously something is flawed here. We’re not the most experienced with electronics so we’re less asking for you to e-build us something and more asking for general “make sure you think of x when you do y” knowledge :slight_smile:

Edit: Also we would like to have the receiving device maybe filter out all the needless 0s, any thoughts?

OK, first: what is an "IR resistor" :)

Do you mean IR photodiode? or phototransistor?

It sounds like the circuit can't keep up with the speed of the pulses on the real remote control. I would recommend the following:

  • Connect your "IR resistor" ;) between the pin on the Arduino and ground instead of power. Don't use an analog pin, use a digital pin.
  • Enable the pullup resistor on the digital pin.

Now the pin should read high normally. When it sees IR light the pin will read low. This should work faster than what you have now.

If it's still not fast enough you can try adding a 1k resistor from the pin to +5V (that replaces the internal pullup with a "stronger" external pullup, i.e., lower resistor value).

-- The Rugged Motor Driver: two H-bridges, more power than an L298, fully protected

Did you see this:

i m working on the same topic a with arduino uno (2 units) and working to make transceiver to transfer data between two computers using laser and i will be glad if you can provide me with help on the same