A compact, wireless media controller built with an ESP32 and BLE HID keyboard emulation. Designed and built as part of Georgia Tech's ECE 1100 Discovery Project.
- Bluetooth Low Energy — pairs wirelessly with any BLE-capable host machine
- Three media controls — play/pause, next track, previous track
- Pocket-sized — 70 × 40 × 45 mm, fits comfortably in one hand
- No drivers needed — appears as a standard HID keyboard
| Component | Details |
|---|---|
| Microcontroller | ESP32 (Micro-USB) |
| Buttons | 3× momentary push buttons (GPIO 13, 12, 14) |
| Enclosure | 3D-printed (see CAD/) |
| Power | USB 5V via Micro-USB |
Each button connects between its GPIO pin and GND. The ESP32's internal pull-up resistors handle the logic — no external resistors required.
| Button | GPIO |
|---|---|
| Play/Pause | 13 |
| Next Track | 12 |
| Prev Track | 14 |
ESPKeyboard/
├── CAD/ # 3D model files (enclosure only)
├── firmware/ # ESP32 Arduino source code
├── rendered_images/ # Rendered images of the device
├── LICENSE
└── README.md
Note: The tactile button and ESP32 development board 3D models are sourced from GrabCAD and are not included in this repository due to their licensing terms (CC BY-NC). Only the original enclosure design is included in
CAD/.
- Arduino IDE or PlatformIO
- ESP32-BLE-Keyboard library
- Clone this repository
- Open the firmware sketch in Arduino IDE or PlatformIO
- Install the
ESP32-BLE-Keyboardlibrary - Select your ESP32 board and port
- Upload
This project is open-sourced under the MIT License.
