
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.

ESP32BLEController is a ESP32 based project that aimes to make an affortable controller.
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.
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.
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
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 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)
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.
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 SMD Buttons connected to GPIOs of the ESP32.
2 Transistors used for the auto programming circuit
| Component | Image | Model | Pcs | Price | Link |
|---|---|---|---|---|---|
| ESP32 Wroom Module | ESP32-WROOM-32 | 1 | 2.5EUR | Aliexpress | |
| USB C 16pin port | USB C 16 PIN | 1 | 4.85EUR/100Pcs, 0.05EUR/1Pcs | Aliexpress | |
| Buck Boost Coverter | TPS63020 | 1 | 3.5EU10/Pcs 0.35EUR/Pcs | Aliexpress | |
| USB To Serial | CH343P | 1 | 8EUR/10Pcs, 0.8EUR/1Pcs | Aliexpress | |
| Buttons | Metal Dome 3.73.70.35mm | 10 | 1.5EUR/10Pcs | Aliexpress | |
| NPN Transistor | BC817 | 2 | 1.5EUR/100PCs, 0.015EUR/Pcs | Aliexpress |
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:
Back:
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.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 4 | 10K | Resistor_SMD:R_0402_1005Metric | R4, R5, R10, R12 |
| 3 | 470 | Resistor_SMD:R_0402_1005Metric | R11, R13, R15 |
| 2 | 0.1uF | Capacitor_SMD:C_0402_1005Metric | C3, C10 |
| 2 | 1uF | Capacitor_SMD:C_0402_1005Metric | C4, C5 |
| 2 | 22uF | Capacitor_SMD:C_0805_2012Metric | C1, C2 |
| 2 | 5.1k | Resistor_SMD:R_0402_1005Metric | R2, R3 |
| 2 | BC817 | Package_TO_SOT_SMD:SOT-23 | Q1, Q2 |
| 2 | LED | LED_SMD:LED_0603_1608Metric | D1, D3 |
| 2 | SW_Push | Button_Switch_SMD:SW_SPST_PTS810 | SW2, SW3 |
| 1 | 1.5k | Resistor_SMD:R_0402_1005Metric | R1 |
| 1 | 1.5uH | Inductor_SMD:L_6.3x6.3_H3 | L1 |
| 1 | 100uF 6.3V | Capacitor_Tantalum_SMD:CP_EIA-3528-15_AVX-H_Pad1.50x2.35mm_HandSolder | C7 |
| 1 | 180k | Resistor_SMD:R_0402_1005Metric | R17 |
| 1 | 1M | Resistor_SMD:R_0402_1005Metric | R16 |
| 1 | 2x 1.2V NihM AA | Connector_PinSocket_2.54mm:PinSocket_1x02_P2.54mm_Vertical | BT1 |
| 1 | A Button | footprints:430173003816 | S2 |
| 1 | B Button | footprints:430173003816 | S3 |
| 1 | CH343P | Package_DFN_QFN:TQFN-16-1EP_3x3mm_P0.5mm_EP1.6x1.6mm | U3 |
| 1 | Down | footprints:430173003816 | S9 |
| 1 | ESP32-WROOM-32D | RF_Module:ESP32-WROOM-32D | U1 |
| 1 | L Button | Button_Switch_THT:SW_Tactile_SKHH_Angled | SW4 |
| 1 | LOGO | footprints:esp32_purple | G*** |
| 1 | LOGO | LOGO | G*** |
| 1 | Left | footprints:430173003816 | S10 |
| 1 | PMOS | Package_TO_SOT_SMD:TSOT-23_HandSoldering | Q3 |
| 1 | R Button | Button_Switch_THT:SW_Tactile_SKHH_Angled | SW1 |
| 1 | Right | footprints:430173003816 | S8 |
| 1 | Select Button | footprints:430173003816 | S6 |
| 1 | Start Button | footprints:430173003816 | S5 |
| 1 | TPS63020 | footprints:QFN14-3X4MM | U4 |
| 1 | UP | footprints:430173003816 | S7 |
| 1 | USB_C_Receptacle_USB2.0_16P | Connector_USB:USB_C_Receptacle_GCT_USB4105-xx-A_16P_TopMnt_Horizontal | J1 |
| 1 | X Button | footprints:430173003816 | S1 |
| 1 | Y button | footprints:430173003816 | S4 |
It measures 100 × 55 mm and has 2 copper layers, 1.6 mm thick.
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.
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.
Its repository states no licence, so its author keeps all rights: ask Cath272 before reusing the design.

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

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.

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.

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

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



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.