
Hub16
joshajohnson/Hub16
A macro pad with 16 keys, two rotary encoders, a four port USB hub, and plenty of LEDs!

A 65% keyboard with 3D printed case
Keybored is an open-source printed circuit board by N0S-Party, from the N0S-Party/Staccato65 repository on GitHub. It is a 2-layer board of 316.7 × 133.4 mm with 202 parts on 127 nets, routed with 2,850 tracks and 106 vias.
It is built around the ATMEGA32U4 and WS2812B. Its parts include 83 diodes, 68 switches, 12 capacitors, 11 resistors and 4 connectors. It belongs with the AVR (ATmega, ATtiny) boards of this library.
A 65% board with OLED, rotary encoder support, and a 3D printed case.



Specs:
Design goals:
Basically the layout will be similar to the Satisfaction75 and ID80, but without the function row. I also really like the look of the Discipline keyboards, so the layout of the diodes will somewhat try to reflect that.
One of my current concerns is that the firmware size might end up too big, since I'll have to use QMK's I2C and roatry encoder libraries in addition to multiple keyboard layouts -- but I guess we'll see once we get there.
I started building the key matrix in the schematic. I originally wanted the schematic matrix to have a 1-to-1 mapping to the keyboard layout. It's actually done that way for the schematic of the Discipline, making it easy to route the traces for the PCB, and organize the layout even pre-PCB design. Unfortunately, it ended up being 15 columns by 6 rows for me. This was far too many pins to support for the ATmega32u4 since I need to save some pins to support the rotary encoder and OLED. I'm also planning to save the SCK, MOSI and MISO pins for ISP usage, in case I ever want to set fuse bits (though I'm willing to give these pins up if desperate measures need to be in play).
Modified the matrix to now use 10 columns and 7 rows. This allows for a maximum of 69 switches and 1 rotary encoder switch. With the rotary encoder and OLED screen added, this oleaves the microcontroller with only one GPIO pin available (which means I could turn this into a 75% keyboard). I did come across mr.keeb's PCB generator, but for some reason there is a bug that messes up the layout if you use a non-standard matrix; Can't say I'm not happy, since this means that my previous work wasn't all for nothing. I'm planning on using Kailh hot-swap sockets, but I might undo this if I find that it's too costly.
Got to making the key layout on the PCB. I'm thankful I have a spare top plate and a caliper to help me confirm my switch placement. A modification I made from my initial plan is that I'm now using the "columns" in the schematics as rows. I need about 14 keys per row, and have 7 keys per column in the schematic makes that transform easy. I'll now have two disjoint traces per row on the PCB. Also, I can't get that damn encoder footprint to be centered... I'll leave that for next time.
I haven't updated here in a while, but that doesn't mean I haven't been working hard! I've finally managed to finish routing the PCB to a degree that I'm satisfied with. I might have to work a bit more on making the top right routing better, but I'd say the key routing was not too shabby. Fun fact, using Kicad 5.0.2 makes routing a pain. Traces never consistently "stuck" to each other the way I wanted it to. Thankfully, Kicad 5.1.6 was way more route-friendly. Unfortunately I couldn't really group the traces into fours that were aligned with the diode groups since some of the rows contained five switches instead of four. Nevertheless, clean routing was still possible and it still looks good as long as you don't look at it too hard. See below for pictures (you can see what I was talking about with the schematic matrix not being entirely 1-to-1 in dimension to the keyboard).
PCB and Schematics pictured are outdated. Please see the repo files for the updated versions


Okay, I don't know if anyone was following this project, but while it did seem like I had a long hiatus, I was actually working quite a bit behind the scenes. With the help of Sagar, and another friend of ours, we managed to get the first few prototypes out. Many revisions had to be done with the case due to 3D printing tolerances and the limitations of a 3D printer. Another issue that was caught was that the PCB plate cutout for the spacebar stabilizer was actually facing the wrong way. Unfortunately I only found this out after I got the first batch delivered, so I just had to file down the troublesome cutout by a few milimeters. Ordering from JLC PCB, the cumulative costs of PCB + plate + parts is about 70 dollars, assuming you order a batch of 10. Surprisingly, we managed to get a small groupbuy going and will be making 10 keyboards for us and a few other friends. In terms of regrets, I maybe should have opted to pay for assembly costs from the fab as well, since soldering a keyboard takes about 4 hours total. But hey, I'm really good at drag soldering now at least. As for actual release, I'm not too confident in my PCB design skills yet to release a product to members of the community. If I ever had to refine this design for a round 2, I'd probably add ESD protection, fix the plate and also make some of the footprint placements nicer. Overall, I plan to make a macropad as my next project. The reasoning is so I could try out more experimental features that I've had in mind while keeping the risk low. We also hope to make a case out of metal, which may be a challenge in itself.
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 67 | D | keybored:DO-35_SOD27_5.08mm | D1, D2, D10, D11, D12, D13, D14, D15, D16, D17, D18, D19, D20, D21, D22, D23 +51 |
| 66 | KEYSW | keyswitches:Kailh_socket_MX_optional | K1, K2, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K20, K21, K22, K23 +50 |
| 16 | WS2812B | LED_SMD:LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm | D68, D69, D70, D71, D72, D73, D74, D75, D76, D77, D78, D79, D80, D81, D82, D83 |
| 6 | 0.1u | Capacitor_SMD:C_0805_2012Metric_Pad1.15x1.40mm_HandSolder | C1, C2, C3, C4, C5, C7 |
| 2 | 100n | Capacitor_SMD:C_0805_2012Metric_Pad1.15x1.40mm_HandSolder | C11, C12 |
| 2 | 10k | Resistor_SMD:R_0805_2012Metric_Pad1.15x1.40mm_HandSolder | R5, R6 |
| 2 | 22 | Resistor_SMD:R_0805_2012Metric_Pad1.15x1.40mm_HandSolder | R3, R4 |
| 2 | 22p | Capacitor_SMD:C_0805_2012Metric_Pad1.15x1.40mm_HandSolder | C6, C8 |
| 2 | 27k | Resistor_SMD:R_0805_2012Metric_Pad1.15x1.40mm_HandSolder | R8, R9 |
| 2 | 4.7k | Resistor_SMD:R_0805_2012Metric_Pad1.15x1.40mm_HandSolder | R10, R11 |
| 2 | 5.1k | Resistor_SMD:R_0805_2012Metric_Pad1.15x1.40mm_HandSolder | R1, R2 |
| 2 | Conn_01x03 | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | J3, J4 |
| 1 | 1u | Capacitor_SMD:C_0805_2012Metric_Pad1.15x1.40mm_HandSolder | C9 |
| 1 | 330 | Resistor_SMD:R_0805_2012Metric_Pad1.15x1.40mm_HandSolder | R7 |
| 1 | 4.7u | Capacitor_SMD:C_0805_2012Metric_Pad1.15x1.40mm_HandSolder | C10 |
| 1 | ATMEGA32U4 | Package_QFP:TQFP-44_10x10mm_P0.8mm | U1 |
| 1 | Crystal | Crystal:Crystal_SMD_SeikoEpson_FA238-4Pin_3.2x2.5mm_HandSoldering | Y1 |
| 1 | ISP | Connector_PinHeader_2.54mm:PinHeader_2x03_P2.54mm_Vertical | J2 |
| 1 | LOGO | keybored:sadge_decal | G*** |
| 1 | Rot_Enc_Sw | Rotary_Encoder:RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm | SW2 |
| 1 | SSD1306-Display_Graphic | keybored:SSD1306_OLED_128x32_0.91_inch | U2 |
| 1 | SW_PUSH | Button_Switch_SMD:SW_SPST_TL3342 | SW1 |
| 1 | USB_C_Receptacle_USB2.0 | Type-C:USB_C_GCT_USB4085 | J1 |
The 182 most common of 202 parts.

joshajohnson/Hub16
A macro pad with 16 keys, two rotary encoders, a four port USB hub, and plenty of LEDs!


Duckle29/Vitamins-included
This repo holds a variation of the lets split. This board requires no soldering



0xCB-dev/0xCB-micro
1% - 65% keyboard controller with RGB underglow and a backlight driver


It measures 316.7 × 133.4 mm and has 2 copper layers, 1.6 mm thick.
202 parts, built around the ATMEGA32U4 and WS2812B. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
From the N0S-Party/Staccato65 repository on GitHub, at the commit this page was made from: the board is keybored.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask N0S-Party before reusing the design.