RF-001 Prototype: Wireless Audio Transmission for Musicians
This post details my main embedded side project: a wireless audio transmission system for musicians.
Overview
The RF-001 is a musical pedal that transmits real-time audio over the air. The goal is to provide a flexible monitoring solution for professional musicians who need to selectively monitor specific band members during rehearsals without dealing with cumbersome wired connections.
Key Features
-
Modular Design: Universal transceiver module with a 3D-printed case. Modules can be combined into a “supermodule” by stacking them side-to-side using 9-pin D-sub connectors.
-
High-Quality Audio: Real-time, low-latency audio transmission with 32-bit depth at 44.1 kHz sample rate (mono, with stereo support planned for future versions).
- Software Control: Full digital control over codec functions with analog mixing capabilities for connected modules:
- Equalizer (EQ)
- Volume control
- Balance adjustment
- Additional audio processing functions
- Device Management:
- DFU (Device Firmware Update) over USB
- Desktop software for comprehensive device management
-
User Interface: Intuitive control via a single encoder with push-button functionality, displayed on an OLED screen.
- Connectivity Options:
- Line/Mic input
- Headphones output (single)
- Line output (single)
- Inter-Module Communication: The first module can connect to a laptop as a master controller to manage settings for all connected modules.
Hardware Specifications
- Microcontroller: STM32F103RCT6 (ARM Cortex-M3 core)
-
Audio Codec: AK4954AEN - Custom module board based on reference schematics
- Display: SSD1306 OLED screen module
- RF Transceiver: Amicom A7190 module for audio transmission
- Storage: 8 Kbit EEPROM (STMicroelectronics)
Development Progress
Early Testing
First successful full-speed audio transfer demonstration:
Complete Prototype
The fully assembled single module prototype:
Project Architecture
Firmware Structure
- Bootloader: DFU-capable (standard implementation)
- HAL Layer: Generated via STM32Cube for rapid prototyping
- RTOS: FreeRTOS for structured code organization and queue management
- Language: Mixed C/C++ (generated sources in C, custom code in C++)
- Debugging: RTT (Real-Time Transfer) for logging and debugging
- Peripheral Drivers: Abstracted drivers for simplified DMA/non-DMA transfers
- Performance: All peripherals configured with DMA for maximum throughput
- UI Framework: Custom lightweight framework (based on Adafruit GFX library, with plans for future improvements)
-
Testing: Catch2 unit tests with peripheral/interface mocks
