Modular unibody keyboard with two VIK modules.
Caution
This keyboard is designed for minimal vertical spacing (19x16mm). Regular keycaps will not fit, you must print your own - for example my DES MinY.
It's created as a cheap prototype to test VIK abilities and modules - all PCBs are under 100x100mm, one-piece case <0.3kg for cheap JLCPCB shipping.
Build process requires a lot of hand-soldering with 0.5mm pitch, you need good tools and experience to do that.
I do not recommend to build it exactly like that, but to use it as inspiration for your projects. Feel free to use and improve KiCad and Fusion 360 source files.
- MinY (19x16mm) spacing
- 36 KS-33 (Gateron Low Profile) keys with hotswap
- central PCB with two independent VIKs, DRV2605L haptic feedback and rotary encoder
- periferal PCBs for keys
- 3D printed case with 1.28" display, Azoteq TPS65 touchpad and 33mm encoder
- Main PCB
- Side PCB
- Azoteq VIK adapter
- Display VIK adapter - 1.28" round version
Companion app for Raw HID communication. Use "productId": 2120
for that keyboard.
Please see main config.h
and rules.mk
for comments and available options.
- PCB
- 36 KS-33 switches
- 36 hotswap sockets for KS-33 switches
- 3D printed case
- Azoteq TPS65 touchpad
- Azoteq VIK adapter
- Bare 1.28" round display - without PCB
- Display VIK adapter - 1.28" round version + adapter's BOM
- Helios-sized (26 GPIOs) RP2040 MCU
- 37 SMD SOD-123 1N4148 diodes
- Vertical and horizontal 12pin FFC/FPC connectors
- 12pin 0.5mm pitch 6cm FFC cable - both reverse and forward variants
- short EC11 rotary encoder
- 32mm encoder knob
- SMD 4x4x1.5mm push button
- 4mm M2 screws with flat head
- M2 heatset inserts - 3mm length, 3.2mm diameter for resin case or 3.5mm for Nylon/PLA
- 7x1.5 legs
- for haptic feedback:
- DRV2605L motor controller
- 2 1uF capacitors (SMD 1206 size)
- 2 4.7kOhm resistors (SMD 1206 size)
- LRA or ERM motor
- side PCBs have two keys that have to be broken off and handwired to correct places (diodes stay on the big part)
- rotary encoder uses GPIO from VIK2, so Azoteq has to be connected to VIK2 port, and display to VIK1. Make sure to bridge solder jumpers on the back.
- cheap ERM motors may not have enough internal resistance, if you motor does not work, try to add 5-10R resistor to it
- see photos for FFC connections
For proper KiCad setup install my zzkeeb library
If you like my work and want to support my future designs, please consider sponsorship.
Thank you very much for your support!