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
- css
- html
- javascript
- llama.cpp-qnx
- python
- qnx
- qwen
- rtos
- tigervnc
Log in or sign up for Devpost to join the conversation.