
Power Module
Queens-Rocket-Engineering-Team/Avionics-23-26
QRET Avionics hardware, firmware, and documentation for 2023 to 2025.

DeskMixer is a software that allows control of application volumes with real sliders, and action mapping on buttons using arduino like platforms. The project was inspired originally by deej.
DeskMixer is an open-source printed circuit board by RaduAndre, from the RaduAndre/DeskMixer repository on GitHub. It is a 2-layer board of 154.7 × 113 mm with 113 parts on 127 nets, routed with 1,200 tracks and 141 vias.
It is built around the STM32F103C8T6, GD25Q64ESIG and AMS1117-3.3, with the SK6812MINI-E, SS14 and X322516MMB4SI among its other parts. Its parts include 49 diodes, 21 capacitors, 6 switches, 5 resistors and 5 ICs. It belongs with the audio and music boards and the STM32 boards of this library.
A low latency physical volume mixer with programmable buttons for Windows, inspired by Deej.
Control your audio with near-instant response and automate actions with real hardware - fully scalable to your needs!

Features • Hardware • Installation • Configuration • Building
For Windows users, the simplest way to get up and running is with the pre-compiled executable!
DeskMixer.exe file. (no instalation needed)DeskMixer features a sleek, modern interface with a dark theme and smooth animations designed for intuitive hardware control.
Clean, modern interface with volume sliders and programmable action buttons
Sliding configuration menu for easy customization
Visual Design:
Volume Sliders:
Action Buttons:
Configuration Menu:
Settings & Customization:
Hardware Integration:
A functional, handcrafted build - proving that professional results don't require a professional workshop!
DeskMixer takes physical volume control and supercharges it with macro-like button actions.
The software supports multiple volume control modes:
| Target | Description | Use Case |
|---|---|---|
| 🔊 Master | System master volume | Overall volume control |
| 🎤 Microphone | Default microphone input | Quick mic adjustments |
| 🔔 System Sounds | Windows notification sounds | Silence those pings! |
| ⭐ Current Application | Currently focused app | Dynamic control of active app |
| 🎵 Individual Apps | Specific applications | Dedicated controls (Spotify, Discord, etc.) |
| ❔ Unbound | No assignment | Flexible unassigned slider |
| ❌ None | Disabled | Slider inactive |
Note: The application list updates automatically based on running audio applications. The UI scales to accommodate any number of slider bindings you create!
Pro Tip: Combine button actions with specific application targets for powerful workflows. For example:
The button configuration UI scales dynamically - add as many buttons as your microcontroller has pins!
DeskMixer supports both Arduino (ESP32) and custom STM32 hardware designs.
You can modify these in the Arduino sketch (firmware/arduino/DeskMixer/DeskMixer.ino) to match your build:
For the custom PCB board, the STM32F103 (Blue Pill) is configured with the following pins:
| Component | Pin (Port) | Physical Pin | Description |
|---|---|---|---|
| Slider 1 | PA0 | Pin 10 | ADC1 Channel 0 |
| Slider 2 | PA1 | Pin 11 | ADC1 Channel 1 |
| Slider 3 | PA2 | Pin 12 | ADC1 Channel 2 |
| Slider 4 | PA3 | Pin 13 | ADC1 Channel 3 |
| Slider 5 | PA4 | Pin 14 | ADC1 Channel 4 |
| Button 1 | PB1 | Pin 19 | GPIO Input (Pull-Up) |
| Button 2 | PB2 | Pin 20 | GPIO Input (Pull-Up) |
| Button 3 | PB3 | Pin 39 | GPIO Input (Pull-Up) |
| Button 4 | PB4 | Pin 40 | GPIO Input (Pull-Up) |
| Button 5 | PB10 | Pin 21 | GPIO Input (Pull-Up) |
| Button 6 | PB11 | Pin 22 | GPIO Input (Pull-Up) |
| WS2812B LEDs | PB15 | Pin 28 | SPI2 MOSI (DMA Transmit) |
| OLED SCL | PB6 | Pin 42 | I2C1 SCL |
| OLED SDA | PB7 | Pin 43 | I2C1 SDA |
| Flash SCK | PA5 | Pin 15 | SPI1 SCK |
| Flash MISO | PA6 | Pin 16 | SPI1 MISO |
| Flash MOSI | PA7 | Pin 17 | SPI1 MOSI |
| Flash CS | PB0 | Pin 18 | GPIO Output |
Want more controls? Simply:
arduino/DeskMixer/DeskMixer.ino or the STM32 firmware parameters in firmware/stm32/Core/Src/sliders.c / buttons.c.
Wiring diagram showing connections between ESP32, potentiometers, and buttons
The DeskMixer circuit consists of three main components working together:
Power Distribution:
Potentiometer Connections (Volume Sliders): Each potentiometer has three pins:
As you move the slider, the middle pin voltage varies between 0V and 3.3V, which the ESP32 reads as analog values (0-1024). The software then maps these values to volume levels (0-100%).
Button Connections: Each button uses a simple pull-down configuration:
Color Coding in Diagram:
⚠️ Analog Pin Limitations: On ESP32, not all pins support analog reading. Use only ADC1 pins (GPIO 32-39) for potentiometers. Avoid GPIO 25 and 26 for analog input as they're DAC pins.
⚠️ Voltage Levels: ESP32 GPIO pins are 3.3V tolerant. Never connect 5V directly to any GPIO pin.
💡 Wire Gauge: Use 22-24 AWG wire for connections. Solid core wire works well for breadboard prototyping, while stranded wire is better for the final build.
💡 Debouncing: The firmware includes software debouncing for buttons to prevent false triggers. No additional hardware debouncing (capacitors) is needed.
Coming Soon: 3D printable enclosure models and Gerber files for PCB manufacturing will be added in future updates!
DeskMixer.exe from the Releases page.Requirements:
Steps:
git clone https://github.com/RaduAndre/DeskMixer.git
cd DeskMixer/srcpip install -r requirements.txtpython main.pyarduino/DeskMixer/DeskMixer.ino in Arduino IDEThe STM32 firmware is located in firmware/stm32. You can compile and flash it using your preferred tools:
firmware/stm32 directory as an existing STM32 project in STM32CubeIDE..elf, .bin, or .hex).GND, 3.3V, SWDIO, SWCLK)..bin or .hex file from firmware/stm32/Debug/deskmixer.bin.Binding Options:
Configuration Menu:
Available Actions:
Media Controls:
Advanced Actions:
Configuration Menu:
Click on Settings (gear icon) in the top-right corner, then look for the LEDs section in the configuration menu:
None (disabled), Full (always-on), or Volume based (VU meter filling according to slider physical value).Surf (color sweep), Solid (static), Pulse (breathing color wave), VU Bar (solid color volume height), or Starlight (sparkles).All (uniform color) or By slider for Solid. Choose Random or Select colors (cycles custom colors) for animations.+ and - to add or remove colors from the custom color palette (minimum of 3 colors).None, On press (lights up on click), or Always (always-on).Surf, Solid, Pulse, or Starlight.Click on Settings (gear icon) in the top-right corner, then look for the Idle Screen section in the configuration menu:
.png, .jpg, .jpeg, .bmp, .gif).Button Grid:
Reordering Elements:
Access via the gear icon in the top-right corner:
General:
Layout:
Create your own executable using either method:
cd src
python build_app.pycd src
python build_nuitka.pyBuilt executables will appear in src/build/dist/
The device shown in the gallery was handcrafted with basic tools and materials - no fancy workshop required! It's a testament that functional, effective hardware doesn't need to be professionally manufactured. The beauty of this project is in its functionality and the satisfaction of building something yourself.
DIY Philosophy: This project embraces the maker spirit - it's about creating tools that work for YOU, not winning beauty contests. If it controls your volume and makes your workflow better, it's perfect.
DeskMixer is designed to grow with your needs:
The software automatically adapts to whatever hardware configuration you define in the Arduino firmware!
For comprehensive keybind examples and syntax, see KEYBIND_EXAMPLES.md
Contributions are welcome! Whether it's:
Feel free to open an issue or submit a pull request!
This project is open source. Check the LICENSE file for details.
Made with 🎛️ by makers, for makers
Star ⭐ this repo if you find it useful! You can also support further development buying me a Coffe ☕.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 46 | SK6812MINI | LCSC_Library:LED-SMD_4P-L3.7-W3.5-P1.75-BR-SK6812MINI | LED1, LED2, LED10, LED11, LED12, LED13, LED14, LED15, LED16, LED17, LED18, LED19, LED20, LED21, LED22, LED23 +30 |
| 13 | 100n | LCSC_Library:C0603 | C1, C2, C3, C4, C6, C9, C14, C15, C16, C17, C18, C19, C21 |
| 6 | CPG151101S11-2_C49352235 | LCSC_Library:TH_L10.9-W5.9-CPG151101S11-2 | Kal1, Kal2, Kal3, Kal4, Kal5, Kal6 |
| 5 | ~ | sliding_potentiometer_b103:b103 | S1, S2, S3, S4, S5 |
| 2 | 1.5k | LCSC_Library:R0805 | R4, R5 |
| 2 | 10p | LCSC_Library:C0603 | C10, C11 |
| 2 | 1uF | LCSC_Library:C0603 | C7, C8 |
| 2 | 22u | LCSC_Library:C0805 | C12, C13 |
| 2 | 5.1k | LCSC_Library:R0603 | R1, R2 |
| 2 | SM04B-SRSS-TB (LF)(SN) | LCSC_Library:CONN-SMD_4P-P1.00_SM04B-SRSS-TB-LF-SN | CN1, CN2 |
| 1 | 10k | LCSC_Library:R0603 | R3 |
| 1 | 10u | LCSC_Library:C0603 | C5 |
| 1 | 2.54-1*4 | LCSC_Library:HDR-TH_4P-P2.54-V-M-1 | U2 |
| 1 | AMS1117-3.3 | LCSC_Library:SOT-223-3_L6.5-W3.4-P2.30-LS7.0-BR | U3 |
| 1 | BXJ 10V1000uF | LCSC_Library:CAP-SMD_BD10.0-L10.3-W10.3-FD | C20 |
| 1 | Ferritebead | LCSC_Library:L0603 | L1 |
| 1 | GD25Q64ESIG | LCSC_Library:SOP-8_L5.3-W5.3-P1.27-LS8.0-BL | U4 |
| 1 | MST-12D18G4 SPDT SLIDE SWITCH | LCSC_Library:SW-SMD_MST-12D18G4-SPDT-SLIDE-SWITCH | SW1 |
| 1 | Red led | LCSC_Library:LED0805-R-RD_RED | LED47 |
| 1 | SN74AHCT125DR | LCSC_Library:SOIC-14_L8.7-W3.9-P1.27-LS6.0-BL | U5 |
| 1 | SS14 | LCSC_Library:SMA_L4.2-W2.6-LS5.0-RD_1 | D2 |
| 1 | STM32F103C8T6 | LCSC_Library:LQFP-48_L7.0-W7.0-P0.50-LS9.0-BL | U1 |
| 1 | USB_C_Receptacle_HRO_TYPE-C-31-M-12 | Connector_USB:USB_C_Receptacle_HRO_TYPE-C-31-M-12 | USB |
| 1 | X322516MMB4SI | LCSC_Library:CRYSTAL-SMD_4P-L3.2-W2.5-BL | X1 |
| 1 | ~ | sliding_potentiometer_b103:screen | D1 |
The 97 most common of 113 parts.
It measures 154.7 × 113 mm and has 2 copper layers, 1.6 mm thick.
113 parts, built around the STM32F103C8T6, GD25Q64ESIG, AMS1117-3.3 and SK6812MINI-E. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
From the RaduAndre/DeskMixer repository on GitHub, at the commit this page was made from: the board is gerber/desk_mixer/desk_mixer.kicad_pcb and its schematic gerber/desk_mixer/desk_mixer.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask RaduAndre before reusing the design.

Queens-Rocket-Engineering-Team/Avionics-23-26
QRET Avionics hardware, firmware, and documentation for 2023 to 2025.

Sanassah/RocketPower
Active fin control flight computer for a model rocket, built from scratch: custom PCB, Cortex-M7 firmware, PD attitude control, and hardware-in-the-loop testing.


Queens-Rocket-Engineering-Team/av-power
QRET Avionics PCBs and firmware for delivering power to SRAD PCBs

daedalus-ind/icarus-hardware
Hardware of the onboard flight computer for the Icarus rocket.

Momozavur/F7FC-V0.1
Open the appropriate .kicadpro file in KiCad; .pro entries are legacy projects. Keep schematics, boards, local libraries, library tables, and supporting files together.


llatva/hzbugger
Hzbugger, a Black Magic Probe compatible SWD/debugger tool