ESP32-based BLE media controller with SSD1306 OLED display.
Features
- Play/Pause, Next, Previous buttons
- 24-segment circular volume ring
- Ripple animation when playing
- BLE HID media controls (consumer keys)
Wiring
- OLED SSD1306 (I2C)
- VCC -> 3.3V
- GND -> GND
- SDA -> GPIO 21
- SCL -> GPIO 22
- Play button
- One side -> GPIO 25
- Other side -> GND (uses INPUT_PULLUP)
- Next button
- One side -> GPIO 26
- Other side -> GND (uses INPUT_PULLUP)
- Previous button
- One side -> GPIO 27
- Other side -> GND (uses INPUT_PULLUP)
- Potentiometer (10k recommended)
- Left -> 3.3V
- Right -> GND
- Wiper (middle) -> GPIO 34 (analog input)
- Passive buzzer
-
- -> GPIO 32
-
- -> GND
-
Files
- MusicPad.ino: main sketch
- wiring diagram:
wiring.png(high-resolution wiring map)
Build
-
Install Arduino core for ESP32 and required libraries:
Adafruit_GFXAdafruit_SSD1306NimBLE-Arduino(if using NimBLE)- A compatible
ESP32-BLE-Keyboard(patched for NimBLE if necessary)
-
Compile with
arduino-cli:
arduino-cli compile --fqbn esp32:esp32:esp32 /path/to/MusicPad
Notes
- Buttons use internal pull-ups; wire buttons to GND.
- Potentiometer powered from 3.3V; do NOT connect to 5V.
- If BLE is unstable, try power-cycling the ESP32 and re-pairing on the host.
License
- MIT