Week 4 – Choose First Free Space Optical Communication Setup

Context

I am working on a Free Space Optical Communication (FSOC) project. Compute nodes will connect through ethernet to a media converter which will have a custom Small Form-factor Pluggable (SFP). This bidirectional SFP will send 1550nm wavelength data through free space to a receiving custom SFP. The receiving SFP will interface with a media converter that is connected by ethernet to another compute node. The compute nodes should be able to communicate as if they were connected by ethernet. End target is communication at 1km at 1gb/s with total cost of bidirectional communication node under $1000 and under 1 kg. Constraints may turn out to be impossible and need tuning. Goal is to put these on drones to make a mesh network.

Week 4 Goals

  1. Design a simple set up to transmit data through free space using the Small Form-Factor Plugable ecosystem.

Motivation is to have a starting point and have a better intuition of the complexities of 1km 1gb/s communication.

Materials

Osmocom SFPexperimenter board v2 kit

TRENDnet SFP to RJ45 100Base-FX Single-Mode LC Module

Siglent Technologies SDS1104X-E 100Mhz Digital Oscilloscope

Results

I need to be able to control the data I am sending (the voltage signal) and be able to compare it to what is received.

This means I cannot use a normal media converter with SFP set up because I will not be able to define the data being set. It will automatically convert Ethernet frames into digital signals and I do not think I can figure out exactly what these frames should look like on Rx voltage pins. So I may get signal on the other side but I wouldn’t be able to determine if it is the right signal.

It would also add unnecessary complexity when I am just getting started with FSOC. The signal should be simple and easy to verify.

I need to send a known signal on the Tx pins of one breakout board, and be able to see them on the Rx pins on another breakout board. In between there must be a way to get the fiber optic signal to go through the air and then back into fiber optics.

Single Mode fiber features a microscopic 9-micron core that forces light to travel in a single, straight line, while Multimode fiber has a much wider 50-micron core that lets photons bounce around in zig-zag paths (modes). While Single Mode is superior—sending a clean beam over kilometers without the signal “smearing” caused by bouncing photons arriving at different times—the super tight beam is actually tough for alignment in a simple project like this.

Multimode exists because it’s cheaper and more forgiving for short distances; you don’t need perfect aim to get light into it. Trying to catch a free-space laser beam with a 9-micron Single Mode fiber would be tough even with a collimator, but Multimode gives a 50-micron target. So the messiness is a bit of a plus when doing this initial set up at a few centimeters.

So multimode it is.

The Source (ESP32): You generate a Manchester-encoded data stream on GPIO 17, which toggles bits (0→1 or 1→0) rapidly to embed the clock signal into the data itself.

Why Manchester? SFP modules are AC-coupled, meaning they have internal capacitors that block constant DC voltages; without Manchester encoding, sending a long string of “1s” would cause the signal to fade to zero and be lost.

The Problem (Voltage): The ESP32 outputs 3.3V pulses, but SFP high-speed data inputs (CML Logic) are designed for tiny voltage swings (approx. 0.5V) and 3.3V would oversaturate or damage the laser driver.

The Solution (Attenuation):A voltage divider (270Ω & 51Ω) to drop the 3.3V signal down to ~0.52V, matching the SFP’s expected input range while maintaining enough current drive.

Optical Transmission: The SFP laser turns this electrical pulse into an 850nm light pulse, which travels through the fiber, out the collimator, through the air, and into the receiving collimator.

The Receiver (Scope): The receiving SFP converts the light back to electricity, and the Oscilloscope (connected via SMA-to-BNC) samples this analog voltage at 100 MHz+ to capture the waveform shape.

Data Extraction: Since the scope cannot decode Manchester natively, the waveform is saved as a CSV file to a USB drive.

Software Decoding: A Python script on my computer reads the CSV, measures the time between signal transitions (short vs. long pulses), and reconstructs the original “1s” and “0s” of the message.

Image from Gemini. The wires in the breadboard are all messed up but got tired of re-prompting. Seems like breadboard circuits is still too tough for LLMs

This is the bill of materials for the set up

ItemPart NameWhy NeededApprox CostLink Example
Logic SourceESP32 KitHas RMT peripheral for glitch-free signals.$56Link
BreakoutOsmocom SFP Exp.Interface board (Tx/Rx).$75 (2)Link
ConnectionSMA BNC Male to SMA MaleConnects breakout to Oscilloscope. (Rx)$10Link
ConnectionSMA Pigtail Cable BareConnects breakout to breadboard (Tx)$12Link
TransceiverMultimode SFP850nm Multimode (easier to align).$26 (2)Link
CableLC to FC OM3Adapter cable for the lens.$6Link
LensFC CollimatorThe “Beam Expander” lens.$24 (4)Link
Resistors1350 Pcs Resistor KitTake the voltage down from the ESP32$13Link

Next Week

Once all the materials are received will first attempt to just send data without FSOC. And then once that is working will put in the collimators.

Comments

Leave a Reply

Discover more from Adam Polak's Blog

Subscribe now to keep reading and get access to the full archive.

Continue reading