Pronounced "butter-fold"
A foldable, portable sibling of the btrfly keyboard https://github.com/SolidHal/btrfly-keyboard
More images available in "FinishedPictures" folder
- 5 key dactyl-manuform-mini thumb cluster
- flat, tented qwerty keys
- 6 extra mappable keys
- bluetooth (optional)
- folds flat for portability
- located in
btrfld_pcb
- the hand and thumb pcbs are mirrored so they can be used for either hand
- 2 x btrfld_pcb
- 1 x btrfld_pcb_center
- 2 x btrfld_pcb_thumb
-
PCBs
-
USB C breakout basic breakout board
- Used this one https://www.amazon.com/Type-C-Breakout-Serial-Connector-Converter/dp/B09KC1SMGD/
- wiring the usb:
For most usages, you can just connect VBUS to your 5V input, GND to ground, and D+ and D- as you expect. You can monitor the CC and SBU pins to determine cable polarity, or send side-band data. Or leave them disconnected
-
A USB 2.0 USB C cable to cut up
- USB C to Micro usb can be gotten pretty cheap
-
46 choc v1 keyswitches, keycaps
-
1N4148W SOD-323F diodes
- Tips for soldering these can be found in the assembly notes section below
-
3mm diameter steel rod
- 2x 70.5mm
- 2x 64.7mm
- 2x 22.7 mm
- 4x 14.2
-
1.27mm flat ribbon cable
- 2 x 9 wire cables: 13 cm
- 2 x 6 wire cables: 9.6 cm
-
1x bluemicro840
- if you don't want bluetooth, you can just use a promicro instead
-
3d printed pieces, located in the STLs folder
- 1 copy of everything besides test_fit-UnderbodyWireGuides.stl, which we need 4 of
Supports on buildplate
Detect Bridging
100% infill
0.20mm
PLA/PETG
this process is much less tedious than hand wiring. But its still annoying in places since we are trying to keep things thin.
-
solder the parallel wires to the hands/thumb clusters before placing the boards in the frame and soldering switches
-
stripping ribbon cable:
- take an xacto knife ~3mm from the end of the cable and cut a slit until you see wire, then use your fingernail to peel the cut off section away from the rest of the cable
-
use cut off diode/resistor legs to connect the controller to the center pcb
-
trim the stabs on the hinge side keys of the left/right hand bodies (switches for Q,A,Z, P, ;, / keys)
-
the pcbs are designed to hold the diodes "upside down" to keep things as thin as possible. Soldering these is a little hard since they like to stick to the soldering iron.
- get some fine point electronics tweezers
- put a very very small amount of solder on one of the diode pads
- place the diode, the "legs" should keep the diode from completely falling into the hole
- hold the diode down with the tweezers, and use your iron to reflow the solder. This should hold the diode down enough for you to solder the other diode leg.
- finally, add some more solder to the first pad
-
The UnderbodyWireGuides get super glued into the holes of the pcb. See pictures of the hand underside for details.
-
Once you have tested the board, use some superglue to reinforce the ribbon cable solder joints
-
Reference the images in the "BuildPictures/PCB" folder
Prebuilt firmware available in the Firmware
directory
Bridge ground + reset twice quickly to put the bluemicro840 into flashing mode
Or press the "bootloader" key on the keyboard if you have already flashed the firmware before
then copy the firmware onto the keyboard
cp build/zephyr/zmk.uf2 /media/<user>/NRF52BOOT/CURRENT.UF2
This is broken until zmkfirmware/zmk#1499 merges, do a local build instead fork this repo, modify the files to your hearts content the github actions workflow will then build it for you https://github.com/SolidHal/zmk-config-btrfld
Grab my fork of the zmk firmware
git clone https://github.com/SolidHal/zmk.git
follow https://zmk.dev/docs/development/setup then
cd zmk
cd app
west build -b bluemicro840_v1 -- -DSHIELD=btrfld
make pristine
west build -p -b bluemicro840_v1 -- -DSHIELD=btrfld
- Attach trackpoint/ball or touchpad somewhere?
- latch to keep folded?
- latches to retain body/thumb extensions in base?
Edit test_fit.FCStd
using FreeCad, I used version 0.19-24366
I am by no means a FreeCad expert, so I'm sure it is built suboptimally.
The pcbs were created in kicad
-
Wiring the underside of the right/left body halves is very tedious
- Make sure everything stays as flat as possible
-
Reference the images in "BuildPictures" and "FinishedPictures" for hints on how to layout the wires
-
Reference WiringGuide.png to see see the row/colomn layout
-
Must trim a very very slight amount off of the center pin on keyswitches over the body/thumbcluster rod
- switch above this must be rotated to give clearance for the rod locker
-
Body/ThumbCluster Pivot Rob
- BodyThumbRod Cap gets glued on body end of rod
- thumb cluster end of rod gets glued in place
-
Area around the body/baseplate hinge needs clearence, so keep all wires to the other side of the keyswitch
-
Reference the images in the "BuildPictures" folder
9 wires 420mm
6 wires 240mm 70mm threaded through on the thumb side
Animation: BaseBodyAngle goes from 0 -> 32
firmware: https://zmk.dev/docs/development/new-shield https://zmk.dev/docs/development/setup/ https://zmk.dev/docs/troubleshooting https://github.com/SolidHal/zmk
Friction fit redesign notes: https://markforged.com/resources/blog/joinery-onyx https://www.hubs.com/knowledge-base/how-design-snap-fit-joints-3d-printing/
#TODO
-
assembly notes
- after finishing soldering, need to install pcb into left/right hand frames before keycaps
- slide in side by thumb hinge first, so the switches can go above the hinge at an angle
-
need to find way to attach pcb to the frames
- screws through pcb, into body and thumbcluster?
- screws at the edge of the pcb, to hold it in like holding in the usbc port?