Skip to the content
PCBKitNew board
2 layers131 × 93.8 mmExpensivo, the printed circuit board in 3D

Wireless, diodeless Cheapino-shaped split keyboard: reversible nice!nano PCB, ZMK config and 3D-printed case

Size
131 × 93.8 mm
Copper layers
2
Thickness
1.6 mm
Parts
41
Nets
34
Pads
356
Tracks, vias
707, 17
Pours
5
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
26 Sep 2026
Updated
31 Oct 2026

Overview

Expensivo is an open-source printed circuit board by tompi, from the tompi/expensivo repository on GitHub, published under the CC-BY-4.0 licence. It is a 2-layer board of 131 × 93.8 mm with 41 parts on 34 nets, routed with 707 tracks and 17 vias.

It is built around the PCM12SMTR. Its parts include 22 switches and 1 IC. It belongs with the keyboards and input boards and the nRF52 and nRF5x boards of this library.

Main components

1

README

readme.md

Expensivo

Expensivo: both halves, built, with a trackball in between

A wireless version of the Cheapino: same shape and key layout, but with a nice!nano in each half, ZMK and Bluetooth between the halves. Not quite as cheap anymore, hence the name.

Expensivo, both halves

  • 36 keys (3x5 + 3 thumb keys per half), MX hotswap sockets
  • every key has its own pin on the nice!nano: no diodes, no matrix
  • one reversible PCB for both halves: the left half is built on the front, the right half on the back
  • LiPo battery, power switch and reset button on each half
  • optional EC11 encoder on the right half
  • 3D-printed case with an optional magnetic cover over the nice!nano

Exploded view: keycaps, switches, top case and cover, PCB with nice!nano, bottom plate

Parts per keyboard

PartQtyNotes
PCB2same board for both halves, see Ordering the PCB
nice!nano v22or a compatible nRF52840 Pro Micro clone
Sockets + pins for the nice!nano2 sets12-pin single row; the case assumes the nano sits 4.9 mm above the PCB
LiPo battery2fits under the nano between the sockets, e.g. 301230 (3 x 12 x 30 mm); may stick out ~6 mm past the nano
MX switches36
Kailh MX hotswap sockets36MX, not low profile
Slide switch PCM12SMTR2one per half
Tactile switch TL33422reset, one per half
Keycaps36
EC11 encoder0-1optional, right half only

For the case, per keyboard: 16 M2 heat-set inserts (4 mm long, 3 mm OD), 16 M2x5 countersunk screws, silicone bumpers (10 mm), 8 + 8 6x2 mm magnets (8 in the bottom plates, 8 for the two covers).

Building it

The PCB is reversible, so it matters which side you solder on:

  • left half: everything on the front side (the side marked LEFT); hotswap sockets on the back
  • right half: everything on the back side (marked RIGHT); hotswap sockets on the front
  • the nice!nano goes on the same side as its label, components facing up
  • bridge the four solder jumpers next to the nano's top pins on the side the nano is on (marked "BRIDGE ALL 4"), and leave the other four open
  • the power switch and reset button have a footprint on each side; fit only the one on top
  • battery to the pads below the nano, + and - are marked

The schematic shows how it is wired, including which nano pin ends up on which hole on each side.

Firmware

ZMK, built by GitHub Actions on every push (see the Actions tab for the .uf2 files). The left half is the central and has ZMK Studio enabled.

To flash, double-tap reset and copy the matching .uf2 to the drive that shows up. Flash settings_reset first if the nanos were used before.

Case

Cover lifted off, showing the magnets and locating pegs

OpenSCAD files in case/, see case/readme.md. The top frames print top face down without supports, so do the covers; the covers hold on with magnets and can be left off.

Ordering the PCB

scripts/gerbers.sh writes build/expensivo-jlcpcb.zip, ready for JLCPCB: 2 layers, 1.6 mm, default settings. 5 boards is two keyboards and a spare. Choose ENIG if you want the copper logo to stay shiny.

The PCB

How it's made

Everything is generated by scripts, so edit those rather than the outputs:

ScriptMakes
scripts/build.shthe full board build: footprint, PCB, routing, DRC/ERC, schematic, case data
scripts/build_pcb.pythe PCB, starting from the Cheapino board: parts, nets, outline, logo
scripts/gen_nano_footprint.pythe reversible nice!nano footprint
scripts/gen_schematic.pythe schematic, from the PCB's parts and nets
scripts/gen_zmk.pythe ZMK shield pin lists
scripts/gen_case.pyPCB geometry for the OpenSCAD case
scripts/gerbers.shGerbers and drill files for JLCPCB

The pin map shared by the PCB, schematic and firmware is in scripts/layout.py. Routing is done by Freerouting (downloaded on first run, needs Java). The scripts expect KiCad 8 in /Applications/KiCad.

Both halves without a case: switches, nice!nanos and batteries on the PCBs

License

This work is licensed under a Creative Commons Attribution license.

Parts

41
QtyValueFootprintReferences
18MXexpensivo:Kailh_socket_MX_optional_reversibleK1, K2, K3, K4, K5, K6, K7, K10, K11, K12, K13, K14, K15, K16, K17, K18 +2
8MountingHole_2.2mm_M2MountingHole:MountingHole_2.2mm_M2H1, H2, H3, H4, H5, H7, H8, H9
4backJumper:SolderJumper-2_P1.3mm_Open_TrianglePad1.0x1.5mmJP5, JP6, JP7, JP8
4frontJumper:SolderJumper-2_P1.3mm_Open_TrianglePad1.0x1.5mmJP1, JP2, JP3, JP4
2PCM12SMTRButton_Switch_SMD:SW_SPDT_PCM12SW1, SW2
2RESETButton_Switch_SMD:SW_SPST_TL3342SW3, SW4
1BatteryConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalBT1
1EC11 (optional)Rotary_Encoder:RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mmENC1
1nice!nano v2expensivo:nice_nano_reversibleU1

Questions

How big is the Expensivo PCB?

It measures 131 × 93.8 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Expensivo use?

41 parts, built around the PCM12SMTR. 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 Expensivo KiCad files?

From the tompi/expensivo repository on GitHub, at the commit this page was made from: the board is pcb/expensivo.kicad_pcb and its schematic pcb/expensivo.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Expensivo design in my own project?

Its repository publishes it under the CC-BY-4.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

Similar boards

  • 2 layers277.2 × 107.5 mmCorne V4 Pro Micro Edition, the printed circuit board in 3D

    Corne V4 Pro Micro Edition

    klouderone/CorneV4ProMicroEdition

    The Corne V4 with Pro Micro Micocontrollers, made specifically for beginners and support for wireless microcontrollers

    112 parts208CC-BY-4.0
  • 2 layers275.5 × 105.6 mmULK, the printed circuit board in 3D

    ULK

    Goga64/ULK

    Low profile split keyboard with Corne 42 Layout and Cerry ULP switches. (6mm height)

    124 parts58MIT
  • 2 layers97.6 × 78.2 mmTired Seagull, the printed circuit board in 3D

    Tired Seagull

    klouderone/SeagullMacropad

    The Seagull Macropad is based off the Rhino Pad, that supports both MX and Choc switches. The Macropad features an aesthetic but functional diode layout, an encoder, and pads for a battery and battery switch for…

    38 parts31
  • 2 layers334.7 × 118.8 mmSplit, the printed circuit board in 3D

    Split

    tedraykov/spliteo

    Ergonomic split keyboard with a 3x6 matrix layout and a 4 key thumb cluster.

    102 parts31
  • 2 layers240.7 × 110.1 mmKiwi 36, the printed circuit board in 3D

    Kiwi 36

    klouderone/Kiwi36-Split

    A 36 Key Split Keyboard for beginners packed full of features, such as USB-C interconnect, an extensive case library, and wireless support

    99 parts23
  • 2 layers64.4 × 42.2 mmSharp ce140f emul v2, the printed circuit board in 3D

    Sharp ce140f emul v2

    ffxx68/Sharp_ce140f_emul

    At the time (I'm talking about mid '80s early '90s), what I thought my Sharp-PC was missing the most was a convenient way to store and load programs.

    54 parts22
  • 2 layers116.3 × 59.2 mmRhino Pad Board V2, the printed circuit board in 3D

    Rhino Pad Board V2

    klouderone/therhinopad

    The Rhino Pad is a compact Macro Pad tailored for Computer-Aided Drawing, with 13 keys and an encoder that can be programmed for any macro in your program.

    31 parts22
  • 4 layers100 × 100 mmD1600e psu breakout board, the printed circuit board in 3D

    D1600e psu breakout board

    antmicro/d1600e-psu-breakout

    Breakout board for DELL D1600E-S0 Power Supply Unit

    237 parts20Apache-2.0