A DIY volume knob & device switcher for Windows
Built with Arduino Pro Micro + Python ✨
VolControl transforms an Arduino Pro Micro (ATmega32U4), an SSD1306 OLED screen, and an EC11 rotary encoder into a sleek volume controller.
- 🔊 Rotate the encoder → Adjust system volume
- 🎧 Press the encoder → Switch audio device (via F13 key + SoundSwitch)
- 💡 F13 is chosen because it’s unused (i think) in Windows, avoiding conflicts
- Arduino Pro Micro (ATmega32U4)
- SSD1306 OLED display (128×64, I2C)
- EC11 rotary encoder with push-button
- Jumper wires / breadboard (or custom PCB)
- 3D Printed case (Optional)
- Open
main.cppin the PlatformIO. - Verify/adjust I2C pins and encoder pins if needed.
- Upload to the Pro Micro.
VolControl-SerialCOM.py, A Python script reads serial data and controls Windows volume using PyCAW.
-
Install Python 3.6+
-
(Optional) Create & activate a virtual environment:
python -m venv venv # Linux/macOS source venv/bin/activate # Windows venv\Scripts\activate
-
Install dependencies:
pip install -r requirements.txt
-
Plug in VolControl via USB and run:
python VolControl-SerialCOM.py
- 🔊 Rotate encoder → Increase / Decrease volume
- 🎧 Press encoder → Change device
- Adafruit_SSD1306
- Adafruit_GFX
- Encoder
- HID-Project
Provided in requirements.txt:
comtypes
pycaw
pyaudio
pyserial
- SoundSwitch by @Belphemur