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.
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.
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.
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.
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.
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.
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.
- 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
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.
A tenting solution that's stable, adjustable, and re-usable across multiple keyboards requires a few additional components:
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.
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.
This was my first keyboard build, and I couldn't have done it without the hard work from many others: