Skip to the content
PCBKitNew board
2 layers100 × 55 mmEsp32-ble gamepad, the printed circuit board in 3D

ESP32BLEController is a ESP32 based project that aimes to make an affortable controller.

Size
100 × 55 mm
Copper layers
2
Thickness
1.6 mm
Parts
46
Nets
87
Pads
237
Tracks, vias
271, 58
Pours
7
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
3 Dec 2024
Updated
6 Jan 2025

Overview

Esp32-ble gamepad is an open-source printed circuit board by Cath272, from the Cath272/ESP32BLE_Controller repository on GitHub. It is a 2-layer board of 100 × 55 mm with 46 parts on 87 nets, routed with 271 tracks and 58 vias.

It is built around the ESP32-WROOM-32D, CH343P and TPS63020, with the BC817 among its other parts. Its parts include 14 switches, 12 resistors, 7 capacitors, 3 ICs and 3 transistors. It belongs with the keyboards and input and radio and wireless boards and the ESP32 boards of this library.

Main components

4

README

readme.md

Introduction

ESP32BLE_Controller is a ESP32 based project that aimes to make an affortable controller.

The project idea came around when i wanted to incorporate pcb design with a esp32 microcontroller. The controller uses the ESP32-BLE-CompositeHID library and can be used on any Bluetooth device that can accept xinput devices.

General description

The player turns on the controller and connects it to a pc/phone and it just works as a XINPUT device and can control any game/sofware that implements the xinput API

Block diagram

image

Hardware Design

ESP32 Wroom Module

This project is based on the ESP32-WROOM-32 Module that incorporates an Espressif ESP32 Dual Core 32bit microcontroller with 4MB of Flash Storage, an crystal oscilator, decoupling capacitors and an 2.4Ghz Antena for Wi-Fi and Bluetooth. I have chosen this module beacause of it's ease of use, the familiarity i have with it and it low price (around 2.5EUR).

USB C 14pin port

USB port for programing and for providing 5V power. It uses 2 5.1K resistors on the CC lines so it can use USB PD and request 5V from it. (Aka use a Type C to Type C cable)

TPS63020 - High Efficiency Single Inductor Buck-Boost Converter

Buck Boost Converter that converts 5V from USB to the 3.3V used by the Wroom Module and the CH343p Ic. It also needs an 1.5uH Inductor and filtering caps on the input and output. I chose this Ic because of its High Efficiency.

CH343P USB to High-Speed Serial Chip

USB to High Speed Serial Ic for programming the ESP32. It is made by WCH and i mainly chose it beacause of its small form QFN package and its low price.

10 Buttons

10 SMD Buttons connected to GPIOs of the ESP32.

2 BC817 Transistors

2 Transistors used for the auto programming circuit

2 LEDS (RED for Power and BLUE IO2 configurable)

Schematic:

image

Bill of materials

ComponentImageModelPcsPriceLink
ESP32 Wroom Module199600425ESP32-WROOM-3212.5EURAliexpress
USB C 16pin portUntitledUSB C 16 PIN14.85EUR/100Pcs, 0.05EUR/1PcsAliexpress
Buck Boost CoverterScreenshot TPS6302013.5EU10/Pcs 0.35EUR/PcsAliexpress
USB To SerialimagesCH343P18EUR/10Pcs, 0.8EUR/1PcsAliexpress
Buttons ClosedMetal Dome 3.73.70.35mm101.5EUR/10PcsAliexpress
NPN Transistor 502BC81721.5EUR/100PCs, 0.015EUR/PcsAliexpress

Other Components are from Components Sample Books that include many values of Resistors, LEDs and Capacitors that i bought before.

###PCB

The PCB was created by me, using KICAD 8.0

Front: image image

Back: image image

Software Design

The program is simple and just reads what buttons are pressed and send the matching XINPUT mapped button through bluetooth to the connected device. The Program is centered around the ESP32-BLE-CompositeHID library and a specific version of NimBLE-Arduino (Not needed anymore as the CompositeHID library was updated recently). I used the ESP32-BLE-CompositeHID library because i wanted it to work seamlessly with any windows device, as it just sees it as an Xbox Controller, and windows has xbox controller drivers built in. No need for Steam mapping or any other software. The Project uses buttons, an led for showing that it conected to the pc and it uses Serial to print any pressed button.

Results

20250103_162523 20250102_225240 20250102_225247 20250102_225254 20250103_162518

Video demonstration

Resources

ESP32-BLE-CompositeHID library

NimBLE-Arduino

Parts

46
QtyValueFootprintReferences
410KResistor_SMD:R_0402_1005MetricR4, R5, R10, R12
3470Resistor_SMD:R_0402_1005MetricR11, R13, R15
20.1uFCapacitor_SMD:C_0402_1005MetricC3, C10
21uFCapacitor_SMD:C_0402_1005MetricC4, C5
222uFCapacitor_SMD:C_0805_2012MetricC1, C2
25.1kResistor_SMD:R_0402_1005MetricR2, R3
2BC817Package_TO_SOT_SMD:SOT-23Q1, Q2
2LEDLED_SMD:LED_0603_1608MetricD1, D3
2SW_PushButton_Switch_SMD:SW_SPST_PTS810SW2, SW3
11.5kResistor_SMD:R_0402_1005MetricR1
11.5uHInductor_SMD:L_6.3x6.3_H3L1
1100uF 6.3VCapacitor_Tantalum_SMD:CP_EIA-3528-15_AVX-H_Pad1.50x2.35mm_HandSolderC7
1180kResistor_SMD:R_0402_1005MetricR17
11MResistor_SMD:R_0402_1005MetricR16
12x 1.2V NihM AAConnector_PinSocket_2.54mm:PinSocket_1x02_P2.54mm_VerticalBT1
1A Buttonfootprints:430173003816S2
1B Buttonfootprints:430173003816S3
1CH343PPackage_DFN_QFN:TQFN-16-1EP_3x3mm_P0.5mm_EP1.6x1.6mmU3
1Downfootprints:430173003816S9
1ESP32-WROOM-32DRF_Module:ESP32-WROOM-32DU1
1L ButtonButton_Switch_THT:SW_Tactile_SKHH_AngledSW4
1LOGOfootprints:esp32_purpleG***
1LOGOLOGOG***
1Leftfootprints:430173003816S10
1PMOSPackage_TO_SOT_SMD:TSOT-23_HandSolderingQ3
1R ButtonButton_Switch_THT:SW_Tactile_SKHH_AngledSW1
1Rightfootprints:430173003816S8
1Select Buttonfootprints:430173003816S6
1Start Buttonfootprints:430173003816S5
1TPS63020footprints:QFN14-3X4MMU4
1UPfootprints:430173003816S7
1USB_C_Receptacle_USB2.0_16PConnector_USB:USB_C_Receptacle_GCT_USB4105-xx-A_16P_TopMnt_HorizontalJ1
1X Buttonfootprints:430173003816S1
1Y buttonfootprints:430173003816S4

Questions

How big is the Esp32-ble gamepad PCB?

It measures 100 × 55 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Esp32-ble gamepad use?

46 parts, built around the ESP32-WROOM-32D, CH343P, TPS63020 and BC817. 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 Esp32-ble gamepad KiCad files?

From the Cath272/ESP32BLE_Controller repository on GitHub, at the commit this page was made from: the board is PCB/esp32-ble-gamepad.kicad_pcb and its schematic PCB/esp32-ble-gamepad.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Esp32-ble gamepad design in my own project?

Its repository states no licence, so its author keeps all rights: ask Cath272 before reusing the design.

Similar boards

  • 2 layers83.9 × 76 mmEsp32 IoT, the printed circuit board in 3D

    Esp32 IoT

    Cath272/ESP32_Purple

    The ESP32 PURPLE was build because i wanted to design my own esp32 based microcontroller with a few extra features.

    41 partsMIT
  • 2 layers99.1 × 99.1 mmESP32 Data Acquisition Board, the printed circuit board in 3D

    ESP32 Data Acquisition Board

    TheBigBoschi/ESP32-Data-Acquisition-Board-PCB

    Custom PCB holding an ESP32, various sensor, a LoRa transmitter and the power management to run off a single lithium battery, cherged by solar power.

    96 parts
  • 4 layers149.9 × 74.2 mmBCD-0o27, the printed circuit board in 3D

    BCD-0o27

    petnica-rac-seminari/BCD-0o27-Tetris

    The BalcCon Cyberdeck 0o27 (BCD-0o27) comes with a development framework that makes it easier to add functionality to the cyberdeck.

    142 parts1
  • 2 layers72 × 42 mmNRF24 jammer, the printed circuit board in 3D

    NRF24 jammer

    W0rthlessS0ul/nRF24_jammer

    The nRF24 jammer is a powerful tool that requires an ESP32 and configurable numbers of NRF24 modules to assemble.

    51 parts1kMIT
  • 6 layers100 × 50 mmArchive, the printed circuit board in 3D

    Archive

    sikaxn/FRC-Custom-CAN-Sensor

    If you are looking for IronMaple ESP32‐FRC‐devkit resources, please switch branch to dev-board.

    92 parts12GPL-3.0
  • 2 layers141.8 × 151.3 mmRadioNoob, the printed circuit board in 3D

    RadioNoob

    EIectron/RadioNoob

    An Open Source Radio Transmitter Project

    189 parts8
  • 2 layers40 × 98 mmAirquality, the printed circuit board in 3D

    Airquality

    LukasLendvorsky/airquallity-esphome

    WIFI airquality sensor with ESP32

    59 parts3GPL-3.0
  • 4 layers92 × 88 mmIOT, the printed circuit board in 3D

    IOT

    Habib-creater/ESP32-IoT-Monitoring-Control-Board

    4-layer ESP32-based IoT monitoring and control board with environmental sensing, relay control, USB-C, and Qwiic expansion.

    63 parts1