Skip to content

280Zo/charybdis-wireless-mini-3x6-build-guide

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Wireless Charybdis Mini (3x6) Build Guide

HOME BUILD

WORK BUILD

Intro

This repository is a comprehensive build guide for the Charybdis keyboard, which is an open source, ergonomic keyboard created by Bastard Keyboards and graciously shared with the community.

This guide is a log of all the steps I took in my build process, and for the most part is just a long winded version of Eren Atas' supremely helpful build guide. However it additionally includes instructions and links to firmware for both wireless bluetooth and wireless dongle configurations.

Join the Community

For any questions, clarifications, or simply to connect with fellow Charybdis builders, feel free to join the Bastard Keyboards Discord community.

Disclaimer

This guide serves as a resource to assist you in building your Charybdis. I assume no responsibility for any damages or malfunctions that may occur during the build process.

Build Guide

Bill of Materials

These are all the components that need to be ordered to build the keyboard. The quantity column denotes how many of each component are required for the build. Adjust your order quantity as needed.

PCBs

Part Quantity
PMW3610 Breakout 1
Nano Holder 2
Thumb Right (0.8 thickness) 1
Thumb Left (0.8 thickness) 1
Plate (0.8 thickness) 2

I ordered the PCBs from JLCPCB.

Warning

A thickness of 0.8 or less must be set for the left thumb, right thumb, and plate PCBs.

The gerber files have all been pulled from other repositories and are stored in the PCB Gerber Files directory. However, each source repository is linked in the part list above for reference.

Note

An alternative to victorlucachi's PMW3610 breakout design linked above is the sensor board designed by Bastard Keyboards.

3D Case Prints

Part Quantity
Right Plate 1
Left Plate 1
Right Case 1
Left Case 1
Sensor Cover 1
Adapter Top 1
Adapter BTU Bottom 1
Ball Transfer Unit (BTU) 3

The files for these are in the 3D Print STL Files directory, and the source repos have been linked in the parts list above.

I printed these parts at home in PETG and they turned out great. I also had a set printed by JLC3DP in Nylon. That order came with a warning that some of the parts may be too thin, but I accepted the risk and they arrived just fine.

Instead of printing static tents, I used some camera & phone equipment (see tenting section below). If you choose this method as well, you don't need to print the bottom plates since they'll need to be cut out of metal separately.

3D Key Cap Prints

Part Quantity
r1 2
r2 2
r3 2
thumb 1

For one of the builds I used custom printed DES profiled key caps. These were designed by pseudoku The key set files in this repo will print sets of 10 keys for row one, two, and three, and a single set of ergo thumb keys. Row two will have home dots for the keys that go under each index finger.

JLC3DP SLS printed these in white Nylon. I dyed some of them, and I used the spares to create molds so I could create more in custom resin colors.

Note

JLC3DP charges per-part, and only allows combining a maximum of 10 small parts into a single print, which is why the sprues are included in the STL files. This means that each order is 10 keys for rows 1-3 and six keys for the thumbs.

If you have different printing requirements/capabilities, the OpenSCAD code in this fork can be changed by updating the keeb.scad file to render whatever keys you like, with or without sprues, and with or without home dots. If more than one set of rows is rendered at a time, and sprues are enabled, the sprues will be meshed in a grid.

PMW3610 Sensor

Part JLCPCB Part # MFR. Part # Quantity
PMW3610 module with lens (LM18-LSI) N/A N/A 1
LDO C79924 TLV70018DDCR 1
Thick Film Resistor C22976 0603WAF2004T5E 1
Ceramic Capacitors C15849 CL10A105KB8NNNC 1
Ceramic Capacitors C14663 CC0603KRX7R9BB104 1
Ceramic Capacitors C19666 CL10A475KO8NNNC 7

These are all the components required for the sensor breakout PCB. It's possible to have JLCPCB assemble the PCB and components for you. Just select that option at checkout and supply the bom.csv and positions.csv from the PMW3610 Breakout zip.

I chose to solder the parts on myself so I ordered the parts above. A diagram of where to solder each component on is in the assembly instructions.

Note

Part number C79924/TLV70018DDCR is a substitute for C146366/TCR2EF19,LM(CT) which is what the designer of the PCB originally used. Either component will work, but if you plan to have JLCPCB assemble the sensor board the C146366 is what's included in the parts list and it is often out of stock. The replacement is normally available which is why it's used above.

General Components

Part Quantity
Trackball 1
SuperMini NRF52840 Microcontrollers 2
Mill Max Low Profile Sockets 315-43-112-41-003000 (optional) 4
Mill Max Pins 3320-0-00-15-00-00-03-0 (optional) 48
1N4148W Signal Diodes 41
Button (4x4x1.5) 2
Mini Toggle Switch SPDT 3mm 2
3.7V 130mAh 401030 Li-Po Batteries 2
2.5mm Silicon Nitride Ceramic Ball Bearings 3
80MM Flexible Flat Cables (Flexstrip Jumper) 2 - 6 pin
2 - 5 pin
2 - 4 pin
100MM Flexible Flat Cables (Flexstrip Jumper) 2
Gateron oil king 2.0 switch three-layer pin self-lubricating linear handle 55gf Key Switches 41
M3 x D5 x L5 Brass Melt Nuts 5
M4 x D6 x L5 Brass Melt Nuts 12
M3 8mm Torx Screws 5
M4 8mm Torx Screws 12
JST plug 2-pin 2
Adhesive bumper pads 10

Note

To build the keyboard in the dongle configuration doesn't require any additional build steps, but it does require the purchace of an additional MCU and use of the correct firmware (see the Firmware section below).

The standard for microcontrollers on the Charybdis wireless keyboard builds is the nice!nano v2.0. However, there are some cheaper alternatives documented on this MCU wiki. This build uses the SuperMini NRF52840.

If you'd prefer a quieter set of key switches, there are lots of alternaves. I used the Akko V3 Penguin Tactile Silent Keyboard Switches for my work keyboard and they are decent enough.

The battery needs to be 3.7v and more than 80mAh. You can use the ZMK Power Profiler to estimate the mAh you need for your application. Make sure the dimesions match your chosen mounting location.

The cable length requirements for the flex strip cables varies between components

Component Length
Nice!Nano Holder 75mm
Thumb Plates 80mm
PMW3610 Sensor 100mm

The cables can be a bit longer or shorter, but sticking close to these lengths will make installation much easier. The parts list above uses 89mm for both the thumb plates and Nice!Nano holders, and 100mm for the sensor.

Tool List

  • Soldering iron with a fine tip and adjustable temperatures
  • Solder
  • Solder wick and desoldering pump
  • ESD safe tweezers
  • Kapton tape
  • Double sided tape
  • Torx screw drivers (T10 and T20)
  • Scissors
  • Flush cutting pliers
  • (optional) ESD mat and strap
  • (optional) filter fan
  • (optional) flux
  • (optional) heat shrink tubing for battery connection
  • (optional) self closing tweezers or kelly forceps
  • (optional) magnifying glass or microscope

Assembly

Bastard Keyboard's build guides are excellent and comprehensive. Their documentation will be linked as much as possible in the steps below.

Melt nuts

Follow BastardKB's build guide to install screw inserts on the cases.

Then follow their build guide to install screw inserts on the sensor assembly.

Diodes

BastardKB's documentation on how to solder diodes on both plates and thumb clusters.

Sensor Breakout Components (optional)

If you've chosen to solder the components on the PMW3610 breakout PCB, follow the diagram below to get them in the correct spots.

A stand with a magnifying glass, or a digital microscope are very helpful when trying to ensure the soldering is done correctly on these small components.

PMW3610

The lens of the sensor should be removed or covered with Kapton tape while soldering. Orient the sensor so that the back of it is on the same side as the other components, then solder it in place.

When working with the sensor and the MCU it's best to keep soldering iron temperatures below 300°C.

Nice!Nano Holder Components

Solder on the power switches, and reset buttons to the left and right nano holder PCBs. Then solder on the JST female connectors. I positioned this so the red wire on the male side would be the battery's positive connection. I also had to bend the legs out a little bit in order to get each one to fit flush with the nano holder board.

MCU

Solder the MCUs to the nano holders using the standard pin headers or the socketed pin headers, depending on what you chose to order to mount the MCU. If you use the socketed headers, make sure to put some kapton tape over the socket holes and poke the pins through to prevent solder from fusing the pin to the socket and MCU.

The MCUs should be face down (components facing towards the nano holder PCB), and the top through holes on either side of the USB connector will not have a spot on the nice!nano PCB.

Warning

As mentioned above, do not set your soldering iron any higher than 300°C.

After the components have all been soldered, it should look something like the picture below.

Being careful to not short any connections, connect the JST battery connections, turn the switch to the on position, and confirm the MCU powers on.

If all goes well, unplug the battery and continue the assembly.

Cables

If you want the cables a different color, make sure to paint them before this step. Use some tape to cover the pins so they can still be soldered.

Use BastardKB's documentation on how to cut and solder the ribbon cables.

Then follow the BastardKB docs on how to connect all of the PCBs together.

Make sure to use the flush cut pliers to remove any protruding pins and solder from the back side of the PCBs so that they can sit flat against the cases when the switches are being soldered in.

Battery

Instead of the traditional mounting point under the MCU, this build mounts the battery on the top lip of each case with some double sided tape so it is away from compnents that could be damaged with excessive heat or expansion.

Testing

Now that everything is connected follow BastardKB's documentation to test the switch pads and internal connections.

Switches

Once all the switch pads have been confirmed to work, solder in the switches by following BastardKBs documentation.

Sensor PCB

Put the sensor cover into the right case, install the BTUs into the Adapter BTU Bottom, then screw the Adapter BTU Bottom into the sensor cover.

Make sure to push the BTUs all the way into the Adapter BTU Bottom. It should look something like this.

Finally, install the sensor PCB and sensor cover by screwing them into the BTU bottom adapter.

Pads

Install the anti-slip pads on to the bottom of each plate.

Final Test

Install the key caps, then connect each half to the computer the same way you did for the previous test. Confirm that each key still works.

Tenting

A tenting solution that's stable, adjustable, and re-usable across multiple keyboards requires a few additional components:

Parts List

Part Quantity
Quick Release Plate 2
55mm Magnetic Phone Mount 2
Ferromagnetic Right Plate 1
Ferromagnetic Left Plate 1

To 3D print the bottom plates use the STL files in /Magnet Plates/3D STL/.

To have the plates laser/water jet cut, use the dxf files in /Magnet Plates/2D DXF/. You'll need to have the screw holes chamfered as well. Depending on what type of steel is used, you may want to have them powder coated to prevent rusting.

To make changes to any of the files (e.g. to accommodate different size magnets), the SVG files have been included in the same directory.

ZMK Firmware

The firmware can be downloaded from the charybdis-wireless-mini-zmk-firmware repo by opening the Actions Workflows and downloading the latest successful build. Follow the instructions on the repo readme for more details, including how to flash the firmware, how to make changes to the key layouts, and how to customize and build your own firmware.

Credits

This was my first keyboard build, and I couldn't have done it without the hard work from many others: