Skip to the content
PCBKitNew board
2 layers112 × 46 mmPy consoller, the printed circuit board in 3D

A gaming console based on a Raspberry Pi 5 and python games with 5 bluetooth-controllers

Size
112 × 46 mm
Copper layers
2
Thickness
1.6 mm
Parts
37
Nets
41
Pads
170
Tracks, vias
359, 0
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
1 Jan 2026
Updated
26 May 2026

Overview

Py consoller is an open-source printed circuit board by doBeschte, from the doBeschte/py.console repository on GitHub. It is a 2-layer board of 112 × 46 mm with 37 parts on 41 nets, routed with 359 tracks and 0 vias.

It is built around the IRLZ34N. Its parts include 20 diodes, 5 resistors, 4 ICs, 3 capacitors and 2 switches. It belongs with the ESP32 and RISC-V boards of this library.

Main components

1

README

README.md

py.console

A gaming console based on a Raspberry Pi 5 and python games with 5 bluetooth-controllers I designed the 3D-printed parts in Fusion360, the schematics and the PCB in KiCAD.

HARDWARE

CONSOLE

Console rendering

The console is based on a Raspberry Pi 5. The 3D-printed housing (12cm x 12cm) includes two parts. The main part holds all the components and electronics. The top view looks like this: Bildschirmfoto 2026-01-09 um 21 03 50

On the left side of this picture the Raspberry Pi will be mounted using four pieces that fit into its mounting holes. The HDMI-Ports and the USB-C-Ports are accessible from the back side of the console. On the sides I designed some holes for the air outlet of the device. Bildschirmfoto 2026-01-09 um 20 36 10

On the front are two holes for a USB port and a boot push button. The USB port is connected to the USB port of the Raspberry Pi. It will be used to connect a USB stick with the .py game files. The wires of the push button are connected to the two pins next to the battery connector on the Raspberry Pi to act like the integrated button. The button has an integrated LED that is connected to GPIO13 with a resistor in series to be enabled when the device is operating. An active buzzer is connected to GPIO18 to make a sound when booting or starting a game. It is placed in the hole of the case.

The other housing part is the top cover. Bildschirmfoto 2026-01-09 um 21 09 07

It is mounted with two screws on the front and round pieces that fit into holes in the main part at the back. Bildschirmfoto 2026-01-09 um 21 11 52

I will use the Raspberry Pi active cooler that takes air through the holes in the top cover.

https://github.com/user-attachments/assets/2c3ed64f-fc42-457b-9e3d-2fc4b27291a0

This video shows how the mounting will work

CONTROLLERS

The controllers are more complicated as they are smaller and include more components. I build five of them because a lot of things are shipped in five or ten, including PCBs, Joysticks, buttons, batteries etc. .

Bildschirmfoto 2026-01-14 um 21 28 14

The rendering doesn't include the joystick because I don't print it by myself.

Bildschirmfoto 2026-05-26 um 19 56 19 Bildschirmfoto 2026-01-06 um 15 12 12

The microcontroller is a XIAO-ESP32-C3 that has BLE and a battery charger and it is small. Its USB-C port is the charging port of my controller.

At the left side is a tipical thumb joystick and at the right side two buttons. They are connected to inputs on the ESP32 and GND. Around the PCB are 20 "PL9823" LEDs. They need 5 volts which the ESP32 doesn't deliver. So, I use a little boost converter from the battery cell to five volts and a 74125 level shifter (with a 330Ω resistor) for the data. A MOSFET turnes the boost converter off when the ESP32 is in DeepSleep. Two capacitors deliver high current for the LEDs for a short time. The battery voltage is measured by splitting it in half using two resistors 1MΩ

The device is 12cm x 5cm, rounded at the sides and around 26mm thick. The case is made like the one of the console, but the cover is at the opposite side. The PCB is held between these two parts. The main part holds the battery in the middle and the "keycaps" at the right side OF THE DEVICE. Bildschirmfoto 2026-01-06 um 18 56 03

The "keycaps" just fit into their holes and have a margin to prevent falling out. Bildschirmfoto 2026-01-06 um 18 56 38

The cover is screwed into the main case at the sides. It holds the PCB at the edges, under the joystick and under the keys for pressure, leaving a bit of space for the solder joints.

The PCB in my Renderings does not already contain all of the parts and some are just visible as pin headers:

Bildschirmfoto 2026-05-26 um 20 54 24

The following picture shows the mounted PCB inside the case. It might look wrong at the sides (little space) but it isn't.

Controller Rendering

BOM

CONSOLE:

• Raspberry Pi 5, 4GB RAM - /

• Power supply for Pi 5 - /

• Raspberry Pi 5 active cooler - /

• USB-A port - /

• push button, 16mm mounting hole - /

• active buzzer, 24mm Ø - /

• 330Ω resistor - /

• microSD-card - /

TOTAL PRICE CONSOLE: / (I will buy everything by myself)

CONTROLLERS:

• 5pcs custom PCB, 112mm*46mm - 5,16€

• 5pcs Seeed Studio XIAO-ESP32-C3 - 33,33€

• 5pcs thumb joystick - 0,87€

• 10pcs silent push button, 8*8mm - 5,62€

• 10pcs LiPo battery, 30mm* 40mm* 5mm - 16,88€

• 5pcs voltage regulator - 7,50€

• 5pcs 74125 level shifter - 5,04€

• 5pcs 330Ω resistor - / (I have them)

• 10pcs 1MΩ resistor - / (also them :D )

• 10pcs 100nF capacitor - 0,87€

• 5pcs polarized capacitor - 0,87€

• 100pcs PL9823 LED - 5,50€

• 5pcs MOSFET (IRLZ44N) - 4,60€

TOTAL PRICE 5 CONTROLLERS: 85,55€

SOFTWARE

CONSOLE

The console uses the Raspberry Pi Desktop. After booting, a menu appears. It shows python files saved on the external USB stick and uses pygame for the graphics. The idea behind this project: All of the other software are some python games on a USB stick. I can code them by myself or download them from the internet - as many as I want!

CONTROLLERS

The controllers are coded in C++ and use ESP32 bleGamepad library. They use DeepSleep to be shut down by pressing the joystick for 5 seconds or by inactivity. Pressing the Joystick will wake the ESP32 up. The code includes a lot of animations for the LEDs, using fastLED library. The battery level is calculated using the measured battery voltage and a table from the web. It is sent every 20 seconds to the connected device and displayed on the LEDs when starting and if it is under 20%.

cart screenshots

Please note that i will only buy the selected items.

Bildschirmfoto 2026-01-17 um 15 13 49 Bildschirmfoto 2026-01-17 um 15 13 39 Bildschirmfoto 2026-01-17 um 15 13 28 Bildschirmfoto 2026-01-17 um 15 13 10

Parts

37
QtyValueFootprintReferences
20PL9823LED_THT:LED_D5.0mm-4_RGBD1, D2, D3, D4, D5, D10, D11, D12, D13, D14, D15, D16, D17, D18, D19, D20 +4
3RResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P2.54mm_VerticalR2, R3, R5
2CCapacitor_THT:C_Disc_D5.0mm_W2.5mm_P2.50mmC1, C3
2SW_PushButton_Switch_THT:SW_PUSH-12mmSW1, SW2
1330ΩResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P2.54mm_VerticalR1
174125Package_DIP:DIP-14_W7.62mmU4
1Battery_CellConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalBT1
1C_PolarizedCapacitor_THT:CP_Radial_D10.0mm_P5.00mmC2
1Conn_01x02Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ1
1IRLZ34NPackage_TO_SOT_THT:TO-220-3_VerticalQ1
1JOYSTICK_W_BUTTONCOM-09032:XDCR_COM-09032U2
1RResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR4
1XIAO ESP32C3Seeed Studio XIAO Series Library:XIAO-ESP32C3-DIPU1
1~Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalU3

Questions

How big is the Py consoller PCB?

It measures 112 × 46 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Py consoller use?

37 parts, built around the IRLZ34N. 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 Py consoller KiCad files?

From the doBeschte/py.console repository on GitHub, at the commit this page was made from: the board is py_console/Hardware/controller/PCB/py_consoller.kicad_pcb and its schematic py_console/Hardware/console/py_console.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Py consoller design in my own project?

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

Similar boards

  • 2 layers100 × 50 mmEspled, the printed circuit board in 3D

    Espled

    Yottabits/espled

    THE one and only esp8266 LED Controller

    52 parts6
  • 2 layers224.8 × 60.3 mmDeurnode nieuw, the printed circuit board in 3D

    Deurnode nieuw

    Hans-Beerman/Deurnode_ESP32-PoE

    KiCad design Deurnode for the MakerSpace Leiden, based on the Olimex ESP32-PoE

    38 parts4Apache-2.0
  • 2 layers111.3 × 68.1 mmMKS relay v4, the printed circuit board in 3D

    MKS relay v4

    3D-Printing-for-Microfluidics/3D_printer_control

    2nd generation 3D printer control software

    67 parts3GPL-3.0
  • 2 layersWatch cleaner pcb, the printed circuit board in 3D

    Watch cleaner pcb

    DavidJ-Saving-Time/watch-cleaner

    So this is a very rough draft of code designed to run on an esp32 to control a watch cleaning machine see this YouTube video https://youtu.be/Opr75n8DbYY I'll be adding to this and making it easier for people to use.

    16 parts3MIT
  • 2 layers31.8 × 114.8 mm3DWelderPCB, the printed circuit board in 3D

    3DWelderPCB

    destroyer796/3DWelder

    An overbuilt 3D pen that will use a chc pro hotend and custom dc extruder powered by a power tool battery

    17 parts3MIT
  • 2 layers83.8 × 50.8 mmShunt charge controller, the printed circuit board in 3D

    Shunt charge controller

    grillbaer/solar-power-supply

    Solar power harvesting for micro controller projects with li-Ion battery and highly efficient charge controller

    16 parts3MIT
  • 2 layers80 × 45 mmWifiOiler01, the printed circuit board in 3D

    WifiOiler01

    volw/wifiOiler

    Automatic, distance depending chain oiler for motorbikes with track recording (GPS).

    15 parts3GPL-3.0
  • 2 layers80 × 20 mmSpider dropper, the printed circuit board in 3D

    Spider dropper

    aidtopia/spider_dropper

    Mechanism to "drop" a spider (or other lightweight prop) for Halloween fun

    10 parts2