Kronos Robotics and Electronics
Site Map
 
Home Zeus Projects App Notes Downloads Dios Athena Forums
 

DAN138

Laser Communications

  By Michael Simpson

Have you ever wanted to communicate over distances with lasers.   Here I will present an example of the basics needed to do so.  Most laser modules are limited in the max speed that can be utilized due to buffered power filters inside the module or pen.  With the laser module shown you can achieve a baud rate of a approximately 800 baud.  For the receiver we will use a small photo transistor mounted in a brass tube.

 

I mounted the photo transistor inside a small brass tube.  By placing a piece of translucent tape on the end of the tube it will give you something to aim at.  The tube is important as it will shield out the ambient light.

 

Laser module

 

For testing you will need to mount both the laser and the photo transistor.   I used one of those small holder clamps.   The farther away the two are the harder it will be to aim them.   I have communicated as far away as 1000 feet.   However I did have to use a spotting scope to aim the laser.

Schematics

I'm going to show hookup to the Dios Ultra Mini.  However the connection to other Dios form factors are the same.

 

Transmitter :  The transmitter is setup to invert the output of the laser module for 2 reasons.  A it seems to be able to sink more power.  B the Photo transistor inverts the receive side.

The white (+) lead connects to P1 and red to lead to R1

 

Receiver: To increase sensitivity raise the value of R1.

 

Program 1 Download it here

'Laser Transmitter
func main()
   dim x
   sersetup baud,7000
   output 1
   high 1


loop:
  for x = 65 to 90
     serout 1,x
   next

goto loop

endfunc

 

This program will send the characters A-Z to the receiver.  Note the baud rate.    You don't need exact values just make sure the transmit value matches the receive value. 

 

Program 2 Download it here

'Laser Reciever
func main()
   dim x
   sersetup baud,7000,inwait,65000

again:

   serin 0,again,x
   debug x
   goto again

endfunc

With this program we will just wait for input then display the raw value.

 

Final Thoughts

In order to use these techniques in a real application provisions must be made to verify the data is complete.  This could be done in the code stream by sending a start code byte and possibly a check sum.   You could also send the data twice.

 

I welcome other observations or remarks.  Just contact me at msimpson@kronosrobotics.com

Parts

Laser Module Sensor from Radio-Shack part # 277-1101

Photo Transistor

 

DiosPro 40 Pin Chip

Dios Workboard Deluxe

 

Easy RS232 Driver  

DiosPro 28 Pin Chip

Dios 32 Pin Carrier (Carrier #1)

 

9 Pin Cable

Breadboard Regulator

 

Copyright © 2001 - 2007 Kronos Robotics