

Controller
Custom ESP32 BLE HID controller + matching PCB design.
- Size
- 45.3 × 75.9 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 14
- Nets
- 16
- Pads
- 71
- Tracks, vias
- 164, 0
- Routed
- Yes
- KiCad
- KiCad 9.0 (file 20241229)
- Created
- 14 Jun 2025
- Updated
- 16 Feb 2026
Overview
Controller is an open-source printed circuit board by ZBZFirst, from the ZBZFirst/KiCad-Projects repository on GitHub. It is a 2-layer board of 45.3 × 75.9 mm with 14 parts on 16 nets, routed with 164 tracks and 0 vias.
Its parts include 8 switches and 1 IC.
README
README.mdESP32 Controller
Reference Images
PCB Layout
Attachment
Finished Build
Custom ESP32 BLE HID controller + matching PCB design.
This project combines:
- ESP32 firmware (BLE composite keyboard + mouse)
- KiCad PCB layout for a dedicated 7-button controller
- Multi-mode input system for productivity + automation
Designed as a personal hardware controller that behaves like a wireless keyboard/mouse macro pad.
Features
- BLE composite HID device (keyboard + mouse)
- 7 physical buttons
- Mode switching system
- Auto-click / auto-key spam mode
- Windows quick-launch macros
- Non-blocking firmware architecture
- Visual LED status patterns
- Custom PCB layout (KiCad)
Hardware
Board
ESP32-based custom PCB with:
- 7 tactile switches
- Onboard LED status indicator
- ESP32 dev module header
- Dedicated GPIO routing per button
KiCad layout included in repository.
File:
hardware/Controller.kicad_pcbThis board is designed specifically to run the included firmware.
Firmware Behavior
The controller has 3 operating groups.
Button 6 cycles groups.
Button 7 forces disconnect (reboot).
Group 1 — Default Productivity
| Button | Action |
|---|---|
| B1 | Ctrl + C |
| B2 | Ctrl + V |
| B3 | Ctrl + X |
| B4 | Ctrl + Z |
| B5 | 8-second mouse movement run |
LED: solid ON when connected
Group 2 — Work Launch Macros
| Button | Action |
|---|---|
| B1 | Windows search → cmd → ssh CB37 |
| B2 | Launch Edge |
| B3 | Launch Super |
| B4 | Launch Arduino |
| B5 | Launch Bluetooth |
LED: 2 blink pattern
Group 3 — Auto Mode
Toggle behaviors:
| Button | Mode |
|---|---|
| B1 | Auto left click |
| B2 | Auto right click |
| B3 | Auto middle click |
| B4 | Spam key “E” |
| B5 | Spam key “F” |
Press the same button again to stop.
LED: 3 blink pattern
LED Status
- Off → not connected
- Solid → group 1
- 2 blinks → group 2
- 3 blinks → group 3
Blink sequence repeats every 2 seconds.
Installation
Requirements
- Arduino IDE
- ESP32 board package
- NimBLE / BLE HID libraries
Open:
firmware/PaulsESP32.inoCompile and upload to the board.
Usage
- Power the controller
- Pair over Bluetooth
- Use button 6 to select mode
- Use buttons 1–5 for actions
Designed primarily for Windows but functions as a generic BLE HID device.
Project Structure
firmware/
PaulsESP32.ino
hardware/
Controller.kicad_pcb
schematics/Credits
PCB + firmware design: Paul Casillas
Artwork: Bree Pierce
Personal project.
License
MIT — free to modify and build.
file is in
AutoClicker/AutoClickerbyController.ino
Parts
14| Qty | Value | Footprint | References |
|---|---|---|---|
| 7 | SW_Push | Button_Switch_THT:SW_PUSH_6mm_H5mm | SW1, SW2, SW3, SW4, SW5, SW6, SW7 |
| 4 | R_Potentiometer_US | Potentiometer_THT:Potentiometer_Alps_RK09Y11_Single_Horizontal | RV1, RV2, RV3, RV4 |
| 1 | 10K Array | UserDefined:ResistorArray | RN1 |
| 1 | SW_SPST | Button_Switch_THT:SW_DIP_SPSTx01_Slide_9.78x4.72mm_W7.62mm_P2.54mm | SW9 |
| 1 | ~ | Espressif:ESP32-DEVKITV1-Paul-Half | U1 |
Questions
How big is the Controller PCB?
It measures 45.3 × 75.9 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Controller use?
14 parts. 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.
Where can I download the Controller KiCad files?
From the ZBZFirst/KiCad-Projects repository on GitHub, at the commit this page was made from: the board is Controller/Controller.kicad_pcb and its schematic Attachment2/Attachment2.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Controller design in my own project?
Its repository states no licence, so its author keeps all rights: ask ZBZFirst before reusing the design.
More from ZBZFirst/KiCad-Projects
5- 2 layers52.8 × 49 mm

- 2 layers25.4 × 17.8 mm

- 2 layers25.4 × 17.8 mm

- 2 layers

- 2 layers

Similar boards
- 2 layers116.8 × 30 mm

Type d
google/mozc-devices
Circuit diagrams and firmware source code for Gboard DIY keyboards
14 parts3kApache-2.0 - 2 layers32 × 22 mm

- 2 layers34 × 45 mm

2032Charger
hackclub/OnBoard
💡 Join 1,000 teenagers and make your first PCB with a $100 grant!
14 parts915 - 2 layers34 × 109.9 mm

- 2 layers45.3 × 42.7 mm

- 2 layers42.5 × 28.8 mm

C5VRX JACK DIY
Twotoz/C5VRX
Ultra-minimal, zero-CPU 5.8 GHz analog FPV video receiver using ESP32-C5 Wi-Fi 6 PHY MODEM_DIAG, BitScrambler WBFM demodulation & resistor DAC CVBS
14 parts515GPL-3.0 - 2 layers54 × 47 mm

- 2 layers62 × 24 mm
