Concertina v0.6.0 build guide
This article describes how to produce a working physical copy of the first version of the Concertina, a computer keyboard.
This guide remains valid, but the v0.6.0 design is no longer the most recent hardware. For a later version, see Concertina v0.7.0 build guide.
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 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. Assembly is covered in this article.
- Finalize key placement, firmware etc.
Bill of materials
Expect to use up the following:
- 700 g of FDM printer filament in total.
- Almost 500 g for the case.
- A little more than 50 g for the caps. This article shows FDM-printed caps but you should prefer SLA printing for detail.
- About 150 g for the drawers.
- 1 × USB B port. Straight. Picture here.
- 1 × Pro Micro MCU board (PCBA).
- 1 × 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 × external USB cable to your computer, typically B-to-A.
- 64 × 1N4148 diode.
- 64 × ALPS-compatible switch.
- 12 × cylindrical magnet. At most 10 mm diameter, at most 2.5 mm height, neodymium or similar.
- 4 × M3 screw, 12 mm. Countersunk head.
- 68 × M3 screw, 8 mm. Countersunk head. These are used as follows:
- 2 attach thumb clusters, along with the 4 12 mm screws.
- 16 attach bookends to the central housing.
- 10 attach key-cluster subassemblies to the bookends.
- 24 attach the bottom plate(s) to the rest of the case.
- 6 go inside the drawers, for magnetization.
- Soldering supplies: Wire, solder, flux etc.
- Optional: Internal wiring connectors. Picture here.
- Optional: Internal reset button.
- Optional: 2 mm cork mat or other sound-dampening lining.
- Optional: Weights, e.g. gravel, and glue.
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-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 for the keyboard case of the bundled design, without any customization. There are correspondingly simple commands for the other applications, documented in each project.
Printing the case: Orientation and slicer settings
Of the files produced by the DMOTE application, the following should not* be printed.
keycap-minimal-tall.stl: You can get the same models, plus 3D legends, from
preview-keycap-clusters.stl: This model is for ilustration 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 15% for a production print, except where otherwise noted.
The main body, mirrored for each side, is designed to print standing on a flange, as shown here. Aim for the low end of your filament’s temperature range. This way, no support should be required.
The thumb cluster is designed to sit flat on the reverse side of the flange. Support is required.
In assembly, three screws will connect the main body to the thumb cluster at the flange. If you’re using as little material as possible, target the two screw holes at the taller side of the thumb cluster in your slicer and make sure their interior wall thickness is at least 1.5 mm, or else tapping the holes and firmly mounting the screws will be difficult.
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, if you can fit a combined bottom plate (both STL files combined as one body; see DMOTE application documentation) in your build volume, that is generally preferable to printing the two halves separately.
If you do print it, the conical screw holes should widen from the printer’s base plate. For best results, consider gradual grid infill (rather than gyroid) and apply ironing for a smooth top surface.
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 prints with threaded screw holes and magnet bosses. I recommend a quick test print of one of the areas examined in detail here, so you can check the fit.
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.
There’s a sensitive area on the upper lip of the USB port where I’ve had filament landing less than perfectly. If you have PVA filament, you might want to use it there. Carefully screened tree-style support beneath the upper lip is also effective. Otherwise I say don’t bother with 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.
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. Image here.
- Optional: Line the interior for sound.
- Mount the external USB connector.
- Do all the wiring, putting the key clusters together and prepping the MCU.
- Flash firmware for testing purposes.
- Test matrix hardware.
- Mount the MCU, not necessarily on its shelf.
- Optional: Attach weights to the bottom plate in the lowest compartment of the central housing, for stability.
- Close up the case.
- Mount all the caps.
You can just stick the magnets in their pockets, but if you want to make the magnets easy to retrieve later without destroying the housing, drill small perpendicular holes first, so you can reach the bottom of each pocket with a small tool behind the magnet.
Lining the walls
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, go ahead and line the outside of that too. Soft (unlaminated) cork is good for both purposes.
Slip the USB B port into the hole in the rear wall of the case.
Consider using a little dab of PVA-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.
For a detailed discussion of this topic from a design perspective, see my 3D keyboard wiring article. It uses the Concertina as an example.
I recommend starting with the columns, stripping each wire by first measuring it in place, before you heat your iron.
Complete the columns by joining the clusters. Don’t make it tight. Put an extra 3 cm of wire into these linkages so that you can separate the clusters to complete the rows, and for subsequent maintenance work.
Lastly, add diodes and wire up the rows.
When this is done, put in the screws connecting the thumb and main clusters on each side, and then bundle up the wires.
On the right-hand side, you need about 6 cm of wire between the keys and the MCU. On the left-hand side, you need a lot more, 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.
Preparing the MCU
Here’s how to attach optional pin headers to a Pro Micro.
This configuration is slightly exaggerated and will prevent the use of the MCU shelf built into the bookend, but with solid-core wire, you don’t need the shelf. Notice how the two 8-pin headers unite to collect all the columns of keys. The 4-pin header is for the rows of the left-hand side, and the four empty through-holes on the near side of that header are for the rows of the right-hand side of the keyboard. See the detailed pinout below.
The tiny reset button is wired between the MCU’s RST and GND. It’s optional because you can always short those pins manually. I recommend you do this before attaching the MCU to the key clusters, and put a reset button in your QMK keymap.
The following table describes Pro Micro I/O pin designations and the use of each pin in the Concertina’s firmware. Wire colours are those of the reference photos above.
|Left-hand side of PCBA ⮯|
|D1||2||Black||Row closest to user, left-hand key clusters|
|C6||5||Red||Row furthest from user, left-hand key clusters|
|D7||6||Black||Row closest to user, right-hand key clusters|
|B5||9||Red||Row furthest from user, right-hand key clusters|
|Right-hand side of PCBA ⮯|
|F4||A3||White||Outermost index-finger and thumb columns (both halves)|
|B6||10||Blue||Outermost pinky-finger columns (both halves)|
The Concertina is primarily a hardware design. You can run whatever firmware you want on it. Fully featured example 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.
Closing the case
If the firmware test went well and nothing is on fire, drive in all the screws you want.
From here on out it’s smooth sailing. Put on the caps, fill the drawers, plug in and enjoy your new keyboard.