Skip to content
Noah Spiegelman
Back to all projects

Project

Point-to-Point Communication System

EK 210, Boston University · Sep 2025 – Dec 2025

A four-person team project that sends typed messages across a room as laser-pulsed Morse code. A keypad and Arduino encode the message, a servo aims the laser, and a photoresistor receiver decodes it onto an LCD, with no computer involved.

Role
Receiver modelling, housing CAD and testing (team of 4)
Tools
Arduino Uno, Photoresistor, Servo motor, Tinkercad Circuits, Laser cutting, 3D printing
  • Embedded
  • Mechanical
The finished transmitter, a laser-cut box with a 16-key keypad and a small servo-mounted laser housing on its lid, with the red laser dot lit
The finished transmitter, with the laser on.
Demonstration of the working system.

Problem

The client brief called for two units that communicate by light with no laptop involved: a steerable transmitter that sends any of 10 characters or codewords, and a receiver that decodes and displays them. It had to work at 5 ft or more, keep each unit smaller than a shoe box, and run without a reset between messages. We framed the users as responders in remote or network-limited places where Wi-Fi is unavailable.

A pairwise comparison chart ranked reliability and durability first, then ease of use, then cost and size, with a cost target of $200 or less.

Approach

The transmitter takes input from a 16-key keypad. An Arduino Uno turns each character into timed Morse pulses and drives a 650 nm, 5 mW laser in a small housing mounted on an S51 micro servo, which steers the beam.

The receiver has a 20 mm plano-convex lens window on its front, and its photoresistor, in a 10 kΩ voltage divider, sits inside a light-isolating enclosure. A second Arduino times each pulse, separates dots, dashes and gaps, decodes them into characters and shows the message on a 16×2 LCD.

Before building, I worked with a teammate to model the receiver from the photoresistor's datasheet. We calculated the divider output across light levels, then bench-tested it by flashing Morse code with a phone flashlight and reading the decoded output over serial. We also compared a photoresistor with a photodiode and chose the photoresistor for more reliable signal changes, and compared a servo with a stepper and chose the servo for smoother, lower-power aiming.

We designed the housings in CAD and laser-cut the panels, which join with interlocking finger joints. We tested each subsystem on its own before integrating, and checked the power budget for a 9 V battery.

Results

The system decoded all 10 required commands with 100% accuracy at distances of 5+ ft, with under 1.5 seconds of latency. In a distance test, 20 of 20 messages (cat, abc, dog and hello, at 1 to 5 ft) decoded correctly. The transmitter steers through 90° under motor control, and both units are fully enclosed.

The parts cost $103.76 against the $200 target. Estimated battery life on a 9 V battery is about 5 hours for the receiver and about 2 hours for the transmitter.

Lessons learned: Morse timing has to be tuned to the sensor's response time, and a few degrees of misalignment dropped the signal completely. Servo current spikes occasionally reset the Arduino in early tests, which taught us to budget power and consider capacitors or separate rails. Testing subsystems separately made debugging much faster.

Next steps we identified: a QWERTY keyboard for faster typing, a weatherproof housing, and a lens setup that gives the receiver a wider target.

The transmitter, a laser-cut box with a 16-key keypad and a small servo-mounted laser housing on the lid
The transmitter: a 16-key keypad and, on the lid, the servo-mounted laser housing.
The receiver, a tall laser-cut box with an LCD set into the lid and a round lens window on the front
The receiver: an LCD on top and a lens window on the front.
The receiver standing behind the transmitter on a desk
Both units together, ready to test.
Top view of the transmitter showing the 16-key keypad and the laser housing on its servo
Top of the transmitter: the keypad and the laser housing on its servo.
Top view of the receiver showing the 16 by 2 LCD set into the lid
Top of the receiver: the 16×2 LCD set into the lid.
CAD render of the receiver housing with its lid open, showing the Arduino, wiring and a 9 V battery inside
Receiver housing in CAD, lid open: Arduino, battery and wiring inside a light-isolating box.
CAD render of the transmitter housing with its lid open, showing the battery and electronics and the servo-mounted laser on the lid
Transmitter housing in CAD: the servo-mounted laser sits on the lid.
Tinkercad wiring diagram of the transmitter: a 4 by 4 keypad, Arduino Uno, 9 V battery and servo
Transmitter wiring: 16-key keypad, Arduino Uno, servo and laser.
Tinkercad wiring diagram of the receiver: Arduino Uno, breadboard, 9 V battery and a 16 by 2 LCD
Receiver wiring: photoresistor divider, Arduino Uno and 16×2 LCD.
Flowchart of the receiver code: read the light sensor, time the on and off durations, classify dots, dashes and gaps, decode letters and display them on the LCD
Receiver code: time each pulse, classify dots, dashes and gaps, then decode and display.
Bar chart of correct decodes at distances from 1 to 5 feet, with 4 correct decodes at every distance
Correct decodes by distance: 4 of 4 test messages decoded at each of 1 to 5 ft.
Two cardboard prototype units on a hallway floor: the receiver on the left with a glowing blue LCD on top, and the transmitter on the right with a small servo-mounted laser housing on its lid
The early cardboard prototype, used to test the electronics before the laser-cut housings.