Inspiration

Communication is the backbone of emergency response, but traditional systems such as radio can fail because of equipment damage, interference, or harsh conditions.

We wanted to explore whether a simple optical signal—a rapidly flashing light—could act as a reliable backup communication channel.

LumaLink was inspired by one idea:

When radio communication fails, light can still carry a message.

Because missing even a few flashes can change the decoded message, we needed a system with predictable timing. That is where QNX RTOS became essential.

What it does

LumaLink receives high-speed Morse code light flashes using a Raspberry Pi Camera Module 3 Wide connected to a Raspberry Pi 5 running QNX RTOS.

The system:

  • Detects rapid light flashes
  • Converts them into Morse code
  • Decodes the Morse into readable English
  • Uses a local AI model to interpret the message
  • Launches an emergency dashboard when an SOS signal is detected
  • Plays an audible alarm and reads the alert aloud

The full pipeline runs locally without relying on the cloud.

How we built it

LumaLink combines embedded vision, real-time processing, local AI, and a web interface.

We used:

  • QNX RTOS on a Raspberry Pi 5
  • Raspberry Pi Camera Module 3 Wide
  • C with the QNX Camera API
  • A deterministic Morse decoder
  • A local Qwen language model
  • A lightweight Python web server
  • A browser-based emergency dashboard

The camera application measures the duration of each light pulse:

  • Short pulse → dot
  • Long pulse → dash
  • Longer gap → letter or word separation

The decoded message is then passed to the local AI, which produces a concise emergency interpretation for the operator.

QNX provides predictable scheduling for the camera-processing pipeline, helping reduce timing jitter and missed flashes during rapid optical communication.

Challenges we ran into

The biggest challenge was developing on QNX within a limited hackathon timeframe.

Some of the main difficulties were:

  • Setting up the QNX development environment
  • Learning the QNX Camera API
  • Configuring the Raspberry Pi camera
  • Detecting short flashes reliably
  • Distinguishing the flashing source from other light in the environment
  • Tuning dot, dash, and gap timing
  • Running a local AI model on embedded hardware
  • Connecting the camera, decoder, AI, and web server into one pipeline

We also had to make sure the AI did not interfere with the time-critical camera processing. To solve this, the camera pipeline completes first, saves the Morse output, and only then launches the AI.

Accomplishments that we're proud of

  • Built an end-to-end optical communication system on QNX
  • Detected computer-generated Morse flashes using a camera
  • Converted light pulses into readable messages
  • Ran a local AI model directly on the Raspberry Pi
  • Created an automatic SOS web dashboard
  • Added audible and spoken emergency alerts
  • Built a fully offline system with no cloud dependency
  • Connected the complete workflow into a single launch command

What we learned

We learned why real-time operating systems matter in vision-based communication.

In a normal operating system, unpredictable scheduling delays can cause dropped or delayed frames. In LumaLink, that could cause a dot to be interpreted as a dash or a letter to be missed entirely.

QNX gives the camera-processing task predictable access to system resources, making the timing pipeline more reliable.

We also learned about:

  • Embedded computer vision
  • Real-time scheduling
  • Camera APIs
  • Morse timing and signal processing
  • Local AI inference
  • Embedded web servers
  • Designing a complete safety-focused system under time pressure

What's next for LumaLink

Future improvements include:

  • Better performance in bright or noisy environments
  • Automatic tracking of moving light sources
  • Adaptive thresholds for different lighting conditions
  • Faster optical transmitters
  • Encrypted optical communication
  • Support for multiple transmitters
  • More advanced AI emergency interpretation
  • Mobile notifications for rescue operators
  • Integration with maritime and disaster-response systems

Our goal is to develop LumaLink into a reliable backup communication system for situations where radio, cellular, or internet communication is unavailable.

Reliable communication when radio goes dark.

Built With

Share this project:

Updates