Project 07 · Build note

Point-to-Point Laser Communication System

Send messages with nothing but light: a 4-bit laser blink code between two stations — 8 of 10 end-to-end trials received correctly.

Context
BU ME 210, Introduction to Engineering Design
Date
Spring 2023
Team
4 people
Duration
~3 months
My scope
Transmitter code and encoding/transmission protocol · Co-owner of both station housings · Part of the receiver code
Status
The two stations are separated but still work
End-to-end trials
8/10 successful
against a warehouse use case where the link needs to be 100% infallible
Message vocabulary
16 possible vs 10 required
four bits covered the requirement with six messages of margin
Bit interval
50 ms per blink
picked for speed — doubling it is virtually unnoticeable, so I'd trade it for margin
Team / duration
4 people, ~3 months
self-funded beyond school parts — about $50–75 of our own money went to components
Watch a message cross the room: align until the receiver's green light says the beam is landing, then four blinks of the laser carry it to the far screen.

A class project from early in my college career — ME 210, BU’s Introduction to Engineering Design, Spring 2023: four of us, about three months, and about $50–75 of our own money on components beyond parts we could get at school. The transmitter has a laser, the receiver a light sensor; blinks encode a message, and the receiver decodes and displays it. The use case: a warehouse-style setting where anything else is slow or unreliable — there, the link needs to be 100% infallible. I wrote the transmitter code and the encoding protocol in the Arduino IDE, plus part of the receiver code, which needed significantly less; the two housings I co-built, and two teammates split the electronics, the bearing, and the base between them.

The encoding: four bits, sixteen messages

Morse code was the starting idea; we dropped it for fixed-length blinks.

We decided on four blinks of light — each one there or not, four bits, sixteen possible messages.

Sixteen covered our 10-message requirement with margin; both stations share one lookup table of blink meanings, and each blink runs 50 ms — quick messages were the point of the system. The messages themselves were preset phrases — punch a three-digit code on the keypad to call one up, then hit send.

Alignment before transmission

The laser had a very narrow field of view, so we had to be very accurate with it — that drove the whole flow. The transmitter is two boxes joined by a bearing so the top swivels over the base, with handles for aiming. Press a key to align, the laser comes on, and once the green light on the receiver confirms the beam is landing, any key on the transmitter confirms it before message bits fly. The receiver itself only ever waits for one of two things — alignment first, then the message — and after each message it drops back to waiting for alignment.

'Press Key if Aligned' — a human confirms the beam is on target before any message goes out.

The stations were scrounged and cut: a laser-cut base with interlocking dovetail intersections, a top enclosure repurposed from another project, and a keypad and an LCD bought for message entry and readout.

Breadboard wired to an Arduino Uno holds a clear LED, green LED, and resistors; a red arrow annotation reads 'long'.
Prototype wiring with a note-to-self marking the LED's long leg. Early, unglamorous iteration — exactly the get-it-working-first process this project taught me.

Results: 8 of 10 messages delivered

Ten end-to-end trials at around 20 to 30 feet, each from everything powered off — power on, align, confirm, key in the message code, send, check the far screen. Eight of the ten messages arrived intact — and a warehouse link that drops two in ten isn’t a link, because the use case demands 100%. We never diagnosed the two failures at the time; my read now is alignment drift — the swivel had no lock, so the aim could wander while you worked the keypad. Which is why the first fix I’d make is a mechanical lock on the rotation — unlock, align, lock — and the second is a slower clock, 100 ms bits instead of 50, a delay virtually unnoticeable here that buys margin against misread bits, the other failure mode we flagged going in.

Requirement Target Achieved Verified by
Two devices — transmitter and receiver 2 2 built 10 trials
Distinct messages using only light 10 16 encodable encoding design; trials
Reliable enough for the warehouse 100% not met — 8/10 (80%) 10 trials

One more thing this project taught me had nothing to do with lasers. Partway through, one teammate had gone quiet and delivered nothing; instead of escalating, I offered support first — and they re-engaged, without much of a fallout.

The hardware