Concertina v0.7.0 build guide
This article describes how to produce a working physical copy of the Concertina, a computer keyboard.
A v0.6.0 build guide is available for an older design of the same keyboard.
Contents
- Prerequisite skills
- Overview of work
- Bill of materials
- Printing the case: Orientation and slicer settings
- Assembly
Prerequisite skills
This guide is finished, but not comprehensive. It is written on the assumption that you already know the following, and have all the necessary tools:
- ESD safety.
- How to source electronic components.
- How to work your 3D printer and clean up prints to your satisfaction.
- How to tap M3 screw holes in plastic.
- How to hand-wire a keyboard. The QMK project has a comprehensive general guide here.
The most difficult part of the soldering is for full-speed USB 2. This is slightly sensitive to an impedance mismatch, but without knowing anything about you, I’m sure you’ll do fine.
Overview of work
- Source off-the-shelf parts.
- Print the other parts. Covered in this article.
- Drill and tap screw holes.
- Clean up your prints.
- Check the fit.
- Do whatever painting and varnishing you want.
- Assemble and test the keyboard. Covered in this article.
- Finalize key placement, firmware etc.
Bill of materials
Expect to use up the following:
Amount | Item | Comment |
---|---|---|
At least 700 g | Printer filament |
This includes:
|
1 pc. | USB 2 B port | Straight. Picture here. |
1 pc. | Pro Micro MCU board (PCBA) | Other options are available with minor changes to firmware code and no changes to keyboard shape. |
1 pc. | Internal USB cable | A “pigtail” cable between the USB connector and the MCU. For the Pro Micro, this is about 1 dm of cable with a micro USB connector at one end. Picture here. |
1 pc. | External USB cable | A cable between your computer and the USB B port, typically B-to-A. |
64 pcs. | 1N4148 diode | |
64 pcs. | ALPS-compatible switch | This article shows a mix of Matias Quiet Click and Quiet Linear switches. |
12 pcs. | Magnet | Prefer cylinder magnets of at most 10 mm diameter, at most 2.5 mm height, neodymium or similar. Thinner magnets can be stacked. |
56 or 58 pcs. | M3 screw, 8 mm total length, countersunk head |
These are used as follows:
|
– | Soldering supplies | Wire, solder, flux etc. |
26 pcs. (optional) | Internal connectors | There’s a wide range of options for this, including none. This article uses the pin headers that usually come with a Pro Micro, together with 8 forked extra pins (all pictured here) and 26 M20 housings (24 of which are pictured here). |
1 pc. (optional) | Reset button | Any 6 mm × 6 mm normally-open pushbutton switch. If used, this gets wired between the MCU’s RST and GND. It’s optional because you can short those pins manually for the initial firmware flash and put a soft reset button in your QMK keymap. |
1 dm² (optional) | Cork mat, 2 mm thick | Any sound-dampening lining will do. |
4 pcs. (optional) | Padded feet | High-friction feet for slick desks, e.g. silicone drawer buffers. More 2 mm cork mat will do the trick. |
To taste (optional) | Weights | Anything from gravel and glue to solid gold. This is an alternative or complement to padded feet. |
Sourcing the models
A complete Concertina includes printed parts from multiple sources.
The following applications produce the printable models you need:
- The DMOTE application:
The case. Check out the commit tagged
dmote-v0.7.0
. dmote-keycap
: Caps for the keys, with legends.dmote-drawer
: Assortment drawers.
All are free as in freedom and free as in free beer. DMOTE project documentation on GitHub describes how to generate STL files for the case. Here, it’s assumed you have already run make concertina_64key
to produce a full set of STL files of the bundled design, without any customization. There are correspondingly simple commands for the other applications, documented in each project.
Please note that photos displayed in this guide do not correspond exactly with version 0.7.0 of the design. They include some prototypes. Differences are not significant to the build process.
Printing the case: Orientation and slicer settings
Of the files produced by the DMOTE application, the following should not be printed.
keycap-default.stl
: You can get the same model, plus 3D legends, fromdmote-keycap
.preview-keycap-clusters.stl
: This model is for illustration purposes only.
Where nothing else is indicated, print one physical instance of each file named below.
The following advice assumes a PLA-like material and adequate cooling on an FDM printer. I recommend gyroid infill of at least 15% for a production print, except where otherwise noted.
Main body
Files:
left-hand-body-main.stl
right-hand-body-main.stl
The main body, mirrored for each side, is designed to print standing on a flange, as shown here.
Local support is recommended for the almost horizontal wall directly above the build plate. No other support should be required, but some materials can require carefully tuned settings to get the overhangs right. This includes low temperature, constant cooling (e.g. fans at 100% above layer 1), thin layers and low nozzle speeds, to build the overhangs correctly.
Thumb cluster
Files:
left-hand-body-thumb-cluster.stl
right-hand-body-thumb-cluster.stl
The thumb cluster is designed to sit flat on the reverse side of the flange. Support is required.
In assembly, four screws will connect the main body to the thumb cluster at the flange. If you’re using as little material as possible, target the four screw holes in your slicer and make sure their interior wall thickness is at least 1.5 mm, or else mounting the screws will be difficult. This is especially important if you tweak the settings to tap the holes yourself.
Bottom plate
An FDM printer is not the optimal tool for this part. Consider CNC milling or laser cutting in a stiff and dense material. Regardless of technique, you have two options.
Files, option A (small build volume):
left-hand-bottom-plate-case.stl
right-hand-bottom-plate-case.stl
Files, option B (large build volume):
bottom-plate-combined.stl
If you do print it, the conical screw holes should widen from the printer’s build plate. For best results, consider gradual grid infill (rather than gyroid) and apply ironing for a smooth top surface. If you print option B in PLA, be aware that thick walls can cause clogging due to long non-printing travel between screw holes, so prefer adding mass by other means. Use a wide brim on a room-temperature build plate to limit warping.
Central housing
Files:
body-central-housing.stl
As the name implies, there is only one central housing. It is designed to stand on its short end in printing. Support is not required.
This part includes magnet bosses. I recommend a quick test print of one of the areas examined in detail here, so you can check the fit.
Bookend
Files:
body-left-hand-bookend.stl
body-right-hand-bookend.stl
The right-hand bookend accommodates the USB port and MCU. The left-hand bookend does not. Both are designed to print with the same footprint as the rear housing, without support.
To save on filament, you can get away with zero top layers. None of them would be visible from the outside, they don’t do much for stability, and you may get a marginally better fit against the main body without them. However, be aware that a stiff back plate in each bookend can improve the appearance of the final product by minimizing gaps between the bookends and the central housing.
Assembly
Here’s a rough order of operations for assembly:
- Mount the magnets in the central housing.
- Put screws in the drawers themselves and test the fit.
- Mount all the switches.
- Build bookend subassemblies.
- Wire up the key clusters.
- Prepare the MCU.
- Flash firmware.
- If using pin headers: Test matrix hardware with temporary connections to the MCU.
- Mount the MCU inside the case.
- Optional: Attach weights to the bottom plate in the lowest compartment of the central housing, for stability.
- Close up the case.
- If not using pin headers: Solder connections to the MCU. Test matrix hardware.
- Mount the caps and insert the drawers.
Magnets
Stick the magnets in their pockets. Note the small holes underneath each pocket: These are intended for retrieving each magnet in disassembly.
Bookend subassemblies
The right-hand bookend needs more work than the left. The sample shown above is complete with all optional steps listed here:
- Optional: Line the interior of both bookends for sound.
- Not optional: Mount the external USB connector in the right-hand bookend.
- Optional: Mount a reset button in the right-hand bookend.
Dampening sound
Like the instrument it’s named for, the body of a Concertina forms an acoustic resonance chamber, albeit a poor one. To keep it mute, you can line the interior.
If your bottom plate does not provide a lot of friction on your desk, go ahead and line the outside of that too. Soft (unlaminated) cork is good for both purposes.
External USB
Slip the USB B port into the hole in the rear wall of the case.
Consider using a little dab of water-based glue or paste for a tight fit. Bend the grounding nub around the interior of the port to secure it. Solder your pigtail cable onto the interior pins and its shielding to the nub.
Reset button
If you are building with an optional hardware reset button, it goes in the square hole where the right-hand bookend connects to the central housing.
The button is accessible when the bottom drawer is removed.
You need to brace the button, holding it in place so it’s stable and reachable. No model for such a brace is supplied by the DMOTE application; build one that fits your button. This could be a trivial printed part. This image shows an alternative made of wood with tapped holes for M3 screws.
Mounting switches
Because the main key clusters are vertical, it is important to get a good fit. Compensate for any printer inaccuracies by filing off excess material or adding more thermoplastic (with an oxidized old soldering iron or 3D pen) or glue (e.g. viscous water-based stone glue).
Wiring up the key clusters
For a detailed discussion of this topic from a design perspective, see 3D keyboard wiring. The current article instead describes how to implement the following wiring scheme.
As a preparatory step, get some tin on the switches’ legs.
Preparing wire for the columns
Cut through just the insulation in three places to make three lengths of insulation that you can pull along each wire for the columns.
The following table lists the appropriate lengths of insulation in each section for the wires of each column. Wire colours are those of the diagram above. Do not cut off the wire past the last section.
Wire | Length of insulation (mm) | ||
---|---|---|---|
Section 1 | Section 2 | Section 3 | |
White | 19 | 15 | 74 |
Green | 21 | 29 | 78 |
Orange | 21 | 20 | 100 |
Purple | 70 | 23 | 20 |
Yellow | 26 | 23 | 20 |
Brown | 23 | 19 | 41 |
Grey | 21 | 22 | 46 |
Blue | 21 | 22 | 47 |
Beyond the last section listed in that table, you need more wire, with insulation, to connect the column to the MCU. The length of this last bit of wire varies. It’s about 50 to 100 mm on the right-hand side depending on the column and where you want the MCU. It’s at least 250 mm more than that on the left-hand side, as shown here.
Bridging the columns, uniting the clusters
I recommend you start with the blue wire on the right-hand side, prepping that and soldering it into place to get the hang of it before doing the next three wires for the bottom four columns.
Then prepare the next four wires, and start these on the thumb cluster.
Complete the columns by joining the main and thumb clusters together. Don’t make it a tight connection. The section lengths given above are such that you can separate the clusters to complete the rows in the next steps, and for subsequent maintenance work.
Bridging the rows with diodes and wire
With columns complete, add diodes to the row legs. I recommend first cutting the bottom (anode) legs of the diodes themselves quite short and tinning them, but keeping the top (cathode) legs intact.
With diodes in place, start wiring up the rows by just bending the top legs over to touch one another, following the connection diagram.
The next step after that is to bridge the cluster gap by adding a piece of wire to each of the three rows that stretch across that gap. The wire, being more flexible than the diodes, again ensures that the clusters can be separated for maintenance. As an alternative to extra wire, add in connectors.
Repeat all that work on the left-hand side.
Beyond the key matrices
Add wires to the columns on both sides for connecting them to the MCU. On the left-hand side, you need those wires reaching at least 30 cm away from the key-cluster subassembly, so that you can route it all through the loft of the central housing to reach the MCU in the right-hand bookend.
Put in a couple of the screws connecting the thumb and main clusters on each side, and then bundle up the wires.
Preparing the MCU
If you’re using pin headers, attach them to the MCU, and add connectors to the wires running from the key clusters.
If your build is more basic, you will have to wait until after all the wires are routed through the central housing before you solder wires directly to the PCBA’s through-holes and test the matrices.
Pinout
The following table describes Pro Micro I/O pin designations and the use of each pin in the Concertina’s official QMK firmware configuration.
QMK | Silk | Concertina wire | |
---|---|---|---|
Left-hand side of PCBA ⮯ | |||
D3 | TX0 | Not used | |
D2 | RX1 | Not used | |
D1 | 2 | Black | Row closest to user, left-hand key clusters |
D0 | 3 | Red | Middle rows |
D4 | 4 | Black | |
C6 | 5 | Red | Row furthest from user, left-hand key clusters |
D7 | 6 | Black | Row closest to user, right-hand key clusters |
E6 | 7 | Red | Middle rows |
B4 | 8 | Black | |
B5 | 9 | Red | Row furthest from user, right-hand key clusters |
Right-hand side of PCBA ⮯ | |||
F4 | A3 | White | Top (index-finger and thumb) columns (both halves) |
F5 | A2 | Green | Middle columns |
F6 | A1 | Orange | |
F7 | A0 | Purple | |
B1 | 15 | Yellow | |
B3 | 14 | Brown | |
B2 | 16 | Grey | |
B6 | 10 | Blue | Bottom (pinky-finger) columns (both halves) |
Firmware
The Concertina is primarily a hardware design. You can run whatever firmware you want on it. Fully featured firmware that matches the “official” keycaps is available as part of the QMK project. This comes with a web-based tool for easy reconfiguration: QMK Configurator.
As noted there, the example assumes a Colemak keyboard layout on the OS side (hence all the CM_*
tags), but all the basic stuff should work on a computer expecting QWERTY.
As of version 0.1 of Configurator, the web interface displays parentheses on tapping Ctrl and Alt keys, whereas in the underlying C code, tapping them produces brackets and braces, not parentheses.
Testing
If you’re using pin headers for non-permanent connections between the two halves of the keyboard, test hardware before assembly. Otherwise, test after assembly.
Connect the MCU to your computer and make sure that all the keys work.
Closing the case
Screw all the subassemblies together.
Connect all the wires. Close the case, mounting the MCU however you like or letting it hang suspended by the wires.
Drive in all the screws you want on the outside.
From here on out it’s smooth sailing. Put on the caps, fill the drawers, plug in and enjoy your new keyboard.