Inspiration

A brain blast, to be honest.

What it does

LaserCom takes user input in the Arduino serial port, decomposes the data into a stream of bits, and transmits them via laser light. The receiver then decodes these bits, using an asynchronous laser clock to determine when the received data is valid, and outputs the decoded data to the serial monitor. After a message is sent, control is transferred to the previously receiving controller and it becomes the new transmitter. Control can be passed back and forth like this indefinitely.

How I built it

We split up the project into transmission and reception of light signals. In the end, we found our solution was much more robust than we thought it would be so we decided to mash the two together and make a fully functional instant messenger.

Challenges I ran into

The photo resistors responded very strangely to the laser pulses initially and it took us a long time to dial in the laser pulse widths to consistently send accurate data. We also spent a lot of our time optimizing the way in which we read our data such that we could maximize our baud rate.

Accomplishments that I'm proud of

We successfully got our two computers to communicate back and forth while exceeding a baud rate of 100! Our initial measurements showed that we would be limited to a transmission rate of 20 bits per second but we shattered that goal.

What I learned

We learned how to implement UART communication protocols in the Arduino utilizing interrupts and handshaking to transfer transmission control during operation.

What's next for LaserCom

We'd like to find a way to more evenly share control of the messaging interface. Currently after you send a message you must wait to receive a message before you can send another. We would also like to use higher quality lasers to achieve a much greater communication range.

Built With

Share this project:

Updates