Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Radio_Kit

An Ada radio framework for the RP2040 without a dedicated RF transceiver.

Radio_Kit is an experimental embedded radio framework written in Ada for the RP2040. It explores native clock generation, GPIO, PIO, and DMA for programmable radio signal generation without a dedicated RF transceiver.

Status: Experimental — early development.

Inspiration & References

Radio_Kit is inspired by RadioMCU, an experimental project demonstrating FM signal generation on the RP2040 without a dedicated RF transceiver.

RadioMCU does not provide its implementation source code. Its author describes it as a recompiled implementation based on pico-fractional-pll, which is the primary technical reference behind this project.

  • pico-fractional-pll — fractional PLL and RP2040 clock-generation techniques.
  • RadioMCU — practical demonstration of RP2040 FM signal generation.

Radio_Kit is an independent Ada implementation and does not reuse RadioMCU source code. It uses these publicly demonstrated concepts as a starting point and develops them into a structured radio framework.

⚠️ RF Safety

RF transmission may be regulated or illegal depending on frequency, power, location, and local laws. Long wires connected to GPIO21 can act as antennas and significantly increase radiation.

Radio_Kit is intended for controlled experimental and educational use. Follow applicable RF regulations and avoid unauthorized transmissions.

Vision

Build a reusable Ada framework that turns the RP2040 into a programmable radio platform using its native hardware.

The long-term goal is to investigate transmission and reception of raw or encoded data, including the possibility of communication between RP2040 boards without dedicated RF transceivers or conventional wireless modules.

Current Implementation

Radio_Kit currently provides programmable carrier generation.

  • 90 MHz RP2040 SYS clock
  • Custom SYS PLL configuration
  • SYS → GPOUT0 clock routing
  • 8-bit fractional GPOUT divider
  • Hardware-aware frequency quantization
  • Target-frequency-based divider calculation
  • GPOUT0 → GPIO21 routing
  • GPIO21 CLOCK alternate function
  • Configurable GPIO slew rate and drive strength
  • No dedicated RF transceiver required

The current output is a programmable digital carrier waveform suitable for observation with a logic analyzer or oscilloscope.

Signal Path

12 MHz XOSC
     │
     ▼
  SYS PLL
     │
   90 MHz
     │
     ▼
  SYS Clock
     │
     ▼
   GPOUT0
     │
Fractional Divider
     │
     ▼
   GPIO21
     │
     ▼
Signal Output

Architecture

Radio_Kit is an Ada library organized as hierarchical packages.

Radio_Kit
└── Radio_Kit.Radio_Clock

Planned architecture:

Radio_Kit
├── Radio_Clock
├── Radio_Carrier
├── Radio_Modulation
├── Radio_Transmitter
├── Radio_Receiver
├── Radio_Codec
└── Radio_Protocol

Design Goals

  • Pure Ada
  • Deterministic embedded operation
  • Direct RP2040 hardware access
  • No dedicated RF transceiver
  • Precise carrier generation
  • Explicit frequency quantization
  • Static allocation where practical
  • Modular radio architecture
  • Raw and encoded data support
  • Bidirectional communication research

Development

Carrier

  • SYS PLL configuration
  • 90 MHz SYS clock
  • GPOUT0 configuration
  • Fractional divider calculation
  • GPIO21 carrier output
  • Frequency range validation
  • Achievable-frequency calculation
  • Frequency error reporting
  • Carrier control

Modulation

  • OOK
  • ASK
  • FSK
  • PSK
  • FM
  • PIO-assisted modulation
  • DMA-driven symbol generation

Transmission

  • Raw bit transmission
  • Byte-stream transmission
  • Framing
  • Preamble
  • Symbol timing
  • Packet transmission

Reception

  • Signal input
  • Carrier detection
  • Edge/timing capture
  • Symbol recovery
  • Packet reception
  • Synchronization

Data

  • Encoding
  • CRC
  • Error detection
  • Error correction
  • Encryption
  • Packet protocol

Bidirectional Communication

The long-term goal is to investigate wireless communication between two RP2040 boards using Radio_Kit without conventional RF transceiver hardware.

RP2040 A                         RP2040 B

Radio_Kit                       Radio_Kit
    │                               ▲
    ▼                               │
Transmit ─────── RF ────────────► Receive
    │                               │
    ▼                               ▼
   Data                           Data

This remains an experimental research direction. Range, sensitivity, selectivity, spectral purity, antenna requirements, and regulatory limitations must be evaluated experimentally.

Status

Version: 0.1.0-dev

Current milestone: RP2040 programmable carrier generation.

Radio_Kit is being developed from the hardware level upward: carrier generation first, followed by modulation, transmission, reception, and data communication.

License

Apache License 2.0.

Disclaimer

Radio_Kit is an experimental embedded-radio project. Actual RF transmission requires appropriate hardware design, testing, and compliance with applicable radio-frequency regulations.

About

An Ada radio framework for the RP2040 that enables wireless signal transmission and reception without requiring a dedicated RF transceiver.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages