Outer space has fascinated humanity since ancient times, and in today's digital era, the possibility of interacting with space technology has become more accessible than ever. The Cosmic IoT Communicator project emerges in response to this fascination, combining Internet of Things (IoT) technologies with satellite communications to create an immersive and educational experience that simulates the reception and transmission of data to and from space.
This document provides a comprehensive guide for the construction, configuration, and deployment of the Cosmic IoT Communicator—a system that uses the nRF9151 DK development kit to receive SSTV (Slow Scan Television) signals from satellites such as the International Space Station (ISS), decode them, and upload them to the cloud for visualization in a mobile application or website.
Additionally, the document outlines future integration with Sateliot, which will allow users to send patterns or messages from the app. These will be processed and retransmitted when the satellite passes over the area where the IoT system is installed, thus simulating a bidirectional extraterrestrial communication.
The project not only addresses the technical aspects of hardware and software, but also focuses on the design and fabrication of a modular, futuristic enclosure that enhances both functionality and aesthetics. Using SLA 3D printing and CNC machining, a visually appealing device is created—one that reinforces the space theme while protecting the electronic components within a compact and robust design.
Throughout this document, all the necessary steps to replicate and understand the operation of the Cosmic IoT Communicator will be detailed—from component selection to final testing, including the assembly process, software configuration, and full system validation.
Problem AnalysisSpace exploration and satellite communications have seen significant advancements in recent decades, yet access to these technologies remains limited for the general public. There is a considerable gap between the widespread interest in space communications and the ability to interact directly with them. This situation presents several specific challenges:
First, receiving satellite signals traditionally requires specialized equipment and advanced technical knowledge, which limits the participation of enthusiasts and students in this field. SSTV signals transmitted from the ISS, for example, contain fascinating images that few people can receive and decode due to existing technical barriers.
Second, the visualization and sharing of these signals is often done in isolation, without an integrated platform that allows users to store, contextualize, and distribute the received content. This hinders the formation of learning communities and the educational use of such signals.
Additionally, space communication is generally perceived as one-way for the average user—people may receive signals but lack accessible means to send information back, limiting the interactive experience and educational potential of these technologies.
Finally, existing satellite communication devices often lack attractive and intuitive design. They are presented as complex technical equipment, which discourages exploration and learning by non-specialist users.
The Cosmic IoT Communicator aims to address these issues by creating an integrated system that simplifies satellite signal reception, provides a platform for visualization and sharing, and eventually enables simulated bidirectional communication—all within a device featuring an appealing design inspired by space technology.
Proposed SolutionThe Cosmic IoT Communicator offers a comprehensive solution to the identified challenges by combining specialized hardware, advanced software, and an aesthetic design inspired by space technology. The proposed solution is structured around several interconnected components that work in harmony to provide a complete simulated satellite communication experience.
At the core of the system is the nRF9151 DK development kit from Nordic Semiconductor—a versatile platform that integrates cellular IoT communication capabilities (LTE-M/NB-IoT), GNSS for positioning, and support for DECT NR+. This component serves as the brain of the system, managing communications and data processing.
To receive satellite signals, the system includes a Software Defined Radio (SDR) receiver connected to a suitable antenna. This setup captures SSTV signals transmitted from the ISS and other satellites on the 145.800 MHz frequency. These signals are processed and decoded using specialized software to convert them into viewable images.
Once decoded, the images are transferred to the nRF9151 DK, which uploads them to a cloud platform along with contextual data such as the satellite’s position at the time of reception. This information is stored and organized for later access through a mobile app or website.
The user interface, implemented as a web app and optionally as a mobile app, allows users to view received images, explore historical data, receive notifications about upcoming satellite passes, and in future versions, send patterns or messages that will be processed and retransmitted when a compatible satellite passes over the system’s location.
All this technology is housed in a modular and futuristic enclosure, fabricated using SLA 3D printing in translucent resin or ABS, with internal supports made of aluminum or acrylic via CNC machining. The design includes RGB lighting that simulates space technology, creating a visually engaging experience that reinforces the project’s theme.
The proposed solution not only addresses the functional aspects of the problem but also considers user experience, device aesthetics, and future scalability. The result is a complete system that democratizes access to satellite communications, providing an educational and entertaining platform for exploring this fascinating technology.
OverviewThe system is designed to:
- Receive real SSTV signals from satellites such as the ISS using an external SDR receiver.
- Decode the signals into images and sounds using specialized software.
- Upload the decoded data to the cloud via the nRF9151 DK, allowing users to access it in real time from a mobile app or website.
- Simulate extraterrestrial communication through AI-generated patterns, which users can send to the system via the Sateliot network (starting in 2026).
The nRF9151 DK is the core of the project, used for:
- IoT Connectivity: Uploading decoded data (images and sounds) to the cloud via LTE-M/NB-IoT.
- GNSS: Synchronizing signal reception with the orbital passes of satellites such as the ISS.
- Future Sateliot Support: From 2026, it will allow receiving messages sent by users from the mobile application when the satellite passes through the area.
- nRF9151 DK: Manages IoT connectivity and GNSS.
- SDR Receiver (RTL-SDR): Captures SSTV signals in VHF/UHF bands.
- MMSSTV/QSSTV Software: Decodes SSTV signals into images and sounds.
- Mobile/Web Application: Displays decoded data and allows users to send custom patterns.
- Futuristic Enclosure: Manufactured using CNC/3D printing to protect components and enhance aesthetics.
The nRF Connect SDK is the official software development kit for Nordic Semiconductor devices, including the nRF9151 DK. It provides all tools, libraries, and examples needed to develop applications.
Installation Steps
- Install nRF Connect for Desktop from nordicsemi.com
- Run the installer and follow the instructions
- Open nRF Connect for Desktop
- Install the Toolchain Manager application
- In Toolchain Manager, click “Install” on the latest version of the nRF Connect SDK
Select and install:
- nRF Connect SDK
- nRF Command Line Tools
- SEGGER J-Link
- GNU Arm Embedded Toolchain
Additionally, install:
- Programmer (for flashing firmware))
- Serial Terminal (for serial communication)
- Power Profiler (optional)
Installation Verification Script (Linux/macOS)
#!/bin/bash
echo "Verifying nRF Connect SDK installation..."
# Check nrfjprog
if command -v nrfjprog &> /dev/null; then
echo "✓ nrfjprog found: $(nrfjprog --version)"
else
echo "nrfjprog not found. Check your installation."
fi
# Check west
if command -v west &> /dev/null; then
echo "✓ west found: $(west --version)"
else
echo "west not found. Check your SDK installation."
fi
# Check ARM compiler
if command -v arm-none-eabi-gcc &> /dev/null; then
echo "✓ arm-none-eabi-gcc found: $(arm-none-eabi-gcc --version | head -n1)"
else
echo "arm-none-eabi-gcc not found."
fi
# Check CMake
if command -v cmake &> /dev/null; then
echo "✓ cmake found: $(cmake --version | head -n1)"
else
echo "cmake not found. Please install it."
fi
# Check Python
if command -v python3 &> /dev/null; then
echo "✓ python3 found: $(python3 --version)"
else
echo "python3 not found. Please install Python 3.6+."
fi
echo "Verification complete."
Development Environment SetupRecommended: Visual Studio Code- Download VS Code
Install the following extensions:
- nRF Connect Extension Pack
- C/C++ Extension Pack
- Cortex-Debug
- CMake Tools
- Open Command Palette → “nRF Connect: Set up nRF Connect SDK”
- Select your installed SDK version
Add to .bashrc
or .zshrc
:
export NRF_CONNECT_SDK_PATH="/path/to/ncs"
export ZEPHYR_TOOLCHAIN_VARIANT="gnuarmemb"
export GNUARMEMB_TOOLCHAIN_PATH="/path/to/gnu-arm-embedded"
export PATH="$PATH:$NRF_CONNECT_SDK_PATH/toolchain/bin"
2. Firmware for the nRF9151 DKProject Structurecosmic_iot_firmware/
├── CMakeLists.txt
├── prj.conf
├── src/
│ ├── main.c
│ ├── sstv_handler.c/.h
│ ├── cloud_connection.c/.h
│ ├── led_control.c/.h
│ ├── usb_handler.c/.h
├── boards/nrf9151dk_nrf9151.overlay
└── Kconfig
Project Configuration (prj.conf)Key settings include:
- Logging and assertions
- LTE, MQTT, and AWS IoT connectivity
- USB host support
- Memory and security options (mbedTLS)
- JSON, datetime, and GPIO handling
Initializes:
LEDs
- LEDs
USB (for SDR)
- USB (for SDR)
LTE modem
- LTE modem
SSTV handler
- SSTV handler
Cloud connection
- Cloud connection
Handles states:
STATE_INIT
STATE_INIT
STATE_CONNECTING_LTE
STATE_CONNECTING_LTE
STATE_RECEIVING_SSTV
STATE_RECEIVING_SSTV
STATE_PROCESSING_IMAGE
STATE_PROCESSING_IMAGE
STATE_UPLOADING_IMAGE
STATE_UPLOADING_IMAGE
STATE_ERROR
STATE_ERROR
It waits for SSTV signals, processes and uploads the image, then returns to idle.
3. Cloud Connection Module (cloud_connection.c)Initializes and manages MQTT communication with AWS IoT.(Truncated in original document but includes cloud_connection_init
, cloud_connection_connect
, cloud_connection_upload_image
, etc.)
Required Materials:
- nRF9151 Development Kit
- High-quality USB-C cable
- Computer with nRF Connect SDK installed
- Nano-SIM card (optional for cellular connectivity)
- External LTE/NB-IoT antenna (optional for better reception)
Required Tools:
- Small flathead screwdriver
- Precision tweezer
- Digital multimeter (optional for verification)
Preliminary Steps:
- Carefully unbox the nRF9151 DK
- Visually inspect for any damage
- Identify all connectors and jumpers
- Prepare a clean, well-lit, anti-static work surface
- Keep reference documentation nearby
Power Supply:
- Set jumper P24 to "VEXT" for external power
- Set jumper P24 to "USB" for USB power (default)
Current Measurement:
- Remove jumper P20 to enable current measurement (optional)
- Leave jumper P20 for normal operation
Antenna Setup:
- LTE/NB-IoT antenna: Remove P27 and connect external antenna to SMA J1
- GNSS antenna: Remove P28 and connect to SMA J13
SIM Setup:
- For external nano-SIM: insert into socket J14
- For internal eSIM: no setup required
Locate socket J14 on the bottom of the board
- Locate socket J14 on the bottom of the board
- Slide cover to "OPEN" and lift carefully
- Place nano-SIM (gold contacts down, notch aligned)
- Close and lock the cover
- Ensure the SIM is securely installed
LTE/NB-IoT:
- Remove P27 jumper
- Connect compatible external antenna to SMA J12
GNSS:
- Remove P28 jumper
- Connect active GNSS antenna to SMA J13
- Place antenna with clear sky view for best signal
Positioning Notes:
- Keep antennas separated to reduce interference
- Avoid metal obstacles
- For indoor use, place antennas near windows
- Connect USB-C to J2 on the board and the computer
- Power LED (LED1) should turn on
Device Recognition:
Windows: Check Device Manager for:
"JLink CDC UART Port" under COM Ports"JLink driver" under USB Devices
Linux: Run lsusb
and check for SEGGER J-Link
macOS: Run system_profiler SPUSBDataType
and look for J-Link
Communication Test:
Open nRF Connect for Desktop
Launch “Serial Terminal”
Select the correct COM port
Set to 115200 baud, 8 data bits, no parity, 1 stop bit
Confirm communication
1.6. GPIO Pin Setup for RGB LEDsWS2812B Strip (1 data pin):
Data → P6.11 (GPIO)
GND → any GND
VDD → 5V or 3.3V (as required)
Individual RGB LEDs (3 pins):
R → P6.12
G → P6.13
B → P6.14
Common → GND (common anode) or VDD (common cathode)
1.7. Full Operation CheckCellular Connectivity:
Flash the lte_ble_gateway
example
Open serial terminal and check connection messages
serial terminal and check connection messages
LED2 should blink to indicate network state
GNSS Test:
Flash gnss_sample
example
Place GNSS antenna outdoors
Verify valid coordinates in the terminal
GPIO/LED Test:
Flash modified gpio_toggle
example
Confirm RGB LEDs respond properly
2. SDR Receiver Configuration2.1. Hardware InstallationMaterials:
RTL-SDR V3 receiver (or equivalent)
Quality USB cable with ferrite cores
Antenna adapters (SMA, BNC, etc.)
VHF antenna (145.800 MHz)
Steps:
Unbox and inspect receiver
Install heat sink if included
Connect VHF antenna
Place antenna vertically, ideally outdoors or by a window
Do not connect SDR to PC yet—install drivers first
2.2. Driver and SDR Software InstallationWindows:
Install Zadig
Run as admin → List All DevicesSelect RTL2838UHIDIR or equivalentChoose "WinUSB" → Install/Replace Driver
- Install ZadigRun as admin → List All DevicesSelect RTL2838UHIDIR or equivalentChoose "WinUSB" → Install/Replace Driver
Install SDR#
Extract ZIP → Run install-rtlsdr.bat
Open SDRSharp.exe
Select “RTL-SDR (USB)” as source
Settings:
RF Gain: Auto
Sample Rate: 2.4 MSPS
RTL AGC & Tuner AGC: Enabled
Offset Tuning: Disabled
Linux:
sudo apt update
sudo apt install rtl-sdr gqrx-sdr
Add udev rules:
sudo nano /etc/udev/rules.d/20-rtlsdr.rules
SUBSYSTEM=="usb", ATTRS{idVendor}=="0bda", ATTRS{idProduct}=="2838", GROUP="adm", MODE="0666", SYMLINK+="rtl_sdr"
sudo udevadm control --reload-rules
sudo udevadm trigger
Test with: rtl_test -t
Launch GQRX, select "RTL-SDR"
Input rate: 2.4 MSPS
Gain: 20–40 dB as needed
macOS:
brew install rtl-sdr gqrx
rtl_test -t
2.3. SSTV Reception SetupFrequency: 145.800 MHz
Mode: NFM
Bandwidth: 3–5 kHz
Gain: Start with auto; manually adjust to 20–40 dB
Enable noise filters and set squelch above noise floor
2.4. Virtual Audio ConfigurationWindows: Use VB-Cable
SDR# output → “CABLE Input”
MMSSTV input → “CABLE Output”
Linux: Use PulseAudio
pactl load-module module-null-sink sink_name=virtual_cable
GQRX → Output to “Monitor of Virtual_Cable”
macOS: Use Soundflower or BlackHole
2.5. SSTV Software InstallationWindows:MMSSTV
Set RX mode to “PD120”Input device: "CABLE Output"
Linux:
sudo apt install qsstv
Input: Monitor of Virtual_Cable
Mode: PD120
3. Antenna Configuration3.1. VHF Antenna for SSTVOption 1: DIY Dipole Antenna
145.800 MHz → Length = 0.977 m total → 48.85 cm per arm
Build using copper wire, coax, and optionally PVC pipe
Use BNC/SMA connector on the other end
Option 2: Commercial Antenna
VHF 145–146 MHz range
At least 3 dBi gain
Follow manufacturer instructions
3.2. Antenna Positioning TipsHigher = better
Vertical orientation for ISS
Use omnidirectional antennas unless tracking with software
Avoid nearby electronics
Use short, shielded coax cables
Optionally use VHF band-pass filters
3.3. Antenna Performance VerificationTest with FM radio station
Then tune to 145.800 MHz
Wait for ISS pass to verify actual SSTV reception
Adjust height and orientation for best results
Conclusion
The Cosmic IoT Communicator project is still under active development due to delays in the arrival of some critical hardware components. Despite this, the foundational infrastructure—both in hardware configuration and software development—is nearly complete. We are preparing to launch the first pilot phase in collaboration with Sateliot, which will mark a significant milestone by enabling simulated bidirectional communication through Low Earth Orbit (LEO) satellite networks. This pilot will allow us to validate real-world performance and further refine the system before full deployment.
Comments