├── .gitignore
├── .gitmodules
├── .vscode
└── tasks.json
├── Documents
├── advanced-config.md
├── enclosure.md
├── imgs
│ ├── all-the-cables.JPG
│ ├── assembly-instructions
│ │ ├── bare-bones.JPG
│ │ ├── check-encoders.JPG
│ │ ├── check-switches.JPG
│ │ ├── led-cut.JPG
│ │ ├── required-parts.JPG
│ │ ├── step-1-1.JPG
│ │ ├── step-1-2.JPG
│ │ ├── step-1-3.JPG
│ │ ├── step-2.JPG
│ │ ├── step-3.JPG
│ │ ├── step-4.JPG
│ │ ├── step-5.JPG
│ │ ├── step-6.JPG
│ │ ├── step-7.JPG
│ │ └── step-8.JPG
│ ├── header-img.JPG
│ └── new-header.JPG
├── keyboard-assembly.md
├── macro.md
├── pcba.md
└── via.md
├── Firmware
├── binaries
│ ├── hub16_default.hex
│ ├── hub16_macro.hex
│ ├── hub16_via.hex
│ └── hub16_via_old.hex
└── hub16
│ ├── config.h
│ ├── hub16.c
│ ├── hub16.h
│ ├── info.json
│ ├── keymaps
│ ├── default
│ │ └── keymap.c
│ ├── macro
│ │ ├── keymap.c
│ │ └── rules.mk
│ └── via
│ │ ├── keymap.c
│ │ └── rules.mk
│ ├── matrix.c
│ ├── readme.md
│ └── rules.mk
├── Hardware
├── 0.1
│ ├── Hub16-cache.lib
│ ├── Hub16-rescue.dcm
│ ├── Hub16-rescue.lib
│ ├── Hub16.kicad_pcb
│ ├── Hub16.pdf
│ ├── Hub16.pro
│ ├── Hub16.sch
│ ├── Libraries
│ │ ├── LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm.kicad_mod
│ │ ├── keyboard.3dshapes
│ │ │ ├── b3u-1000p.stp
│ │ │ ├── mxKeycap.STEP
│ │ │ └── pec11r-4220k_l13-8_w12-4_h26-5.stp
│ │ ├── keyboard.dcm
│ │ ├── keyboard.lib
│ │ └── keyboard.pretty
│ │ │ ├── AVR_Programmer_SMD.kicad_mod
│ │ │ ├── Fuse_0805_2012Metric.kicad_mod
│ │ │ ├── LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm.kicad_mod
│ │ │ ├── MicroUSB_Aliexpress.kicad_mod
│ │ │ ├── PinPad_1x03_P2.54mm.kicad_mod
│ │ │ ├── RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm_CircularMountingHoles.kicad_mod
│ │ │ ├── SW_Cherry_MX1A_1.00u_PCB.kicad_mod
│ │ │ ├── Small_Tact_Switch.kicad_mod
│ │ │ └── topCover.kicad_mod
│ ├── fp-lib-table
│ └── sym-lib-table
├── 0.2
│ ├── Hub16-cache.lib
│ ├── Hub16-rescue.dcm
│ ├── Hub16-rescue.lib
│ ├── Hub16.kicad_pcb
│ ├── Hub16.pdf
│ ├── Hub16.pro
│ ├── Hub16.sch
│ ├── Libraries
│ │ ├── LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm.kicad_mod
│ │ ├── keyboard.3dshapes
│ │ │ ├── b3u-1000p.stp
│ │ │ ├── mxKeycap.STEP
│ │ │ └── pec11r-4220k_l13-8_w12-4_h26-5.stp
│ │ ├── keyboard.dcm
│ │ ├── keyboard.lib
│ │ └── keyboard.pretty
│ │ │ ├── AVR_Programmer_SMD.kicad_mod
│ │ │ ├── Fuse_0805_2012Metric.kicad_mod
│ │ │ ├── LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm.kicad_mod
│ │ │ ├── MicroUSB_Aliexpress.kicad_mod
│ │ │ ├── PinPad_1x03_P2.54mm.kicad_mod
│ │ │ ├── RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm_CircularMountingHoles.kicad_mod
│ │ │ ├── SW_Cherry_MX1A_1.00u_PCB.kicad_mod
│ │ │ ├── Small_Tact_Switch.kicad_mod
│ │ │ └── topCover.kicad_mod
│ ├── fp-lib-table
│ ├── sym-lib-table
│ └── usb-hub.sch
├── 0.3
│ ├── Hub16-cache.lib
│ ├── Hub16-rescue.dcm
│ ├── Hub16-rescue.lib
│ ├── Hub16.kicad_pcb
│ ├── Hub16.pdf
│ ├── Hub16.pro
│ ├── Hub16.sch
│ ├── Libraries
│ │ ├── LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm.kicad_mod
│ │ ├── keyboard.3dshapes
│ │ │ ├── b3u-1000p.stp
│ │ │ ├── mxKeycap.STEP
│ │ │ └── pec11r-4220k_l13-8_w12-4_h26-5.stp
│ │ ├── keyboard.dcm
│ │ ├── keyboard.lib
│ │ └── keyboard.pretty
│ │ │ ├── AVR_Programmer_SMD.kicad_mod
│ │ │ ├── Fuse_0805_2012Metric.kicad_mod
│ │ │ ├── LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm.kicad_mod
│ │ │ ├── MicroUSB_Aliexpress.kicad_mod
│ │ │ ├── PinPad_1x03_P2.54mm.kicad_mod
│ │ │ ├── RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm_CircularMountingHoles.kicad_mod
│ │ │ ├── SW_Cherry_MX1A_1.00u_PCB.kicad_mod
│ │ │ ├── Small_Tact_Switch.kicad_mod
│ │ │ └── topCover.kicad_mod
│ ├── bom
│ │ ├── Hub16_BOM.csv
│ │ └── assembly.html
│ ├── fp-lib-table
│ ├── sym-lib-table
│ └── usb-hub.sch
├── 0.4
│ ├── Hub16-cache.lib
│ ├── Hub16.kicad_pcb
│ ├── Hub16.pro
│ ├── Hub16.sch
│ ├── fp-lib-table
│ ├── sym-lib-table
│ └── usb-hub.sch
├── 0.5
│ ├── Hub16-cache.lib
│ ├── Hub16.kicad_pcb
│ ├── Hub16.pdf
│ ├── Hub16.pro
│ ├── Hub16.sch
│ ├── assembly
│ │ ├── BOM.csv
│ │ ├── Hub16-bottom-pos.csv
│ │ ├── assembly.html
│ │ ├── gerbers.zip
│ │ └── stencil.zip
│ ├── fp-lib-table
│ ├── sym-lib-table
│ └── usb-hub.sch
├── 0.6
│ ├── Hub16-cache.lib
│ ├── Hub16.kicad_pcb
│ ├── Hub16.pro
│ ├── Hub16.sch
│ ├── fp-lib-table
│ ├── sym-lib-table
│ └── usb-hub.sch
├── 0.7-hs
│ ├── Hub16-cache.lib
│ ├── Hub16.kicad_pcb
│ ├── Hub16.pro
│ ├── Hub16.sch
│ ├── fp-lib-table
│ ├── sym-lib-table
│ └── usb-hub.sch
├── 0.7
│ ├── Hub16-cache.lib
│ ├── Hub16.kicad_pcb
│ ├── Hub16.pro
│ ├── Hub16.sch
│ ├── fp-lib-table
│ ├── sym-lib-table
│ └── usb-hub.sch
├── 1.0-hs
│ ├── Hub16-cache.lib
│ ├── Hub16.csv
│ ├── Hub16.kicad_pcb
│ ├── Hub16.pro
│ ├── Hub16.sch
│ ├── fp-lib-table
│ ├── sym-lib-table
│ └── usb-hub.sch
├── 1.0.1-hs
│ ├── Hub16-cache.lib
│ ├── Hub16.kicad_pcb
│ ├── Hub16.pro
│ ├── Hub16.sch
│ ├── fp-lib-table
│ ├── sym-lib-table
│ └── usb-hub.sch
└── 1.0
│ ├── Hub16-cache.lib
│ ├── Hub16.kicad_pcb
│ ├── Hub16.pro
│ ├── Hub16.sch
│ ├── fp-lib-table
│ ├── sym-lib-table
│ └── usb-hub.sch
├── LICENSE
├── Mechanicals
├── acrylic
│ ├── Hub16-bottom.dxf
│ ├── Hub16-mid.dxf
│ ├── Hub16-riser.dxf
│ └── Hub16-top.dxf
└── plate
│ ├── fp-lib-table
│ ├── plate-gerbers.zip
│ ├── topCover.kicad_pcb
│ ├── topCover.pro
│ └── topCover.sch
├── Production
└── 1.0-hs
│ ├── .~lock.bom.csv#
│ ├── Gerbers.zip
│ ├── Hub16-Acrylic.zip
│ ├── assembly.html
│ ├── bom.csv
│ ├── fab-notes.txt
│ ├── photo-close.JPG
│ ├── photo.JPG
│ ├── plate-gerbers.zip
│ ├── pnp.pos
│ └── render.png
├── README.md
└── Software
├── hub16-autokey
├── .enc1-anticlockwise1.json
├── .enc1-button.json
├── .enc1-clockwise.json
├── .enc2-anticlockwise.json
├── .enc2-button1.json
├── .enc2-clockwise1.json
├── .folder.json
├── .key-1.json
├── .key-10.json
├── .key-11.json
├── .key-12.json
├── .key-13.json
├── .key-14.json
├── .key-151.json
├── .key-2.json
├── .key-3.json
├── .key-4.json
├── .key-5.json
├── .key-6.json
├── .key-7.json
├── .key-8.json
├── .key-9.json
├── enc1-anticlockwise1.py
├── enc1-button.py
├── enc1-clockwise.py
├── enc2-anticlockwise.py
├── enc2-button1.py
├── enc2-clockwise1.py
├── key-1.py
├── key-10.py
├── key-11.py
├── key-12.py
├── key-13.py
├── key-14.py
├── key-151.py
├── key-2.py
├── key-3.py
├── key-4.py
├── key-5.py
├── key-6.py
├── key-7.py
├── key-8.py
└── key-9.py
├── hub16-example.ahk
├── hub16-karabiner.json
└── hub16-template.ahk
/.gitignore:
--------------------------------------------------------------------------------
1 | # For PCBs designed using KiCad: http://www.kicad-pcb.org/
2 | # Format documentation: http://kicad-pcb.org/help/file-formats/
3 |
4 | # Temporary files
5 | *.000
6 | *.bak
7 | *.bck
8 | *.kicad_pcb-bak
9 | *.sch-bak
10 | *~
11 | _autosave-*
12 | *.tmp
13 | *-save.pro
14 | *-save.kicad_pcb
15 | fp-info-cache
16 |
17 | # Netlist files (exported from Eeschema)
18 | *.net
19 |
20 | # Autorouter files (exported from Pcbnew)
21 | *.dsn
22 | *.ses
23 |
24 | # Exported BOM files
25 | *.xml
26 |
27 | # Gerbers
28 | *.drl
29 | *.grb
30 | *.gbl
31 | *.gbo
32 | *.gpb
33 | *.gbs
34 | *.gml
35 | *.gtl
36 | *.gto
37 | *.gtp
38 | *.gts
39 |
40 | # Step Files
41 | *.step
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "josh-kicad-lib"]
2 | path = josh-kicad-lib
3 | url = git@github.com:joshajohnson/josh-kicad-lib.git
4 |
--------------------------------------------------------------------------------
/.vscode/tasks.json:
--------------------------------------------------------------------------------
1 | {
2 | // See https://go.microsoft.com/fwlink/?LinkId=733558
3 | // for the documentation about the tasks.json format
4 | "version": "2.0.0",
5 | "tasks": [
6 | {
7 | "label": "build",
8 | "command": "${config:python.pythonPath}",
9 | "args": [ "Production/flash-test/prog.py"
10 | ],
11 | "group": "build",
12 | "presentation": {
13 | // Reveal the output only if unrecognized errors occur.
14 | // "reveal": "silent"
15 | },
16 | // Use the standard MS compiler pattern to detect errors, warnings and infos
17 | "problemMatcher": "$msCompile"
18 | }
19 | ]
20 |
21 | }
--------------------------------------------------------------------------------
/Documents/enclosure.md:
--------------------------------------------------------------------------------
1 | # Enclosure Manufacturing
2 |
3 | There are a number of ways the enclosure can be manufactured, and these options are outlined below:
4 |
5 | All case files can be found in `mechanicals/1.0`.
6 |
7 | By default, the enclosure has the below stackup:
8 |
9 | ```
10 | --- PCB Plate, 1.6mm
11 | --- Acrylic Upper, 4mm
12 | --- Hub16 PCB, 1.6mm
13 | --- Acrylic Mid, 4mm
14 | --- Acrylic Lower, 3mm
15 | - Acrylic Incline, 3-4mm (optional)
16 | ```
17 |
18 | You can however make a number of substitutions:
19 |
20 | - Swap PCB plate for 3mm acrylic and move upper 4mm acrylic to 3mm.
21 | - Note some switches may have reduced insertion depth into the PCB.
22 | - Replace acrylic lower with FR4 PCB.
23 | - 3d print parts instead of laser cutting or utilising PCBs for mechanical elements.
24 | - Design your own! .step file can be exported from KiCad into you mCad tool of choice.
25 |
--------------------------------------------------------------------------------
/Documents/imgs/all-the-cables.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Documents/imgs/all-the-cables.JPG
--------------------------------------------------------------------------------
/Documents/imgs/assembly-instructions/bare-bones.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Documents/imgs/assembly-instructions/bare-bones.JPG
--------------------------------------------------------------------------------
/Documents/imgs/assembly-instructions/check-encoders.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Documents/imgs/assembly-instructions/check-encoders.JPG
--------------------------------------------------------------------------------
/Documents/imgs/assembly-instructions/check-switches.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Documents/imgs/assembly-instructions/check-switches.JPG
--------------------------------------------------------------------------------
/Documents/imgs/assembly-instructions/led-cut.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Documents/imgs/assembly-instructions/led-cut.JPG
--------------------------------------------------------------------------------
/Documents/imgs/assembly-instructions/required-parts.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Documents/imgs/assembly-instructions/required-parts.JPG
--------------------------------------------------------------------------------
/Documents/imgs/assembly-instructions/step-1-1.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Documents/imgs/assembly-instructions/step-1-1.JPG
--------------------------------------------------------------------------------
/Documents/imgs/assembly-instructions/step-1-2.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Documents/imgs/assembly-instructions/step-1-2.JPG
--------------------------------------------------------------------------------
/Documents/imgs/assembly-instructions/step-1-3.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Documents/imgs/assembly-instructions/step-1-3.JPG
--------------------------------------------------------------------------------
/Documents/imgs/assembly-instructions/step-2.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Documents/imgs/assembly-instructions/step-2.JPG
--------------------------------------------------------------------------------
/Documents/imgs/assembly-instructions/step-3.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Documents/imgs/assembly-instructions/step-3.JPG
--------------------------------------------------------------------------------
/Documents/imgs/assembly-instructions/step-4.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Documents/imgs/assembly-instructions/step-4.JPG
--------------------------------------------------------------------------------
/Documents/imgs/assembly-instructions/step-5.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Documents/imgs/assembly-instructions/step-5.JPG
--------------------------------------------------------------------------------
/Documents/imgs/assembly-instructions/step-6.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Documents/imgs/assembly-instructions/step-6.JPG
--------------------------------------------------------------------------------
/Documents/imgs/assembly-instructions/step-7.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Documents/imgs/assembly-instructions/step-7.JPG
--------------------------------------------------------------------------------
/Documents/imgs/assembly-instructions/step-8.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Documents/imgs/assembly-instructions/step-8.JPG
--------------------------------------------------------------------------------
/Documents/imgs/header-img.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Documents/imgs/header-img.JPG
--------------------------------------------------------------------------------
/Documents/imgs/new-header.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Documents/imgs/new-header.JPG
--------------------------------------------------------------------------------
/Documents/macro.md:
--------------------------------------------------------------------------------
1 | # Macro Configuration
2 |
3 | Hub16 can also be used with software on your computer to enable powerful, context aware macros to be run.
4 |
5 | This works by sending uniquely identifiable keys to your computer which are picked up by software, which can then map those keys as required. As such, this requires the correct firmware to be loaded onto Hub16, and software to be installed on your computer.
6 |
7 | ## Firmware
8 |
9 | Hub16 does not ship with the macro firmware preinstalled, but is easily flashed onto your board.
10 |
11 | MechMerlin has [a great video](https://youtu.be/VR53Wo9Z960) on the process, so I will highlight the Hub16 specific configurations / settings.
12 |
13 | - When selecting the file to flash, use `firmware/binaries/hub16_macro.bin`.
14 | - Ensure you select the microcontroller as "ATMEGA32U4" before flashing the board.
15 | - The reset button can be found between the USB connectors on the back of the board, or by holding the bottom left key down whilst pressing the second from the right key on the bottom row (see below).
16 |
17 | The default configuration for macro mode is shown below:
18 |
19 | ```
20 | ------------------ ENC1:Clockwise: q
21 | | ENC1 ENC2 | ENC1:Anticlockwise: r
22 | | a b c d | ENC1:Button: s
23 | | e f g h | ENC2:Clockwise: t
24 | | i j k l | ENC2:Anticlockwise: u
25 | | m n o p* | ENC2:Button: v
26 | ------------------
27 | ```
28 |
29 | \* Once flashing the macro layout you may notice that holding or tapping the bottom right key quickly may not result in a key being sent. This because if you double tap that key, it will bring you to a configuration layer on the keyboard which allows you to control the LEDs and reset the keyboard. Double tapping the same key will return you to the base layer. The keymap for this configuration is shown below:
30 |
31 | ```
32 | _______, _______,
33 | _______, RGB_MOD, RGB_RMOD, RGB_TOG,
34 | RGB_VAD, RGB_VAI, RGB_HUD, RGB_HUI,
35 | RGB_SAD, RGB_SAI, _______, _______,
36 | _______, _______, RESET, HOME,
37 |
38 | ```
39 |
40 | ## Software
41 |
42 | ### Windows
43 |
44 | - Download and install [AutoHotKey](https://www.autohotkey.com/).
45 | - Copy the example script from `software/hub16-template.ahk` into a folder of your choice.
46 | - For the script to run at startup, I strongly suggest placing a shortcut to the above file in `%APPDATA%/Roaming/Microsoft/Windows/Start Menu/Programs/Start-up`.
47 | - Configure the script to suit your use case, ensuring to restart the AHK script after each change, otherwise it will not use the latest changes.
48 |
49 | ### macOS
50 |
51 | - Install [Karabiner-Elements](https://karabiner-elements.pqrs.org/docs/getting-started/installation/).
52 | - Copy the example script from `software/hub16-karabiner.json` to your local `~.config/karabiner` folder.
53 | - Configure keybindings as required.
54 |
55 | ### Linux
56 |
57 | - Whilst it's slightly more painful and buggy to configure and use on Linux, the below is the best configuration I've got to work. PRs are very much welcome for improvements to this.
58 | - Install AutoKey from [here](https://github.com/autokey/autokey/wiki/Installing#debian-and-derivatives), as the apt-get version is broken.
59 | - Create a file in your home directory with the name `.Xmodmap` and the following contents
60 |
61 | ``` bash
62 | keycode 202 = Hyper_R
63 | add mod3 = Hyper_R
64 | ```
65 |
66 | - Update xmodmap with `xmodmap ~/.Xmodmap` and then confirm that `mod3` has been updated by entering `xmodmap` in your shell and looking for `mod3 Hyper_R (0xca)`.
67 | - Then add it to your ```~./bashrc```, as this will allow the keyboard to work **only after a shell is opened by the user**. A PR to resolve this would be very welcomed.
68 | - Load the AutoKey files found in `software/hub16` and it should work.
69 | - Note: you may need to make a new folder from within Autokey, then copy your files in as it is particular about locating new files.
70 | - You will also need to configure AutoKey to start at boot, which can be done from `Edit -> Preferences`.
71 | - For volume and media control as configured in my example code, [playerctl](https://github.com/altdesktop/playerctl) and ```alsa-utils``` must be installed.
72 |
--------------------------------------------------------------------------------
/Documents/pcba.md:
--------------------------------------------------------------------------------
1 | # PCB SMT Assembly Guide
2 |
3 | I highly recommend assembling this board using solder paste, a stencil, and a reflow oven. If you don't have access to a reflow oven, a hot air gun will also get the job done.
4 |
5 | - Gerbers can be found in `production/1.0-prod/gerbers.zip` folder, and can be uploaded to your favourite PCB manufacturer.
6 | - Most PCB houses will generate the solderpaste stencil from your copper layer, which can cause issues. As such I recommend uploading the stencil separately to ensure the apertures are as per the design files.
7 | - The bill of materials can be found at `production/1.0-prod/bom.csv` and contains part numbers for all components on the board. DigiKey and LCSC part numbers are provided where available, however some parts such at the USB connectors, reverse mount LEDs, and USB hub may only be available at one or neither of the suppliers.
8 | - The "Human PnP" file is located at `production/1.0-prod/assembly.html`, and will be very helpful in assembling the board.
9 |
10 | ## Test Procedure
11 |
12 | With the board assembled, you are ready to plug it in and check everything works. The below test procedure should help guide you through the process.
13 |
14 | - Preform visual inspection of PCBA and rework any issues. In particular, USB connectors QFNs often require rework.
15 | - Measure continuity across C1. If shorted, locate and resolve a VCC - GND short.
16 | - Measure continuity across C21. If shorted, locate and reslove a 3V3 - GND short.
17 | - Using a current limited bench power supply set at 5V 100 mA, connect board through J1 and confirm power draw is approximately 25 mA. If current draw is high, attempt to locate and resolve any shorts on the board. If current draw too low, ensure ICs and crystals are soldered correctly.
18 | - Using an AVR programmer, [flash the bootloader](Documents/advanced-config.md#bootloader-flashing) through the ISP header.
19 | - If unable, common causes are:
20 | - Software issues - check if programming a known good device works.
21 | - Poor connection - ensure your connections to the programming header are solid.
22 | - Power / Reset correct - ensure all power pins have 5V on the physical pin (not nearest capacitor) and that the reset line is high.
23 | - Crystal - ensure Y1 is soldered down correctly and is 16 MHz.
24 | - With bootlader installed, connect to computer and flash the no_mod firmware.
25 | - If unable to detect keyboard, confirm that USB hub and ATmega are being detected through `lsusb` and / or `dmesg -w` on Linux, or device manager on Windows.
26 | - Using tweezers, short pin connections and ensure all keys print a unique key to the computer.
27 | - Also test the rotary encoder connections by placing an encoder against the three holes and rotating in both directions.
28 | - Common issues are with the diodes being installed incorrectly, and shorts on the 32u4.
29 | - Flash default firmware and confirm all LEDs light up red. Double tap bottom right key and then top row, 3rd from left do cycle through LEDs and confirm they all function.
30 | - LEDs are daisy chained from D2 - D3 - D10 etc around outside of board, ensure good solder connections if LEDs stop working somewhere in the middle.
31 | - If solder connections are good but LED still non functioning, ensure is it oriented correctly (triangle on LED near corner marking on PCB, NOT pin 1!)
32 | - These LEDs often fail during reflow, so if LED is non functioning and remaining LEDs can be fixed by shorting out LED, replace.
33 | - Check fuses have been set correctly by resetting board from software by pressing the "RESET" key on layer two of the board (bottom row, 3rd from left).
34 | - With `dmesg-w` or device manager running, ensure "Arduino Leonardo" is seen enumerating before "Hub16" appears. If this fails reflash the bootloader following [these instructions](Documents/advanced-config.md#bootloader-flashing)
35 | - Confirm all downstream USB ports function by connecting a device to each port, ensuring to rotate 180 degrees, and checking it appears on computer each time.
36 | - Common issues are with shorts on the USB hub, along with data pins on connector.
37 | - If device only works in one orientation, check power pins of connector are soldered down well.
38 | - Finally, reverse orientation of upstream USB connector (to computer) and confirm enumeration.
39 |
40 | If all the above checks pass, your board is ready to use. Congratulations on a successful assembly!
41 |
--------------------------------------------------------------------------------
/Documents/via.md:
--------------------------------------------------------------------------------
1 | # VIA Keymap Configuration
2 |
3 | VIA is a great way to graphically configure your keyboard without going through the hassle of configuring build environments and poking around in the code.
4 |
5 | ## Install VIA
6 |
7 | To use VIA, first [download and install](https://caniusevia.com/) the configuration software, and then plug in your keyboard. It should detect and show a graphic of Hub16 on your screen.
8 |
9 | **Note: There is a [bug](https://github.com/qmk/qmk_firmware/issues/11157) in QMK / VIA which results in keycodes such as LED control to be shifted by one. This results in layer one of the keyboard looking wrong. Until this is fixed, rolling back to [old firmware](../Firmware/binaries/hub16_via_old.hex) is the best workaround.**
10 |
11 | ## Configure Keys
12 |
13 | From within VIA, you can easily configure keys as required. It allows not only the typical keys found on your keyboard, but media keys, macros, layer shifting to enable different functions per key, and even keys to control the LEDs installed in Hub16. It does not however allow you to configure the rotary encoder behaviour.
14 |
15 | ## Configure Encoders
16 |
17 | By default, the encoders are configured to volume up / down (left) and media next / prev (right).
18 |
19 | Unfortunately, due to limitations in VIA the encoders are not visible or configurable. The best workaround at this time is to build a new VIA keymap with the encoder functions altered to suit your use case, flash this onto the board, and then configure the remainder of the keys in VIA. This can be done by following the below instructions:
20 |
21 | - Follow the QMK [getting started guide](https://docs.qmk.fm/#/newbs_getting_started) to install the toolchain and configure your build environment.
22 | - Open the `qmk_firmware/keyboards/Hub16/keymaps/via/keymap.c` file in your preferred text editor.
23 | - Locate the function `encoder_update_user`, and update the keycodes in `tap_code(KC_xxx)` to one from the [keycodes list](https://docs.qmk.fm/#/keycodes?id=basic-keycodes). If you use keycode not on the basic list, you may need to replace `tap_code` with `tap_code16`.
24 | - With the changes made, save your new keymap, build, and flash the keymap to Hub16 with `make hub16:via:flash` run from the `qmk_firmware` directory.
25 | - You should now see the encoders functioning as desired, and you can configure the remainder or your keyboard using VIA.
26 |
27 | There is also a [video](https://youtu.be/TTCaQ-STD-E) which walks you through the above steps.
28 |
--------------------------------------------------------------------------------
/Firmware/hub16/config.h:
--------------------------------------------------------------------------------
1 | /*
2 | Copyright 2019 Josh Johnson
3 |
4 | This program is free software: you can redistribute it and/or modify
5 | it under the terms of the GNU General Public License as published by
6 | the Free Software Foundation, either version 2 of the License, or
7 | (at your option) any later version.
8 |
9 | This program is distributed in the hope that it will be useful,
10 | but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | GNU General Public License for more details.
13 |
14 | You should have received a copy of the GNU General Public License
15 | along with this program. If not, see .
16 | */
17 |
18 | #pragma once
19 |
20 | #include "config_common.h"
21 |
22 | /* USB Device descriptor parameter */
23 | #define VENDOR_ID 0x6A6A
24 | #define PRODUCT_ID 0x4810
25 | #define DEVICE_VER 0x0001
26 | #define MANUFACTURER Josh Johnson
27 | #define PRODUCT Hub16
28 |
29 | /* key matrix size */
30 | #define MATRIX_ROWS 5
31 | #define MATRIX_COLS 4
32 |
33 | #define MATRIX_ROW_PINS \
34 | { F0, C7, C6, B6, E6}
35 | #define MATRIX_COL_PINS \
36 | { F4, F1, D5, D3 }
37 |
38 | /* COL2ROW, ROW2COL*/
39 | #define DIODE_DIRECTION COL2ROW
40 |
41 | #define RGB_DI_PIN D1
42 | #define RGBLED_NUM 11
43 | #define RGBLIGHT_HUE_STEP 8
44 | #define RGBLIGHT_SAT_STEP 8
45 | #define RGBLIGHT_VAL_STEP 8
46 | #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
47 | #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
48 | // /*== all animations enable ==*/
49 | #define RGBLIGHT_ANIMATIONS
50 | // /*== or choose animations ==*/
51 | // #define RGBLIGHT_EFFECT_BREATHING
52 | // #define RGBLIGHT_EFFECT_RAINBOW_MOOD
53 | // #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
54 | // #define RGBLIGHT_EFFECT_SNAKE
55 | // #define RGBLIGHT_EFFECT_KNIGHT
56 | // #define RGBLIGHT_EFFECT_CHRISTMAS
57 | // #define RGBLIGHT_EFFECT_STATIC_GRADIENT
58 | // #define RGBLIGHT_EFFECT_RGB_TEST
59 | // #define RGBLIGHT_EFFECT_ALTERNATING
60 |
61 | /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
62 | #define DEBOUNCE 20
63 |
64 | /* ENCODER THINGS */
65 | // #define ENCODER_DIRECTION_FLIP
66 | #define ENCODERS_PAD_A \
67 | { F5, B5 }
68 | #define ENCODERS_PAD_B \
69 | { F6, B4 }
70 |
71 | /* Tap Dance timing */
72 | #define TAPPING_TERM 200
73 |
74 | /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
75 | #define LOCKING_SUPPORT_ENABLE
76 | /* Locking resynchronize hack */
77 | #define LOCKING_RESYNC_ENABLE
78 |
--------------------------------------------------------------------------------
/Firmware/hub16/hub16.c:
--------------------------------------------------------------------------------
1 | /* Copyright 2019 Josh Johnson
2 | *
3 | * This program is free software: you can redistribute it and/or modify
4 | * it under the terms of the GNU General Public License as published by
5 | * the Free Software Foundation, either version 2 of the License, or
6 | * (at your option) any later version.
7 | *
8 | * This program is distributed in the hope that it will be useful,
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | * GNU General Public License for more details.
12 | *
13 | * You should have received a copy of the GNU General Public License
14 | * along with this program. If not, see .
15 | */
16 | #include "hub16.h"
--------------------------------------------------------------------------------
/Firmware/hub16/hub16.h:
--------------------------------------------------------------------------------
1 | /* Copyright 2019 Josh Johnson
2 | *
3 | * This program is free software: you can redistribute it and/or modify
4 | * it under the terms of the GNU General Public License as published by
5 | * the Free Software Foundation, either version 2 of the License, or
6 | * (at your option) any later version.
7 | *
8 | * This program is distributed in the hope that it will be useful,
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | * GNU General Public License for more details.
12 | *
13 | * You should have received a copy of the GNU General Public License
14 | * along with this program. If not, see .
15 | */
16 | #pragma once
17 |
18 | #include "quantum.h"
19 | #define ___ KC_NO
20 |
21 | /* This a shortcut to help you visually see your layout.
22 | *
23 | * The first section contains all of the arguments representing the physical
24 | * layout of the board and position of the keys.
25 | *
26 | * The second converts the arguments into a two-dimensional array which
27 | * represents the switch matrix.
28 | */
29 | #define LAYOUT( \
30 | k40, k41, \
31 | k00, k01, k02, k03, \
32 | k10, k11, k12, k13, \
33 | k20, k21, k22, k23, \
34 | k30, k31, k32, k33 \
35 | ) { \
36 | { k00, k01, k02, k03, }, \
37 | { k10, k11, k12, k13, }, \
38 | { k20, k21, k22, k23, }, \
39 | { k30, k31, k32, k33, }, \
40 | { k40, k41, ___, ___, } \
41 | }
42 |
43 |
--------------------------------------------------------------------------------
/Firmware/hub16/info.json:
--------------------------------------------------------------------------------
1 | {
2 | "keyboard_name": "Hub16",
3 | "url": "https://joshajohnson.com/hub16-keyboard/",
4 | "maintainer": "Josh Johnson",
5 | "width": 4,
6 | "height": 5,
7 | "layouts": {
8 | "LAYOUT": {
9 | "layout": [
10 | {"label":"Mute", "x":0.5, "y":0},
11 | {"label":"Play / Pause", "x":2.5, "y":0},
12 | {"label":"7", "x":0, "y":1},
13 | {"label":"8", "x":1, "y":1},
14 | {"label":"9", "x":2, "y":1},
15 | {"label":"*", "x":3, "y":1},
16 | {"label":"4", "x":0, "y":2},
17 | {"label":"5", "x":1, "y":2},
18 | {"label":"6", "x":2, "y":2},
19 | {"label":"-", "x":3, "y":2},
20 | {"label":"1", "x":0, "y":3},
21 | {"label":"2", "x":1, "y":3},
22 | {"label":"3", "x":2, "y":3},
23 | {"label":"+", "x":3, "y":3},
24 | {"label":"MO(1)", "x":0, "y":4},
25 | {"label":"0", "x":1, "y":4},
26 | {"label":".", "x":2, "y":4},
27 | {"label":"N.ENT", "x":3, "y":4}
28 | ]
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/Firmware/hub16/keymaps/default/keymap.c:
--------------------------------------------------------------------------------
1 | /* Copyright 2019 Josh Johnson
2 | *
3 | * This program is free software: you can redistribute it and/or modify
4 | * it under the terms of the GNU General Public License as published by
5 | * the Free Software Foundation, either version 2 of the License, or
6 | * (at your option) any later version.
7 | *
8 | * This program is distributed in the hope that it will be useful,
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | * GNU General Public License for more details.
12 | *
13 | * You should have received a copy of the GNU General Public License
14 | * along with this program. If not, see .
15 | */
16 | #include QMK_KEYBOARD_H
17 |
18 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
19 | [0] = LAYOUT( /* Base */
20 | KC_MUTE, KC_MPLY,
21 | KC_7, KC_8, KC_9, KC_PAST,
22 | KC_4, KC_5, KC_6, KC_PMNS,
23 | KC_1, KC_2, KC_3, KC_PPLS,
24 | MO(1), KC_0, KC_PDOT,KC_PENT
25 | ),
26 |
27 | [1] = LAYOUT( /* LED Control */
28 | _______, _______,
29 | _______, RGB_MOD, RGB_RMOD, RGB_TOG,
30 | RGB_VAD, RGB_VAI, RGB_HUD, RGB_HUI,
31 | RGB_SAD, RGB_SAI, _______, _______,
32 | _______, _______, RESET, _______
33 | ),
34 | };
35 |
36 | void encoder_update_user(uint8_t index, bool clockwise) {
37 | if (index == 0) { /* Left Encoder */
38 | if (clockwise) {
39 | tap_code(KC_VOLD);
40 | } else {
41 | tap_code(KC_VOLU);
42 | }
43 | } else if (index == 1) { /* Right Encoder */
44 | if (clockwise) {
45 | tap_code(KC_MPRV);
46 | } else {
47 | tap_code(KC_MNXT);
48 | }
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/Firmware/hub16/keymaps/macro/keymap.c:
--------------------------------------------------------------------------------
1 | /* Copyright 2019 Josh Johnson
2 | *
3 | * This program is free software: you can redistribute it and/or modify
4 | * it under the terms of the GNU General Public License as published by
5 | * the Free Software Foundation, either version 2 of the License, or
6 | * (at your option) any later version.
7 | *
8 | * This program is distributed in the hope that it will be useful,
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | * GNU General Public License for more details.
12 | *
13 | * You should have received a copy of the GNU General Public License
14 | * along with this program. If not, see .
15 | */
16 | #include QMK_KEYBOARD_H
17 |
18 | // Function key we are 'wrapping' usual key presses in
19 | #define KC_WRAP KC_F24
20 |
21 | // Keyboard Layers
22 | enum keyboard_layers{
23 | _BASE = 0,
24 | _CTRL
25 | };
26 |
27 | // Tap Dance Declarations
28 | void td_ctrl (qk_tap_dance_state_t *state, void *user_data);
29 |
30 | enum tap_dance { CTRL = 0, BASE = 1 };
31 |
32 | qk_tap_dance_action_t tap_dance_actions[] = {
33 | // Tap once for standard key on base layer, twice to toggle to control layer
34 | [CTRL] = ACTION_TAP_DANCE_FN(td_ctrl),
35 | [BASE] = ACTION_TAP_DANCE_LAYER_MOVE(_______, _BASE)};
36 |
37 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
38 | [_BASE] = LAYOUT( /* Base */
39 | KC_S, KC_V,
40 | KC_A, KC_B, KC_C, KC_D,
41 | KC_E, KC_F, KC_G, KC_H,
42 | KC_I, KC_J, KC_K, KC_L,
43 | KC_M, KC_N, KC_O, TD(CTRL)
44 | ),
45 |
46 | [_CTRL] = LAYOUT( /* Control */
47 | KC_NO, KC_NO,
48 | _______, RGB_MOD, RGB_RMOD, RGB_TOG,
49 | RGB_VAD, RGB_VAI, RGB_HUD, RGB_HUI,
50 | RGB_SAD, RGB_SAI, _______, _______,
51 | _______, _______, RESET, TD(BASE)
52 | ),
53 | };
54 |
55 | // Keyboard is setup to 'wrap' the pressed key with an unused Fxx key,
56 | // allowing for easy differentiation from a real keyboard.
57 | void encoder_update_user(uint8_t index, bool clockwise) {
58 | if (index == 0) { /* Left Encoder */
59 | if (clockwise) {
60 | register_code(KC_WRAP);
61 | tap_code(KC_R);
62 | unregister_code(KC_WRAP);
63 | } else {
64 | register_code(KC_WRAP);
65 | tap_code(KC_Q);
66 | unregister_code(KC_WRAP);
67 | }
68 | } else if (index == 1) { /* Right Encoder */
69 | if (clockwise) {
70 | register_code(KC_WRAP);
71 | tap_code(KC_U);
72 | unregister_code(KC_WRAP);
73 | } else {
74 | register_code(KC_WRAP);
75 | tap_code(KC_T);
76 | unregister_code(KC_WRAP);
77 | }
78 | }
79 | }
80 |
81 | // Below stolen from TaranVH (https://github.com/TaranVH/2nd-keyboard/blob/master/HASU_USB/F24/keymap.c)
82 | // Shoutout to drashna on the QMK discord for basically writing this for me.... :P
83 | bool process_record_user(uint16_t keycode, keyrecord_t *record) {
84 | static uint8_t f24_tracker;
85 | switch (keycode) {
86 | case KC_A ... KC_F23:
87 | case KC_EXECUTE ... KC_EXSEL:
88 | if (record->event.pressed) {
89 | register_code(KC_WRAP);
90 | f24_tracker++;
91 | register_code(keycode);
92 | } else {
93 | unregister_code(keycode);
94 | f24_tracker--;
95 | if (!f24_tracker) {
96 | unregister_code(KC_WRAP);
97 | }
98 | }
99 | return false;
100 | break;
101 | }
102 | return true;
103 | }
104 |
105 | // Below works around TD() not running key press through process_record_user.
106 | // Fixes bug of CTRL layer move key not being wrapped in by modifier on single tap
107 | void td_ctrl (qk_tap_dance_state_t *state, void *user_data) {
108 | if (state->count == 1) {
109 | register_code(KC_WRAP);
110 | tap_code(KC_P);
111 | unregister_code(KC_WRAP);
112 | } else if (state->count == 2) {
113 | layer_move(_CTRL);
114 | }
115 | }
116 |
--------------------------------------------------------------------------------
/Firmware/hub16/keymaps/macro/rules.mk:
--------------------------------------------------------------------------------
1 | TAP_DANCE_ENABLE = yes
2 |
--------------------------------------------------------------------------------
/Firmware/hub16/keymaps/via/keymap.c:
--------------------------------------------------------------------------------
1 | /* Copyright 2019 Josh Johnson
2 | *
3 | * This program is free software: you can redistribute it and/or modify
4 | * it under the terms of the GNU General Public License as published by
5 | * the Free Software Foundation, either version 2 of the License, or
6 | * (at your option) any later version.
7 | *
8 | * This program is distributed in the hope that it will be useful,
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | * GNU General Public License for more details.
12 | *
13 | * You should have received a copy of the GNU General Public License
14 | * along with this program. If not, see .
15 | */
16 | #include QMK_KEYBOARD_H
17 |
18 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
19 | [0] = LAYOUT( /* Base */
20 | KC_MUTE, KC_MPLY,
21 | KC_7, KC_8, KC_9, KC_PAST,
22 | KC_4, KC_5, KC_6, KC_PMNS,
23 | KC_1, KC_2, KC_3, KC_PPLS,
24 | MO(1), KC_0, KC_PDOT, KC_PENT
25 | ),
26 |
27 | [1] = LAYOUT( /* LED Control */
28 | _______, _______,
29 | _______, RGB_MOD, RGB_RMOD, RGB_TOG,
30 | RGB_VAD, RGB_VAI, RGB_HUD, RGB_HUI,
31 | RGB_SAD, RGB_SAI, _______, _______,
32 | _______, _______, RESET, _______
33 | ),
34 |
35 | [2] = LAYOUT(
36 | _______, _______,
37 | _______, _______, _______, _______,
38 | _______, _______, _______, _______,
39 | _______, _______, _______, _______,
40 | _______, _______, _______, _______
41 | ),
42 |
43 | [3] = LAYOUT(
44 | _______, _______,
45 | _______, _______, _______, _______,
46 | _______, _______, _______, _______,
47 | _______, _______, _______, _______,
48 | _______, _______, _______, _______
49 | ),
50 | };
51 |
52 | void encoder_update_user(uint8_t index, bool clockwise) {
53 | if (index == 0) { /* Left Encoder */
54 | if (clockwise) {
55 | tap_code(KC_VOLD);
56 | } else {
57 | tap_code(KC_VOLU);
58 | }
59 | } else if (index == 1) { /* Right Encoder */
60 | if (clockwise) {
61 | tap_code(KC_MPRV);
62 | } else {
63 | tap_code(KC_MNXT);
64 | }
65 | }
66 | }
67 |
--------------------------------------------------------------------------------
/Firmware/hub16/keymaps/via/rules.mk:
--------------------------------------------------------------------------------
1 | VIA_ENABLE = yes
2 |
--------------------------------------------------------------------------------
/Firmware/hub16/matrix.c:
--------------------------------------------------------------------------------
1 | /*
2 | Copyright 2012-2018 Jun Wako, Jack Humbert, Yiancar
3 |
4 | This program is free software: you can redistribute it and/or modify
5 | it under the terms of the GNU General Public License as published by
6 | the Free Software Foundation, either version 2 of the License, or
7 | (at your option) any later version.
8 |
9 | This program is distributed in the hope that it will be useful,
10 | but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | GNU General Public License for more details.
13 |
14 | You should have received a copy of the GNU General Public License
15 | along with this program. If not, see .
16 | */
17 | #include
18 | #include
19 | #include "wait.h"
20 | #include "util.h"
21 | #include "matrix.h"
22 | #include "quantum.h"
23 |
24 | // Encoder things
25 | #define SWITCH_1 F7
26 | #define SWITCH_2 D7
27 | static bool read_encoder_switches(matrix_row_t current_matrix[], uint8_t current_row);
28 |
29 | static const pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
30 | static const pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
31 |
32 | /* matrix state(1:on, 0:off) */
33 | extern matrix_row_t raw_matrix[MATRIX_ROWS]; // raw values
34 | extern matrix_row_t matrix[MATRIX_ROWS]; // debounced values
35 |
36 | static void select_row(uint8_t row) {
37 | setPinOutput(row_pins[row]);
38 | writePinLow(row_pins[row]);
39 | }
40 |
41 | static void unselect_row(uint8_t row) { setPinInputHigh(row_pins[row]); }
42 |
43 | static void unselect_rows(void) {
44 | for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
45 | setPinInputHigh(row_pins[x]);
46 | }
47 | }
48 |
49 | static void init_pins(void) {
50 | unselect_rows();
51 | for (uint8_t x = 0; x < MATRIX_COLS; x++) {
52 | setPinInputHigh(col_pins[x]);
53 | }
54 | }
55 |
56 | static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row) {
57 | // Store last value of row prior to reading
58 | matrix_row_t last_row_value = current_matrix[current_row];
59 |
60 | // Clear data in matrix row
61 | current_matrix[current_row] = 0;
62 |
63 | // Select row and wait for row selecton to stabilize
64 | select_row(current_row);
65 | wait_us(30);
66 |
67 | // For each col...
68 | for (uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) {
69 | // Select the col pin to read (active low)
70 | uint8_t pin_state = readPin(col_pins[col_index]);
71 |
72 | // Populate the matrix row with the state of the col pin
73 | current_matrix[current_row] |= pin_state ? 0 : (MATRIX_ROW_SHIFTER << col_index);
74 | }
75 |
76 | // Unselect row
77 | unselect_row(current_row);
78 |
79 | return (last_row_value != current_matrix[current_row]);
80 | }
81 |
82 |
83 | void matrix_init_custom(void) {
84 | // initialize key pins
85 | setPinInput(SWITCH_1);
86 | setPinInput(SWITCH_2);
87 | init_pins();
88 | }
89 |
90 | bool matrix_scan_custom(void) {
91 | bool changed = false;
92 |
93 | // Set row, read cols
94 | for (uint8_t current_row = 0; current_row < MATRIX_ROWS; current_row++) {
95 | changed |= read_cols_on_row(raw_matrix, current_row);
96 | }
97 |
98 | // Read encoder switches, already debounced
99 | changed |= read_encoder_switches(matrix, 4);
100 |
101 | return changed;
102 | }
103 |
104 | static bool read_encoder_switches(matrix_row_t current_matrix[], uint8_t current_row) {
105 | // Store last value of row prior to reading
106 | matrix_row_t last_row_value = current_matrix[current_row];
107 |
108 | // Clear data in matrix row
109 | current_matrix[current_row] = 0;
110 |
111 | // Debounce the encoder buttons using a shift register
112 | static uint8_t btn_1_array;
113 | static uint8_t btn_2_array;
114 | bool btn_1_rise = 0;
115 | bool btn_2_rise = 0;
116 | btn_1_array <<= 1;
117 | btn_2_array <<= 1;
118 | btn_1_array |= readPin(SWITCH_1);
119 | btn_2_array |= readPin(SWITCH_2);
120 | (btn_1_array == 0b01111111) ? (btn_1_rise = 1) : (btn_1_rise = 0);
121 | (btn_2_array == 0b01111111) ? (btn_2_rise = 1) : (btn_2_rise = 0);
122 |
123 | // Populate the matrix row with the state of the encoder
124 | current_matrix[current_row] |= btn_1_rise ? (1 << 0) : 0;
125 | current_matrix[current_row] |= btn_2_rise ? (1 << 1) : 0;
126 |
127 | return (last_row_value != current_matrix[current_row]);
128 | }
129 |
--------------------------------------------------------------------------------
/Firmware/hub16/readme.md:
--------------------------------------------------------------------------------
1 | # Hub16
2 |
3 | Hub16 is a 16 Key Macro Pad with an inbuilt USB 2.0 hub and dual rotary encoders.
4 |
5 | For more information regarding the keyboard, please visit the [Hub16 Website](https://www.joshajohnson.com/hub16-keyboard/) or [GitHub Repo](https://github.com/joshajohnson/Hub16).
6 |
7 | * Keyboard Maintainer: [Josh Johnson](https://github.com/joshajohnson)
8 | * Hardware Supported: Hub16 PCB (atmega32u4)
9 | * Hardware Availability: [Josh Johnson](https://www.joshajohnson.com/hub16-keyboard/)
10 |
11 | Make example for this keyboard (after setting up your build environment):
12 |
13 | make hub16:default:flash
14 |
15 | See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
16 |
--------------------------------------------------------------------------------
/Firmware/hub16/rules.mk:
--------------------------------------------------------------------------------
1 | MCU = atmega32u4
2 |
3 | BOOTLOADER = caterina
4 |
5 | # Build Options
6 | CUSTOM_MATRIX = lite # Custom scanning of matrix
7 | BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
8 | MOUSEKEY_ENABLE = yes # Mouse keys
9 | EXTRAKEY_ENABLE = yes # Audio control and System control
10 | CONSOLE_ENABLE = no # Console for debug
11 | COMMAND_ENABLE = no # Commands for debug and configuration
12 | # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
13 | SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
14 | # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
15 | NKRO_ENABLE = no # USB Nkey Rollover
16 | BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
17 | RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
18 | UNICODE_ENABLE = no # Unicode
19 | BLUETOOTH_ENABLE = no # Enable Bluetooth
20 | AUDIO_ENABLE = no # Audio output on port C6
21 | ENCODER_ENABLE = yes # Rotary Encoder support
22 |
23 | SRC = matrix.c
24 |
--------------------------------------------------------------------------------
/Hardware/0.1/Hub16-rescue.dcm:
--------------------------------------------------------------------------------
1 | EESchema-DOCLIB Version 2.0
2 | #
3 | #End Doc Library
4 |
--------------------------------------------------------------------------------
/Hardware/0.1/Hub16-rescue.lib:
--------------------------------------------------------------------------------
1 | EESchema-LIBRARY Version 2.4
2 | #encoding utf-8
3 | #
4 | # Crystal_GND24_Small-Device
5 | #
6 | DEF Crystal_GND24_Small-Device Y 0 40 Y N 1 F N
7 | F0 "Y" 50 175 50 H V L CNN
8 | F1 "Crystal_GND24_Small-Device" 50 100 50 H V L CNN
9 | F2 "" 0 0 50 H I C CNN
10 | F3 "" 0 0 50 H I C CNN
11 | $FPLIST
12 | Crystal*
13 | $ENDFPLIST
14 | DRAW
15 | S -30 -60 30 60 0 1 0 N
16 | P 2 0 1 15 -50 -30 -50 30 N
17 | P 2 0 1 15 50 -30 50 30 N
18 | P 4 0 1 0 -50 -50 -50 -75 50 -75 50 -50 N
19 | P 4 0 1 0 -50 50 -50 75 50 75 50 50 N
20 | X 1 1 -100 0 50 R 50 50 1 1 P
21 | X 2 2 0 -125 50 U 50 50 1 1 P
22 | X 3 3 100 0 50 L 50 50 1 1 P
23 | X 4 4 0 125 50 D 50 50 1 1 P
24 | ENDDRAW
25 | ENDDEF
26 | #
27 | #End Library
28 |
--------------------------------------------------------------------------------
/Hardware/0.1/Hub16.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Hardware/0.1/Hub16.pdf
--------------------------------------------------------------------------------
/Hardware/0.1/Hub16.pro:
--------------------------------------------------------------------------------
1 | update=17/06/2019 12:08:21
2 | version=1
3 | last_client=kicad
4 | [general]
5 | version=1
6 | RootSch=
7 | BoardNm=
8 | [cvpcb]
9 | version=1
10 | NetIExt=net
11 | [eeschema]
12 | version=1
13 | LibDir=
14 | [eeschema/libraries]
15 | [schematic_editor]
16 | version=1
17 | PageLayoutDescrFile=
18 | PlotDirectoryName=./
19 | SubpartIdSeparator=0
20 | SubpartFirstId=65
21 | NetFmtName=
22 | SpiceAjustPassiveValues=0
23 | LabSize=50
24 | ERC_TestSimilarLabels=1
25 | [pcbnew]
26 | version=1
27 | PageLayoutDescrFile=
28 | LastNetListRead=Hub16.net
29 | CopperLayerCount=2
30 | BoardThickness=1.6
31 | AllowMicroVias=0
32 | AllowBlindVias=0
33 | RequireCourtyardDefinitions=0
34 | ProhibitOverlappingCourtyards=1
35 | MinTrackWidth=0.2
36 | MinViaDiameter=0.5
37 | MinViaDrill=0.25
38 | MinMicroViaDiameter=0.2
39 | MinMicroViaDrill=0.09999999999999999
40 | MinHoleToHole=0.25
41 | TrackWidth1=0.25
42 | TrackWidth2=0.2
43 | TrackWidth3=0.5
44 | TrackWidth4=1
45 | ViaDiameter1=0.5
46 | ViaDrill1=0.25
47 | dPairWidth1=0.2
48 | dPairGap1=0.25
49 | dPairViaGap1=0.25
50 | SilkLineWidth=0.12
51 | SilkTextSizeV=1
52 | SilkTextSizeH=1
53 | SilkTextSizeThickness=0.15
54 | SilkTextItalic=0
55 | SilkTextUpright=1
56 | CopperLineWidth=0.2
57 | CopperTextSizeV=1.5
58 | CopperTextSizeH=1.5
59 | CopperTextThickness=0.3
60 | CopperTextItalic=0
61 | CopperTextUpright=1
62 | EdgeCutLineWidth=0.05
63 | CourtyardLineWidth=0.05
64 | OthersLineWidth=0.15
65 | OthersTextSizeV=1
66 | OthersTextSizeH=1
67 | OthersTextSizeThickness=0.15
68 | OthersTextItalic=0
69 | OthersTextUpright=1
70 | SolderMaskClearance=0.01
71 | SolderMaskMinWidth=0.01
72 | SolderPasteClearance=0
73 | SolderPasteRatio=-0
74 | [pcbnew/Layer.F.Cu]
75 | Name=F.Cu
76 | Type=0
77 | Enabled=1
78 | [pcbnew/Layer.In1.Cu]
79 | Name=In1.Cu
80 | Type=0
81 | Enabled=0
82 | [pcbnew/Layer.In2.Cu]
83 | Name=In2.Cu
84 | Type=0
85 | Enabled=0
86 | [pcbnew/Layer.In3.Cu]
87 | Name=In3.Cu
88 | Type=0
89 | Enabled=0
90 | [pcbnew/Layer.In4.Cu]
91 | Name=In4.Cu
92 | Type=0
93 | Enabled=0
94 | [pcbnew/Layer.In5.Cu]
95 | Name=In5.Cu
96 | Type=0
97 | Enabled=0
98 | [pcbnew/Layer.In6.Cu]
99 | Name=In6.Cu
100 | Type=0
101 | Enabled=0
102 | [pcbnew/Layer.In7.Cu]
103 | Name=In7.Cu
104 | Type=0
105 | Enabled=0
106 | [pcbnew/Layer.In8.Cu]
107 | Name=In8.Cu
108 | Type=0
109 | Enabled=0
110 | [pcbnew/Layer.In9.Cu]
111 | Name=In9.Cu
112 | Type=0
113 | Enabled=0
114 | [pcbnew/Layer.In10.Cu]
115 | Name=In10.Cu
116 | Type=0
117 | Enabled=0
118 | [pcbnew/Layer.In11.Cu]
119 | Name=In11.Cu
120 | Type=0
121 | Enabled=0
122 | [pcbnew/Layer.In12.Cu]
123 | Name=In12.Cu
124 | Type=0
125 | Enabled=0
126 | [pcbnew/Layer.In13.Cu]
127 | Name=In13.Cu
128 | Type=0
129 | Enabled=0
130 | [pcbnew/Layer.In14.Cu]
131 | Name=In14.Cu
132 | Type=0
133 | Enabled=0
134 | [pcbnew/Layer.In15.Cu]
135 | Name=In15.Cu
136 | Type=0
137 | Enabled=0
138 | [pcbnew/Layer.In16.Cu]
139 | Name=In16.Cu
140 | Type=0
141 | Enabled=0
142 | [pcbnew/Layer.In17.Cu]
143 | Name=In17.Cu
144 | Type=0
145 | Enabled=0
146 | [pcbnew/Layer.In18.Cu]
147 | Name=In18.Cu
148 | Type=0
149 | Enabled=0
150 | [pcbnew/Layer.In19.Cu]
151 | Name=In19.Cu
152 | Type=0
153 | Enabled=0
154 | [pcbnew/Layer.In20.Cu]
155 | Name=In20.Cu
156 | Type=0
157 | Enabled=0
158 | [pcbnew/Layer.In21.Cu]
159 | Name=In21.Cu
160 | Type=0
161 | Enabled=0
162 | [pcbnew/Layer.In22.Cu]
163 | Name=In22.Cu
164 | Type=0
165 | Enabled=0
166 | [pcbnew/Layer.In23.Cu]
167 | Name=In23.Cu
168 | Type=0
169 | Enabled=0
170 | [pcbnew/Layer.In24.Cu]
171 | Name=In24.Cu
172 | Type=0
173 | Enabled=0
174 | [pcbnew/Layer.In25.Cu]
175 | Name=In25.Cu
176 | Type=0
177 | Enabled=0
178 | [pcbnew/Layer.In26.Cu]
179 | Name=In26.Cu
180 | Type=0
181 | Enabled=0
182 | [pcbnew/Layer.In27.Cu]
183 | Name=In27.Cu
184 | Type=0
185 | Enabled=0
186 | [pcbnew/Layer.In28.Cu]
187 | Name=In28.Cu
188 | Type=0
189 | Enabled=0
190 | [pcbnew/Layer.In29.Cu]
191 | Name=In29.Cu
192 | Type=0
193 | Enabled=0
194 | [pcbnew/Layer.In30.Cu]
195 | Name=In30.Cu
196 | Type=0
197 | Enabled=0
198 | [pcbnew/Layer.B.Cu]
199 | Name=B.Cu
200 | Type=0
201 | Enabled=1
202 | [pcbnew/Layer.B.Adhes]
203 | Enabled=1
204 | [pcbnew/Layer.F.Adhes]
205 | Enabled=1
206 | [pcbnew/Layer.B.Paste]
207 | Enabled=1
208 | [pcbnew/Layer.F.Paste]
209 | Enabled=1
210 | [pcbnew/Layer.B.SilkS]
211 | Enabled=1
212 | [pcbnew/Layer.F.SilkS]
213 | Enabled=1
214 | [pcbnew/Layer.B.Mask]
215 | Enabled=1
216 | [pcbnew/Layer.F.Mask]
217 | Enabled=1
218 | [pcbnew/Layer.Dwgs.User]
219 | Enabled=1
220 | [pcbnew/Layer.Cmts.User]
221 | Enabled=1
222 | [pcbnew/Layer.Eco1.User]
223 | Enabled=1
224 | [pcbnew/Layer.Eco2.User]
225 | Enabled=1
226 | [pcbnew/Layer.Edge.Cuts]
227 | Enabled=1
228 | [pcbnew/Layer.Margin]
229 | Enabled=1
230 | [pcbnew/Layer.B.CrtYd]
231 | Enabled=1
232 | [pcbnew/Layer.F.CrtYd]
233 | Enabled=1
234 | [pcbnew/Layer.B.Fab]
235 | Enabled=1
236 | [pcbnew/Layer.F.Fab]
237 | Enabled=1
238 | [pcbnew/Layer.Rescue]
239 | Enabled=0
240 | [pcbnew/Netclasses]
241 | [pcbnew/Netclasses/Default]
242 | Name=Default
243 | Clearance=0.2
244 | TrackWidth=0.25
245 | ViaDiameter=0.5
246 | ViaDrill=0.25
247 | uViaDiameter=0.3
248 | uViaDrill=0.1
249 | dPairWidth=0.2
250 | dPairGap=0.25
251 | dPairViaGap=0.25
252 |
--------------------------------------------------------------------------------
/Hardware/0.1/Libraries/LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm.kicad_mod:
--------------------------------------------------------------------------------
1 | (module LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm (layer F.Cu) (tedit 5CBED2EC)
2 | (descr https://cdn-shop.adafruit.com/datasheets/WS2812B.pdf)
3 | (tags "LED RGB NeoPixel")
4 | (attr smd)
5 | (fp_text reference REF** (at 0 -3.5) (layer F.SilkS)
6 | (effects (font (size 1 1) (thickness 0.15)))
7 | )
8 | (fp_text value LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm (at 0 4) (layer F.Fab)
9 | (effects (font (size 1 1) (thickness 0.15)))
10 | )
11 | (fp_text user 1 (at -4.15 -1.6) (layer F.SilkS)
12 | (effects (font (size 1 1) (thickness 0.15)))
13 | )
14 | (fp_text user %R (at 0 0) (layer F.Fab)
15 | (effects (font (size 0.8 0.8) (thickness 0.15)))
16 | )
17 | (fp_line (start 3.45 -2.75) (end -3.45 -2.75) (layer F.CrtYd) (width 0.05))
18 | (fp_line (start 3.45 2.75) (end 3.45 -2.75) (layer F.CrtYd) (width 0.05))
19 | (fp_line (start -3.45 2.75) (end 3.45 2.75) (layer F.CrtYd) (width 0.05))
20 | (fp_line (start -3.45 -2.75) (end -3.45 2.75) (layer F.CrtYd) (width 0.05))
21 | (fp_line (start 2.5 1.5) (end 1.5 2.5) (layer F.Fab) (width 0.1))
22 | (fp_line (start -2.5 -2.5) (end -2.5 2.5) (layer F.Fab) (width 0.1))
23 | (fp_line (start -2.5 2.5) (end 2.5 2.5) (layer F.Fab) (width 0.1))
24 | (fp_line (start 2.5 2.5) (end 2.5 -2.5) (layer F.Fab) (width 0.1))
25 | (fp_line (start 2.5 -2.5) (end -2.5 -2.5) (layer F.Fab) (width 0.1))
26 | (fp_line (start -3.65 -2.75) (end 3.65 -2.75) (layer F.SilkS) (width 0.12))
27 | (fp_line (start -3.65 2.75) (end 3.65 2.75) (layer F.SilkS) (width 0.12))
28 | (fp_line (start 3.65 2.75) (end 3.65 1.6) (layer F.SilkS) (width 0.12))
29 | (fp_circle (center 0 0) (end 0 -2) (layer F.Fab) (width 0.1))
30 | (pad 3 smd rect (at 2.45 1.6) (size 1.5 1) (layers F.Cu F.Paste F.Mask))
31 | (pad 4 smd rect (at 2.45 -1.6) (size 1.5 1) (layers F.Cu F.Paste F.Mask))
32 | (pad 2 smd rect (at -2.45 1.6) (size 1.5 1) (layers F.Cu F.Paste F.Mask))
33 | (pad 1 smd rect (at -2.45 -1.6) (size 1.5 1) (layers F.Cu F.Paste F.Mask))
34 | (model ${KIPRJMOD}/Libraries/keyboard.3dshapes/ws2812B.step
35 | (offset (xyz 0 0 0.75))
36 | (scale (xyz 1 1 1))
37 | (rotate (xyz 0 0 -180))
38 | )
39 | )
40 |
--------------------------------------------------------------------------------
/Hardware/0.1/Libraries/keyboard.3dshapes/mxKeycap.STEP:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Hardware/0.1/Libraries/keyboard.3dshapes/mxKeycap.STEP
--------------------------------------------------------------------------------
/Hardware/0.1/Libraries/keyboard.dcm:
--------------------------------------------------------------------------------
1 | EESchema-DOCLIB Version 2.0
2 | #
3 | #End Doc Library
4 |
--------------------------------------------------------------------------------
/Hardware/0.1/Libraries/keyboard.lib:
--------------------------------------------------------------------------------
1 | EESchema-LIBRARY Version 2.4
2 | #encoding utf-8
3 | #
4 | # ATMEGA32U4
5 | #
6 | DEF ATMEGA32U4 U 0 40 Y Y 1 F N
7 | F0 "U" -700 1200 60 H V C CNN
8 | F1 "ATMEGA32U4" -200 1200 60 H V C CNN
9 | F2 "" 0 0 60 H V C CNN
10 | F3 "" 0 0 60 H V C CNN
11 | DRAW
12 | S 350 1150 -750 -1600 0 1 0 f
13 | X PE6 1 650 -900 300 L 50 50 1 1 B
14 | X PB2/MOSI 10 650 850 300 L 50 50 1 1 B
15 | X PB3/MISO 11 650 750 300 L 50 50 1 1 B
16 | X PB7 12 650 350 300 L 50 50 1 1 B
17 | X ~RESET 13 -1050 -50 300 R 50 50 1 1 I
18 | X VCC 14 -1050 1050 300 R 50 50 1 1 W
19 | X GND 15 -1050 -1250 300 R 50 50 1 1 W
20 | X XTAL1 16 -1050 -350 300 R 50 50 1 1 I
21 | X XTAL2 17 -1050 -450 300 R 50 50 1 1 O
22 | X PD0 18 650 -50 300 L 50 50 1 1 B
23 | X PD1 19 650 -150 300 L 50 50 1 1 B
24 | X UVcc 2 -1050 400 300 R 50 50 1 1 W
25 | X PD2 20 650 -250 300 L 50 50 1 1 B
26 | X PD3 21 650 -350 300 L 50 50 1 1 B
27 | X PD5 22 650 -550 300 L 50 50 1 1 B
28 | X GND 23 -1050 -1350 300 R 50 50 1 1 W
29 | X AVCC 24 -1050 750 300 R 50 50 1 1 W
30 | X PD4 25 650 -450 300 L 50 50 1 1 B
31 | X PD6 26 650 -650 300 L 50 50 1 1 B
32 | X PD7 27 650 -750 300 L 50 50 1 1 B
33 | X PB4 28 650 650 300 L 50 50 1 1 B
34 | X PB5 29 650 550 300 L 50 50 1 1 B
35 | X D- 3 -1050 150 300 R 50 50 1 1 B
36 | X PB6 30 650 450 300 L 50 50 1 1 B
37 | X PC6 31 650 200 300 L 50 50 1 1 B
38 | X PC7 32 650 100 300 L 50 50 1 1 B
39 | X PE2/~HWB 33 -1050 -900 300 R 50 50 1 1 B
40 | X VCC 34 -1050 950 300 R 50 50 1 1 W
41 | X GND 35 -1050 -1450 300 R 50 50 1 1 W
42 | X PF7 36 650 -1550 300 L 50 50 1 1 B
43 | X PF6 37 650 -1450 300 L 50 50 1 1 B
44 | X PF5 38 650 -1350 300 L 50 50 1 1 B
45 | X PF4 39 650 -1250 300 L 50 50 1 1 B
46 | X D+ 4 -1050 250 300 R 50 50 1 1 B
47 | X PF1 40 650 -1150 300 L 50 50 1 1 B
48 | X PF0 41 650 -1050 300 L 50 50 1 1 B
49 | X AREF 42 -1050 850 300 R 50 50 1 1 I
50 | X GND 43 -1050 -1550 300 R 50 50 1 1 W
51 | X AVCC 44 -1050 650 300 R 50 50 1 1 W
52 | X UGnd 5 -1050 -1150 300 R 50 50 1 1 W
53 | X UCap 6 -1050 -800 300 R 50 50 1 1 I
54 | X VBus 7 -1050 500 300 R 50 50 1 1 I
55 | X PB0 8 650 1050 300 L 50 50 1 1 B
56 | X PB1/SCK 9 650 950 300 L 50 50 1 1 B
57 | ENDDRAW
58 | ENDDEF
59 | #
60 | # D
61 | #
62 | DEF D D 0 40 Y Y 1 F N
63 | F0 "D" -150 -50 60 V V C CNN
64 | F1 "D" 150 -50 60 V I C CNN
65 | F2 "" 0 0 60 H V C CNN
66 | F3 "" 0 0 60 H V C CNN
67 | DRAW
68 | P 2 0 1 0 -100 0 100 0 N
69 | P 4 0 1 0 0 0 -100 -100 100 -100 0 0 F
70 | X ~ 1 0 50 50 D 60 60 1 1 P
71 | X ~ 2 0 -150 50 U 60 60 1 1 P
72 | ENDDRAW
73 | ENDDEF
74 | #
75 | # KEYSW
76 | #
77 | DEF KEYSW K? 0 40 Y Y 1 F N
78 | F0 "K?" -50 0 60 H V C CNN
79 | F1 "KEYSW" 0 -100 60 H I C CNN
80 | F2 "" 0 0 60 H V C CNN
81 | F3 "" 0 0 60 H V C CNN
82 | DRAW
83 | C -200 0 50 0 1 0 N
84 | C 200 0 50 0 1 0 N
85 | P 2 0 1 10 -200 50 150 150 N
86 | X ~ 1 300 0 50 L 60 60 1 1 P
87 | X ~ 2 -300 0 50 R 60 60 1 1 P
88 | ENDDRAW
89 | ENDDEF
90 | #
91 | # SOLDER_JUMPER
92 | #
93 | DEF SOLDER_JUMPER SJ 0 40 Y Y 1 F N
94 | F0 "SJ" 0 -50 60 H V C CNN
95 | F1 "SOLDER_JUMPER" 50 150 60 H I C CNN
96 | F2 "" 50 0 60 H V C CNN
97 | F3 "" 50 0 60 H V C CNN
98 | DRAW
99 | S -50 100 0 0 0 1 0 F
100 | S 50 100 100 0 0 1 0 F
101 | X ~ 1 -100 50 50 R 50 50 1 1 P
102 | X ~ 2 150 50 50 L 50 50 1 1 P
103 | ENDDRAW
104 | ENDDEF
105 | #
106 | #End Library
107 |
--------------------------------------------------------------------------------
/Hardware/0.1/Libraries/keyboard.pretty/AVR_Programmer_SMD.kicad_mod:
--------------------------------------------------------------------------------
1 | (module AVR_Programmer_SMD (layer F.Cu) (tedit 5CBED92B)
2 | (fp_text reference REF** (at -4.64 0 90) (layer F.SilkS)
3 | (effects (font (size 1 1) (thickness 0.15)))
4 | )
5 | (fp_text value AVR_Programmer_SMD (at 0 0) (layer F.Fab)
6 | (effects (font (size 1 1) (thickness 0.15)))
7 | )
8 | (fp_line (start -2.75 2.37) (end 3.64 2.37) (layer F.SilkS) (width 0.12))
9 | (fp_line (start 3.64 2.37) (end 3.64 -2.37) (layer F.SilkS) (width 0.12))
10 | (fp_line (start 3.64 -2.37) (end -3.64 -2.37) (layer F.SilkS) (width 0.12))
11 | (fp_line (start -3.64 -2.37) (end -3.64 1.5) (layer F.SilkS) (width 0.12))
12 | (fp_line (start -3.39 -2.12) (end 3.39 -2.12) (layer F.CrtYd) (width 0.05))
13 | (fp_line (start 3.39 -2.12) (end 3.39 2.12) (layer F.CrtYd) (width 0.05))
14 | (fp_line (start 3.39 2.12) (end -3.39 2.12) (layer F.CrtYd) (width 0.05))
15 | (fp_line (start -3.39 2.12) (end -3.39 -2.12) (layer F.CrtYd) (width 0.05))
16 | (fp_line (start -3.64 1.5) (end -2.75 2.37) (layer F.SilkS) (width 0.12))
17 | (pad 2 smd circle (at -2.54 -1.27) (size 1.2 1.2) (layers F.Cu F.Mask))
18 | (pad 1 smd circle (at -2.54 1.27) (size 1.2 1.2) (layers F.Cu F.Mask))
19 | (pad 4 smd circle (at 0 -1.27) (size 1.2 1.2) (layers F.Cu F.Mask))
20 | (pad 3 smd circle (at 0 1.27) (size 1.2 1.2) (layers F.Cu F.Mask))
21 | (pad 6 smd circle (at 2.54 -1.27) (size 1.2 1.2) (layers F.Cu F.Mask))
22 | (pad 5 smd circle (at 2.54 1.27) (size 1.2 1.2) (layers F.Cu F.Mask))
23 | )
24 |
--------------------------------------------------------------------------------
/Hardware/0.1/Libraries/keyboard.pretty/Fuse_0805_2012Metric.kicad_mod:
--------------------------------------------------------------------------------
1 | (module Fuse_0805_2012Metric (layer F.Cu) (tedit 5CF079AA)
2 | (descr "Fuse SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator")
3 | (tags resistor)
4 | (attr smd)
5 | (fp_text reference REF** (at 0 -1.65) (layer F.SilkS)
6 | (effects (font (size 1 1) (thickness 0.15)))
7 | )
8 | (fp_text value Fuse_0805_2012Metric (at 0 1.65) (layer F.Fab)
9 | (effects (font (size 1 1) (thickness 0.15)))
10 | )
11 | (fp_line (start -1 0.6) (end -1 -0.6) (layer F.Fab) (width 0.1))
12 | (fp_line (start -1 -0.6) (end 1 -0.6) (layer F.Fab) (width 0.1))
13 | (fp_line (start 1 -0.6) (end 1 0.6) (layer F.Fab) (width 0.1))
14 | (fp_line (start 1 0.6) (end -1 0.6) (layer F.Fab) (width 0.1))
15 | (fp_line (start -0.258578 -0.71) (end 0.258578 -0.71) (layer F.SilkS) (width 0.12))
16 | (fp_line (start -0.258578 0.71) (end 0.258578 0.71) (layer F.SilkS) (width 0.12))
17 | (fp_line (start -1.68 0.95) (end -1.68 -0.95) (layer F.CrtYd) (width 0.05))
18 | (fp_line (start -1.68 -0.95) (end 1.68 -0.95) (layer F.CrtYd) (width 0.05))
19 | (fp_line (start 1.68 -0.95) (end 1.68 0.95) (layer F.CrtYd) (width 0.05))
20 | (fp_line (start 1.68 0.95) (end -1.68 0.95) (layer F.CrtYd) (width 0.05))
21 | (fp_text user %R (at 0 0) (layer F.Fab)
22 | (effects (font (size 0.5 0.5) (thickness 0.08)))
23 | )
24 | (pad 1 smd roundrect (at -0.9375 0) (size 0.975 1.4) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25))
25 | (pad 2 smd roundrect (at 0.9375 0) (size 0.975 1.4) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25))
26 | (model ${KIPRJMOD}/Libraries/keyboard.3dshapes/polyfuse.step
27 | (offset (xyz 0 0 0.4))
28 | (scale (xyz 0.4 0.3 0.3))
29 | (rotate (xyz 90 0 0))
30 | )
31 | )
32 |
--------------------------------------------------------------------------------
/Hardware/0.1/Libraries/keyboard.pretty/LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm.kicad_mod:
--------------------------------------------------------------------------------
1 | (module LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm (layer F.Cu) (tedit 5CBED2EC)
2 | (descr https://cdn-shop.adafruit.com/datasheets/WS2812B.pdf)
3 | (tags "LED RGB NeoPixel")
4 | (attr smd)
5 | (fp_text reference REF** (at 0 -3.5) (layer F.SilkS)
6 | (effects (font (size 1 1) (thickness 0.15)))
7 | )
8 | (fp_text value LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm (at 0 4) (layer F.Fab)
9 | (effects (font (size 1 1) (thickness 0.15)))
10 | )
11 | (fp_text user 1 (at -4.15 -1.6) (layer F.SilkS)
12 | (effects (font (size 1 1) (thickness 0.15)))
13 | )
14 | (fp_text user %R (at 0 0) (layer F.Fab)
15 | (effects (font (size 0.8 0.8) (thickness 0.15)))
16 | )
17 | (fp_line (start 3.45 -2.75) (end -3.45 -2.75) (layer F.CrtYd) (width 0.05))
18 | (fp_line (start 3.45 2.75) (end 3.45 -2.75) (layer F.CrtYd) (width 0.05))
19 | (fp_line (start -3.45 2.75) (end 3.45 2.75) (layer F.CrtYd) (width 0.05))
20 | (fp_line (start -3.45 -2.75) (end -3.45 2.75) (layer F.CrtYd) (width 0.05))
21 | (fp_line (start 2.5 1.5) (end 1.5 2.5) (layer F.Fab) (width 0.1))
22 | (fp_line (start -2.5 -2.5) (end -2.5 2.5) (layer F.Fab) (width 0.1))
23 | (fp_line (start -2.5 2.5) (end 2.5 2.5) (layer F.Fab) (width 0.1))
24 | (fp_line (start 2.5 2.5) (end 2.5 -2.5) (layer F.Fab) (width 0.1))
25 | (fp_line (start 2.5 -2.5) (end -2.5 -2.5) (layer F.Fab) (width 0.1))
26 | (fp_line (start -3.65 -2.75) (end 3.65 -2.75) (layer F.SilkS) (width 0.12))
27 | (fp_line (start -3.65 2.75) (end 3.65 2.75) (layer F.SilkS) (width 0.12))
28 | (fp_line (start 3.65 2.75) (end 3.65 1.6) (layer F.SilkS) (width 0.12))
29 | (fp_circle (center 0 0) (end 0 -2) (layer F.Fab) (width 0.1))
30 | (pad 3 smd rect (at 2.45 1.6) (size 1.5 1) (layers F.Cu F.Paste F.Mask))
31 | (pad 4 smd rect (at 2.45 -1.6) (size 1.5 1) (layers F.Cu F.Paste F.Mask))
32 | (pad 2 smd rect (at -2.45 1.6) (size 1.5 1) (layers F.Cu F.Paste F.Mask))
33 | (pad 1 smd rect (at -2.45 -1.6) (size 1.5 1) (layers F.Cu F.Paste F.Mask))
34 | (model ${KIPRJMOD}/Libraries/keyboard.3dshapes/ws2812B.step
35 | (offset (xyz 0 0 0.75))
36 | (scale (xyz 1 1 1))
37 | (rotate (xyz 0 0 -180))
38 | )
39 | )
40 |
--------------------------------------------------------------------------------
/Hardware/0.1/Libraries/keyboard.pretty/MicroUSB_Aliexpress.kicad_mod:
--------------------------------------------------------------------------------
1 | (module MicroUSB_Aliexpress (layer F.Cu) (tedit 5CF07978)
2 | (fp_text reference J1 (at 6.55 -2.75) (layer F.SilkS)
3 | (effects (font (size 1 1) (thickness 0.15)))
4 | )
5 | (fp_text value USB_B_Micro (at 0 3.45) (layer F.Fab)
6 | (effects (font (size 1 1) (thickness 0.15)))
7 | )
8 | (fp_line (start -5.5 0) (end 5.5 0) (layer F.CrtYd) (width 0.15))
9 | (fp_text user ^ (at 0 0 -180) (layer F.Fab)
10 | (effects (font (size 1 1) (thickness 0.15)))
11 | )
12 | (fp_text user "PCB Edge" (at 0 1.5) (layer F.Fab)
13 | (effects (font (size 1 1) (thickness 0.15)))
14 | )
15 | (fp_line (start 5.5 0) (end 5.5 -5.5) (layer F.CrtYd) (width 0.15))
16 | (fp_line (start -5.5 0) (end -5.5 -5.5) (layer F.CrtYd) (width 0.15))
17 | (fp_line (start -5.5 -5.5) (end 5.5 -5.5) (layer F.CrtYd) (width 0.15))
18 | (pad 6 smd rect (at 1.15 -1.45) (size 1.9 1.9) (layers F.Cu F.Paste F.Mask))
19 | (pad 6 smd rect (at -1.15 -1.45) (size 1.9 1.9) (layers F.Cu F.Paste F.Mask))
20 | (pad 6 smd rect (at -3.95 -1.45) (size 1.9 1.9) (layers F.Cu F.Paste F.Mask))
21 | (pad 6 smd rect (at 3.95 -1.45) (size 1.9 1.9) (layers F.Cu F.Paste F.Mask))
22 | (pad 6 smd rect (at 3.1 -3.7) (size 1.35 1) (layers F.Cu F.Paste F.Mask)
23 | (clearance 0.01))
24 | (pad 6 smd rect (at -3.1 -3.7) (size 1.35 1) (layers F.Cu F.Paste F.Mask)
25 | (clearance 0.01))
26 | (pad 3 smd rect (at 0 -4.125) (size 0.4 1.35) (layers F.Cu F.Paste F.Mask))
27 | (pad "" np_thru_hole circle (at -2 -3.58) (size 0.6 0.6) (drill 0.6) (layers *.Cu *.Mask)
28 | (clearance 0.01))
29 | (pad "" np_thru_hole circle (at 2 -3.58) (size 0.6 0.6) (drill 0.6) (layers *.Mask F.Cu)
30 | (clearance 0.01))
31 | (pad 5 smd rect (at 1.3 -4.125) (size 0.4 1.35) (layers F.Cu F.Paste F.Mask))
32 | (pad 4 smd rect (at 0.65 -4.125) (size 0.4 1.35) (layers F.Cu F.Paste F.Mask))
33 | (pad 1 smd rect (at -1.3 -4.125) (size 0.4 1.35) (layers F.Cu F.Paste F.Mask))
34 | (pad 2 smd rect (at -0.65 -4.125) (size 0.4 1.35) (layers F.Cu F.Paste F.Mask))
35 | (model ${KIPRJMOD}/Libraries/keyboard.3dshapes/MicroUSB_Connector.step
36 | (offset (xyz -3.65 4.2 0))
37 | (scale (xyz 1 1 1))
38 | (rotate (xyz -90 0 -90))
39 | )
40 | )
41 |
--------------------------------------------------------------------------------
/Hardware/0.1/Libraries/keyboard.pretty/PinPad_1x03_P2.54mm.kicad_mod:
--------------------------------------------------------------------------------
1 | (module PinPad_1x03_P2.54mm (layer F.Cu) (tedit 5CBED9C2)
2 | (descr "Through hole straight pin header, 1x03, 2.54mm pitch, single row")
3 | (tags "Through hole pin header THT 1x03 2.54mm single row")
4 | (fp_text reference REF** (at 0 -2.33) (layer F.SilkS)
5 | (effects (font (size 1 1) (thickness 0.15)))
6 | )
7 | (fp_text value PinPad_1x03_P2.54mm (at 0 7.41) (layer F.Fab)
8 | (effects (font (size 1 1) (thickness 0.15)))
9 | )
10 | (fp_line (start -0.635 -1.27) (end 1.27 -1.27) (layer F.Fab) (width 0.1))
11 | (fp_line (start 1.27 -1.27) (end 1.27 6.35) (layer F.Fab) (width 0.1))
12 | (fp_line (start 1.27 6.35) (end -1.27 6.35) (layer F.Fab) (width 0.1))
13 | (fp_line (start -1.27 6.35) (end -1.27 -0.635) (layer F.Fab) (width 0.1))
14 | (fp_line (start -1.27 -0.635) (end -0.635 -1.27) (layer F.Fab) (width 0.1))
15 | (fp_line (start -1.33 6.41) (end 1.33 6.41) (layer F.SilkS) (width 0.12))
16 | (fp_line (start -1.33 -0.66) (end -1.33 6.41) (layer F.SilkS) (width 0.12))
17 | (fp_line (start 1.33 -1.5) (end 1.33 6.41) (layer F.SilkS) (width 0.12))
18 | (fp_line (start -0.5 -1.5) (end 1.33 -1.5) (layer F.SilkS) (width 0.12))
19 | (fp_line (start -1.8 -1.8) (end -1.8 6.85) (layer F.CrtYd) (width 0.05))
20 | (fp_line (start -1.8 6.85) (end 1.8 6.85) (layer F.CrtYd) (width 0.05))
21 | (fp_line (start 1.8 6.85) (end 1.8 -1.8) (layer F.CrtYd) (width 0.05))
22 | (fp_line (start 1.8 -1.8) (end -1.8 -1.8) (layer F.CrtYd) (width 0.05))
23 | (fp_text user %R (at 0 2.54 90) (layer F.Fab)
24 | (effects (font (size 1 1) (thickness 0.15)))
25 | )
26 | (fp_line (start -0.5 -1.5) (end -1.33 -0.66) (layer F.SilkS) (width 0.12))
27 | (pad 1 thru_hole circle (at 0 0) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
28 | (pad 2 thru_hole oval (at 0 2.54) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
29 | (pad 3 thru_hole oval (at 0 5.08) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
30 | )
31 |
--------------------------------------------------------------------------------
/Hardware/0.1/Libraries/keyboard.pretty/RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm_CircularMountingHoles.kicad_mod:
--------------------------------------------------------------------------------
1 | (module RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm_CircularMountingHoles (layer F.Cu) (tedit 5CBF76A3)
2 | (descr "Alps rotary encoder, EC12E... with switch, vertical shaft, mounting holes with circular drills, http://www.alps.com/prod/info/E/HTML/Encoder/Incremental/EC11/EC11E15204A3.html")
3 | (tags "rotary encoder")
4 | (fp_text reference REF** (at -4.7 -7.2) (layer F.SilkS)
5 | (effects (font (size 1 1) (thickness 0.15)))
6 | )
7 | (fp_text value RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm_CircularMountingHoles (at 0 7.9) (layer F.Fab)
8 | (effects (font (size 1 1) (thickness 0.15)))
9 | )
10 | (fp_text user %R (at 3.6 3.8) (layer F.Fab)
11 | (effects (font (size 1 1) (thickness 0.15)))
12 | )
13 | (fp_line (start -0.5 0) (end 0.5 0) (layer F.SilkS) (width 0.12))
14 | (fp_line (start 0 -0.5) (end 0 0.5) (layer F.SilkS) (width 0.12))
15 | (fp_line (start -3 0) (end 3 0) (layer F.Fab) (width 0.12))
16 | (fp_line (start 0 -3) (end 0 3) (layer F.Fab) (width 0.12))
17 | (fp_line (start -6 -4.7) (end -5 -5.8) (layer F.Fab) (width 0.12))
18 | (fp_line (start -6 5.8) (end -6 -4.7) (layer F.Fab) (width 0.12))
19 | (fp_line (start 6 5.8) (end -6 5.8) (layer F.Fab) (width 0.12))
20 | (fp_line (start 6 -5.8) (end 6 5.8) (layer F.Fab) (width 0.12))
21 | (fp_line (start -5 -5.8) (end 6 -5.8) (layer F.Fab) (width 0.12))
22 | (fp_line (start -9 -7.7) (end 8.5 -7.7) (layer F.CrtYd) (width 0.05))
23 | (fp_line (start -9 -7.7) (end -9 7.7) (layer F.CrtYd) (width 0.05))
24 | (fp_line (start 8.5 7.7) (end 8.5 -7.7) (layer F.CrtYd) (width 0.05))
25 | (fp_line (start 8.5 7.7) (end -9 7.7) (layer F.CrtYd) (width 0.05))
26 | (fp_circle (center 0 0) (end 3 0) (layer F.SilkS) (width 0.12))
27 | (fp_circle (center 0 0) (end 3 0) (layer F.Fab) (width 0.12))
28 | (pad S1 thru_hole circle (at 7 2.5) (size 2 2) (drill 1) (layers *.Cu *.Mask))
29 | (pad S2 thru_hole circle (at 7 -2.5) (size 2 2) (drill 1) (layers *.Cu *.Mask))
30 | (pad MP thru_hole circle (at 0 5.6) (size 3.2 3.2) (drill 2.6) (layers *.Cu *.Mask))
31 | (pad MP thru_hole circle (at 0 -5.6) (size 3.2 3.2) (drill 2.6) (layers *.Cu *.Mask))
32 | (pad B thru_hole circle (at -7.5 2.5) (size 2 2) (drill 1) (layers *.Cu *.Mask))
33 | (pad C thru_hole circle (at -7.5 0) (size 2 2) (drill 1) (layers *.Cu *.Mask))
34 | (pad A thru_hole rect (at -7.5 -2.5) (size 2 2) (drill 1) (layers *.Cu *.Mask))
35 | (model ${KIPRJMOD}/Libraries/keyboard.3dshapes/pec11r-4220k_l13-8_w12-4_h26-5.stp
36 | (offset (xyz 0 0 1.5))
37 | (scale (xyz 1 1 1))
38 | (rotate (xyz -90 0 90))
39 | )
40 | )
41 |
--------------------------------------------------------------------------------
/Hardware/0.1/Libraries/keyboard.pretty/SW_Cherry_MX1A_1.00u_PCB.kicad_mod:
--------------------------------------------------------------------------------
1 | (module SW_Cherry_MX1A_1.00u_PCB (layer F.Cu) (tedit 5CBF76F3)
2 | (descr "Cherry MX keyswitch, MX1A, 1.00u, PCB mount, http://cherryamericas.com/wp-content/uploads/2014/12/mx_cat.pdf")
3 | (tags "cherry mx keyswitch MX1A 1.00u PCB")
4 | (fp_text reference REF** (at 0.06 -7.894) (layer F.SilkS)
5 | (effects (font (size 1 1) (thickness 0.15)))
6 | )
7 | (fp_text value SW_Cherry_MX1A_1.00u_PCB (at 0.06 7.854) (layer F.Fab)
8 | (effects (font (size 1 1) (thickness 0.15)))
9 | )
10 | (fp_text user %R (at 0.06 -7.894) (layer F.Fab)
11 | (effects (font (size 1 1) (thickness 0.15)))
12 | )
13 | (fp_line (start -6.29 -6.37) (end 6.41 -6.37) (layer F.Fab) (width 0.15))
14 | (fp_line (start 6.41 -6.37) (end 6.41 6.33) (layer F.Fab) (width 0.15))
15 | (fp_line (start 6.41 6.33) (end -6.29 6.33) (layer F.Fab) (width 0.15))
16 | (fp_line (start -6.29 6.33) (end -6.29 -6.37) (layer F.Fab) (width 0.15))
17 | (fp_line (start -6.54 6.58) (end -6.54 -6.62) (layer F.CrtYd) (width 0.05))
18 | (fp_line (start 6.66 6.58) (end -6.54 6.58) (layer F.CrtYd) (width 0.05))
19 | (fp_line (start 6.66 -6.62) (end 6.66 6.58) (layer F.CrtYd) (width 0.05))
20 | (fp_line (start -6.54 -6.62) (end 6.66 -6.62) (layer F.CrtYd) (width 0.05))
21 | (fp_line (start -9.465 -9.545) (end 9.585 -9.545) (layer Dwgs.User) (width 0.15))
22 | (fp_line (start 9.585 -9.545) (end 9.585 9.505) (layer Dwgs.User) (width 0.15))
23 | (fp_line (start 9.585 9.505) (end -9.465 9.505) (layer Dwgs.User) (width 0.15))
24 | (fp_line (start -9.465 9.505) (end -9.465 -9.545) (layer Dwgs.User) (width 0.15))
25 | (pad 1 thru_hole circle (at 2.6 -5.1) (size 2.2 2.2) (drill 1.5) (layers *.Cu *.Mask))
26 | (pad 2 thru_hole circle (at -3.75 -2.56) (size 2.2 2.2) (drill 1.5) (layers *.Cu *.Mask))
27 | (pad "" np_thru_hole circle (at 0.06 -0.02) (size 4 4) (drill 4) (layers *.Cu *.Mask))
28 | (pad "" np_thru_hole circle (at -5.02 -0.02) (size 1.7 1.7) (drill 1.7) (layers *.Cu *.Mask))
29 | (pad "" np_thru_hole circle (at 5.14 -0.02) (size 1.7 1.7) (drill 1.7) (layers *.Cu *.Mask))
30 | (model ${KIPRJMOD}/Libraries/keyboard.3dshapes/cherrymx.step
31 | (offset (xyz 0.05 0 5.6))
32 | (scale (xyz 1 1 1))
33 | (rotate (xyz -90 0 -180))
34 | )
35 | (model ${KIPRJMOD}/Libraries/keyboard.3dshapes/mxKeycap.STEP
36 | (offset (xyz -9 9 10))
37 | (scale (xyz 1 1 1))
38 | (rotate (xyz -90 0 0))
39 | )
40 | )
41 |
--------------------------------------------------------------------------------
/Hardware/0.1/Libraries/keyboard.pretty/Small_Tact_Switch.kicad_mod:
--------------------------------------------------------------------------------
1 | (module Small_Tact_Switch (layer F.Cu) (tedit 5CBED444)
2 | (fp_text reference REF** (at 0.01 -2.53) (layer F.SilkS)
3 | (effects (font (size 1 1) (thickness 0.15)))
4 | )
5 | (fp_text value Small_Tact_Switch (at 0.08 2.78) (layer F.Fab)
6 | (effects (font (size 1 1) (thickness 0.15)))
7 | )
8 | (fp_line (start 2 -1.5) (end -2 -1.5) (layer F.SilkS) (width 0.15))
9 | (fp_line (start -2 1.5) (end 2 1.5) (layer F.SilkS) (width 0.15))
10 | (fp_line (start -3.5 -2) (end 3 -2) (layer F.CrtYd) (width 0.12))
11 | (fp_line (start 3 -2) (end 3 2) (layer F.CrtYd) (width 0.12))
12 | (fp_line (start 3 2) (end -3.5 2) (layer F.CrtYd) (width 0.12))
13 | (fp_line (start -3.5 2) (end -3.5 -2) (layer F.CrtYd) (width 0.12))
14 | (pad 2 smd rect (at 2.4 0) (size 0.8 1.5) (layers F.Cu F.Paste F.Mask))
15 | (pad 1 smd rect (at -2.4 0) (size 0.8 1.5) (layers F.Cu F.Paste F.Mask))
16 | (model ${KIPRJMOD}/Libraries/keyboard.3dshapes/b3u-1000p.stp
17 | (at (xyz 0 0 0))
18 | (scale (xyz 1.3 1 1))
19 | (rotate (xyz -90 0 0))
20 | )
21 | )
22 |
--------------------------------------------------------------------------------
/Hardware/0.1/fp-lib-table:
--------------------------------------------------------------------------------
1 | (fp_lib_table
2 | (lib (name keyboard)(type KiCad)(uri ${KIPRJMOD}/Libraries/keyboard.pretty)(options "")(descr ""))
3 | )
4 |
--------------------------------------------------------------------------------
/Hardware/0.1/sym-lib-table:
--------------------------------------------------------------------------------
1 | (sym_lib_table
2 | (lib (name keyboard)(type Legacy)(uri ${KIPRJMOD}/Libraries/keyboard.lib)(options "")(descr ""))
3 | (lib (name Hub16-rescue)(type Legacy)(uri ${KIPRJMOD}/Hub16-rescue.lib)(options "")(descr ""))
4 | )
5 |
--------------------------------------------------------------------------------
/Hardware/0.2/Hub16-rescue.dcm:
--------------------------------------------------------------------------------
1 | EESchema-DOCLIB Version 2.0
2 | #
3 | #End Doc Library
4 |
--------------------------------------------------------------------------------
/Hardware/0.2/Hub16-rescue.lib:
--------------------------------------------------------------------------------
1 | EESchema-LIBRARY Version 2.4
2 | #encoding utf-8
3 | #
4 | # AVR-ISP-6-Connector
5 | #
6 | DEF AVR-ISP-6-Connector J 0 40 Y Y 1 F N
7 | F0 "J" 0 400 50 H V L CNN
8 | F1 "AVR-ISP-6-Connector" 0 -300 50 H V L CNN
9 | F2 "" -250 50 50 V I C CNN
10 | F3 "" -1275 -550 50 H I C CNN
11 | $FPLIST
12 | IDC?Header*2x03*
13 | Pin?Header*2x03*
14 | $ENDFPLIST
15 | DRAW
16 | S -105 -220 -95 -250 0 1 0 N
17 | S -105 350 -95 320 0 1 0 N
18 | S 250 -95 220 -105 0 1 0 N
19 | S 250 5 220 -5 0 1 0 N
20 | S 250 105 220 95 0 1 0 N
21 | S 250 205 220 195 0 1 0 N
22 | S 250 350 -250 -250 0 1 10 f
23 | X MISO 1 400 200 150 L 50 50 1 1 P
24 | X VCC 2 -100 500 150 D 50 50 1 1 W
25 | X SCK 3 400 0 150 L 50 50 1 1 P
26 | X MOSI 4 400 100 150 L 50 50 1 1 P
27 | X ~RST 5 400 -100 150 L 50 50 1 1 P
28 | X GND 6 -100 -400 150 U 50 50 1 1 W
29 | ENDDRAW
30 | ENDDEF
31 | #
32 | # Crystal_GND24_Small-Device-Hub16-rescue
33 | #
34 | DEF Crystal_GND24_Small-Device-Hub16-rescue Y 0 40 Y N 1 F N
35 | F0 "Y" 50 175 50 H V L CNN
36 | F1 "Crystal_GND24_Small-Device-Hub16-rescue" 50 100 50 H V L CNN
37 | F2 "" 0 0 50 H I C CNN
38 | F3 "" 0 0 50 H I C CNN
39 | $FPLIST
40 | Crystal*
41 | $ENDFPLIST
42 | DRAW
43 | S -30 -60 30 60 0 1 0 N
44 | P 2 0 1 15 -50 -30 -50 30 N
45 | P 2 0 1 15 50 -30 50 30 N
46 | P 4 0 1 0 -50 -50 -50 -75 50 -75 50 -50 N
47 | P 4 0 1 0 -50 50 -50 75 50 75 50 50 N
48 | X 1 1 -100 0 50 R 50 50 1 1 P
49 | X 2 2 0 -125 50 U 50 50 1 1 P
50 | X 3 3 100 0 50 L 50 50 1 1 P
51 | X 4 4 0 125 50 D 50 50 1 1 P
52 | ENDDRAW
53 | ENDDEF
54 | #
55 | #End Library
56 |
--------------------------------------------------------------------------------
/Hardware/0.2/Hub16.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Hardware/0.2/Hub16.pdf
--------------------------------------------------------------------------------
/Hardware/0.2/Libraries/LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm.kicad_mod:
--------------------------------------------------------------------------------
1 | (module LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm (layer F.Cu) (tedit 5CBED2EC)
2 | (descr https://cdn-shop.adafruit.com/datasheets/WS2812B.pdf)
3 | (tags "LED RGB NeoPixel")
4 | (attr smd)
5 | (fp_text reference REF** (at 0 -3.5) (layer F.SilkS)
6 | (effects (font (size 1 1) (thickness 0.15)))
7 | )
8 | (fp_text value LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm (at 0 4) (layer F.Fab)
9 | (effects (font (size 1 1) (thickness 0.15)))
10 | )
11 | (fp_text user 1 (at -4.15 -1.6) (layer F.SilkS)
12 | (effects (font (size 1 1) (thickness 0.15)))
13 | )
14 | (fp_text user %R (at 0 0) (layer F.Fab)
15 | (effects (font (size 0.8 0.8) (thickness 0.15)))
16 | )
17 | (fp_line (start 3.45 -2.75) (end -3.45 -2.75) (layer F.CrtYd) (width 0.05))
18 | (fp_line (start 3.45 2.75) (end 3.45 -2.75) (layer F.CrtYd) (width 0.05))
19 | (fp_line (start -3.45 2.75) (end 3.45 2.75) (layer F.CrtYd) (width 0.05))
20 | (fp_line (start -3.45 -2.75) (end -3.45 2.75) (layer F.CrtYd) (width 0.05))
21 | (fp_line (start 2.5 1.5) (end 1.5 2.5) (layer F.Fab) (width 0.1))
22 | (fp_line (start -2.5 -2.5) (end -2.5 2.5) (layer F.Fab) (width 0.1))
23 | (fp_line (start -2.5 2.5) (end 2.5 2.5) (layer F.Fab) (width 0.1))
24 | (fp_line (start 2.5 2.5) (end 2.5 -2.5) (layer F.Fab) (width 0.1))
25 | (fp_line (start 2.5 -2.5) (end -2.5 -2.5) (layer F.Fab) (width 0.1))
26 | (fp_line (start -3.65 -2.75) (end 3.65 -2.75) (layer F.SilkS) (width 0.12))
27 | (fp_line (start -3.65 2.75) (end 3.65 2.75) (layer F.SilkS) (width 0.12))
28 | (fp_line (start 3.65 2.75) (end 3.65 1.6) (layer F.SilkS) (width 0.12))
29 | (fp_circle (center 0 0) (end 0 -2) (layer F.Fab) (width 0.1))
30 | (pad 3 smd rect (at 2.45 1.6) (size 1.5 1) (layers F.Cu F.Paste F.Mask))
31 | (pad 4 smd rect (at 2.45 -1.6) (size 1.5 1) (layers F.Cu F.Paste F.Mask))
32 | (pad 2 smd rect (at -2.45 1.6) (size 1.5 1) (layers F.Cu F.Paste F.Mask))
33 | (pad 1 smd rect (at -2.45 -1.6) (size 1.5 1) (layers F.Cu F.Paste F.Mask))
34 | (model ${KIPRJMOD}/Libraries/keyboard.3dshapes/ws2812B.step
35 | (offset (xyz 0 0 0.75))
36 | (scale (xyz 1 1 1))
37 | (rotate (xyz 0 0 -180))
38 | )
39 | )
40 |
--------------------------------------------------------------------------------
/Hardware/0.2/Libraries/keyboard.3dshapes/mxKeycap.STEP:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Hardware/0.2/Libraries/keyboard.3dshapes/mxKeycap.STEP
--------------------------------------------------------------------------------
/Hardware/0.2/Libraries/keyboard.dcm:
--------------------------------------------------------------------------------
1 | EESchema-DOCLIB Version 2.0
2 | #
3 | #End Doc Library
4 |
--------------------------------------------------------------------------------
/Hardware/0.2/Libraries/keyboard.lib:
--------------------------------------------------------------------------------
1 | EESchema-LIBRARY Version 2.4
2 | #encoding utf-8
3 | #
4 | # ATMEGA32U4
5 | #
6 | DEF ATMEGA32U4 U 0 40 Y Y 1 F N
7 | F0 "U" -700 1200 60 H V C CNN
8 | F1 "ATMEGA32U4" -200 1200 60 H V C CNN
9 | F2 "" 0 0 60 H V C CNN
10 | F3 "" 0 0 60 H V C CNN
11 | DRAW
12 | S 350 1150 -750 -1600 0 1 0 f
13 | X PE6 1 650 -900 300 L 50 50 1 1 B
14 | X PB2/MOSI 10 650 850 300 L 50 50 1 1 B
15 | X PB3/MISO 11 650 750 300 L 50 50 1 1 B
16 | X PB7 12 650 350 300 L 50 50 1 1 B
17 | X ~RESET 13 -1050 -50 300 R 50 50 1 1 I
18 | X VCC 14 -1050 1050 300 R 50 50 1 1 W
19 | X GND 15 -1050 -1250 300 R 50 50 1 1 W
20 | X XTAL1 16 -1050 -350 300 R 50 50 1 1 I
21 | X XTAL2 17 -1050 -450 300 R 50 50 1 1 O
22 | X PD0 18 650 -50 300 L 50 50 1 1 B
23 | X PD1 19 650 -150 300 L 50 50 1 1 B
24 | X UVcc 2 -1050 400 300 R 50 50 1 1 W
25 | X PD2 20 650 -250 300 L 50 50 1 1 B
26 | X PD3 21 650 -350 300 L 50 50 1 1 B
27 | X PD5 22 650 -550 300 L 50 50 1 1 B
28 | X GND 23 -1050 -1350 300 R 50 50 1 1 W
29 | X AVCC 24 -1050 750 300 R 50 50 1 1 W
30 | X PD4 25 650 -450 300 L 50 50 1 1 B
31 | X PD6 26 650 -650 300 L 50 50 1 1 B
32 | X PD7 27 650 -750 300 L 50 50 1 1 B
33 | X PB4 28 650 650 300 L 50 50 1 1 B
34 | X PB5 29 650 550 300 L 50 50 1 1 B
35 | X D- 3 -1050 150 300 R 50 50 1 1 B
36 | X PB6 30 650 450 300 L 50 50 1 1 B
37 | X PC6 31 650 200 300 L 50 50 1 1 B
38 | X PC7 32 650 100 300 L 50 50 1 1 B
39 | X PE2/~HWB 33 -1050 -900 300 R 50 50 1 1 B
40 | X VCC 34 -1050 950 300 R 50 50 1 1 W
41 | X GND 35 -1050 -1450 300 R 50 50 1 1 W
42 | X PF7 36 650 -1550 300 L 50 50 1 1 B
43 | X PF6 37 650 -1450 300 L 50 50 1 1 B
44 | X PF5 38 650 -1350 300 L 50 50 1 1 B
45 | X PF4 39 650 -1250 300 L 50 50 1 1 B
46 | X D+ 4 -1050 250 300 R 50 50 1 1 B
47 | X PF1 40 650 -1150 300 L 50 50 1 1 B
48 | X PF0 41 650 -1050 300 L 50 50 1 1 B
49 | X AREF 42 -1050 850 300 R 50 50 1 1 I
50 | X GND 43 -1050 -1550 300 R 50 50 1 1 W
51 | X AVCC 44 -1050 650 300 R 50 50 1 1 W
52 | X UGnd 5 -1050 -1150 300 R 50 50 1 1 W
53 | X UCap 6 -1050 -800 300 R 50 50 1 1 I
54 | X VBus 7 -1050 500 300 R 50 50 1 1 I
55 | X PB0 8 650 1050 300 L 50 50 1 1 B
56 | X PB1/SCK 9 650 950 300 L 50 50 1 1 B
57 | ENDDRAW
58 | ENDDEF
59 | #
60 | # D
61 | #
62 | DEF D D 0 40 Y Y 1 F N
63 | F0 "D" -150 -50 60 V V C CNN
64 | F1 "D" 150 -50 60 V I C CNN
65 | F2 "" 0 0 60 H V C CNN
66 | F3 "" 0 0 60 H V C CNN
67 | DRAW
68 | P 2 0 1 0 -100 0 100 0 N
69 | P 4 0 1 0 0 0 -100 -100 100 -100 0 0 F
70 | X ~ 1 0 50 50 D 60 60 1 1 P
71 | X ~ 2 0 -150 50 U 60 60 1 1 P
72 | ENDDRAW
73 | ENDDEF
74 | #
75 | # KEYSW
76 | #
77 | DEF KEYSW K? 0 40 Y Y 1 F N
78 | F0 "K?" -50 0 60 H V C CNN
79 | F1 "KEYSW" 0 -100 60 H I C CNN
80 | F2 "" 0 0 60 H V C CNN
81 | F3 "" 0 0 60 H V C CNN
82 | DRAW
83 | C -200 0 50 0 1 0 N
84 | C 200 0 50 0 1 0 N
85 | P 2 0 1 10 -200 50 150 150 N
86 | X ~ 1 300 0 50 L 60 60 1 1 P
87 | X ~ 2 -300 0 50 R 60 60 1 1 P
88 | ENDDRAW
89 | ENDDEF
90 | #
91 | # SOLDER_JUMPER
92 | #
93 | DEF SOLDER_JUMPER SJ 0 40 Y Y 1 F N
94 | F0 "SJ" 0 -50 60 H V C CNN
95 | F1 "SOLDER_JUMPER" 50 150 60 H I C CNN
96 | F2 "" 50 0 60 H V C CNN
97 | F3 "" 50 0 60 H V C CNN
98 | DRAW
99 | S -50 100 0 0 0 1 0 F
100 | S 50 100 100 0 0 1 0 F
101 | X ~ 1 -100 50 50 R 50 50 1 1 P
102 | X ~ 2 150 50 50 L 50 50 1 1 P
103 | ENDDRAW
104 | ENDDEF
105 | #
106 | #End Library
107 |
--------------------------------------------------------------------------------
/Hardware/0.2/Libraries/keyboard.pretty/AVR_Programmer_SMD.kicad_mod:
--------------------------------------------------------------------------------
1 | (module AVR_Programmer_SMD (layer F.Cu) (tedit 5CBED92B)
2 | (fp_text reference REF** (at -4.64 0 90) (layer F.SilkS)
3 | (effects (font (size 1 1) (thickness 0.15)))
4 | )
5 | (fp_text value AVR_Programmer_SMD (at 0 0) (layer F.Fab)
6 | (effects (font (size 1 1) (thickness 0.15)))
7 | )
8 | (fp_line (start -2.75 2.37) (end 3.64 2.37) (layer F.SilkS) (width 0.12))
9 | (fp_line (start 3.64 2.37) (end 3.64 -2.37) (layer F.SilkS) (width 0.12))
10 | (fp_line (start 3.64 -2.37) (end -3.64 -2.37) (layer F.SilkS) (width 0.12))
11 | (fp_line (start -3.64 -2.37) (end -3.64 1.5) (layer F.SilkS) (width 0.12))
12 | (fp_line (start -3.39 -2.12) (end 3.39 -2.12) (layer F.CrtYd) (width 0.05))
13 | (fp_line (start 3.39 -2.12) (end 3.39 2.12) (layer F.CrtYd) (width 0.05))
14 | (fp_line (start 3.39 2.12) (end -3.39 2.12) (layer F.CrtYd) (width 0.05))
15 | (fp_line (start -3.39 2.12) (end -3.39 -2.12) (layer F.CrtYd) (width 0.05))
16 | (fp_line (start -3.64 1.5) (end -2.75 2.37) (layer F.SilkS) (width 0.12))
17 | (pad 2 smd circle (at -2.54 -1.27) (size 1.2 1.2) (layers F.Cu F.Mask))
18 | (pad 1 smd circle (at -2.54 1.27) (size 1.2 1.2) (layers F.Cu F.Mask))
19 | (pad 4 smd circle (at 0 -1.27) (size 1.2 1.2) (layers F.Cu F.Mask))
20 | (pad 3 smd circle (at 0 1.27) (size 1.2 1.2) (layers F.Cu F.Mask))
21 | (pad 6 smd circle (at 2.54 -1.27) (size 1.2 1.2) (layers F.Cu F.Mask))
22 | (pad 5 smd circle (at 2.54 1.27) (size 1.2 1.2) (layers F.Cu F.Mask))
23 | )
24 |
--------------------------------------------------------------------------------
/Hardware/0.2/Libraries/keyboard.pretty/Fuse_0805_2012Metric.kicad_mod:
--------------------------------------------------------------------------------
1 | (module Fuse_0805_2012Metric (layer F.Cu) (tedit 5CF079AA)
2 | (descr "Fuse SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator")
3 | (tags resistor)
4 | (attr smd)
5 | (fp_text reference REF** (at 0 -1.65) (layer F.SilkS)
6 | (effects (font (size 1 1) (thickness 0.15)))
7 | )
8 | (fp_text value Fuse_0805_2012Metric (at 0 1.65) (layer F.Fab)
9 | (effects (font (size 1 1) (thickness 0.15)))
10 | )
11 | (fp_line (start -1 0.6) (end -1 -0.6) (layer F.Fab) (width 0.1))
12 | (fp_line (start -1 -0.6) (end 1 -0.6) (layer F.Fab) (width 0.1))
13 | (fp_line (start 1 -0.6) (end 1 0.6) (layer F.Fab) (width 0.1))
14 | (fp_line (start 1 0.6) (end -1 0.6) (layer F.Fab) (width 0.1))
15 | (fp_line (start -0.258578 -0.71) (end 0.258578 -0.71) (layer F.SilkS) (width 0.12))
16 | (fp_line (start -0.258578 0.71) (end 0.258578 0.71) (layer F.SilkS) (width 0.12))
17 | (fp_line (start -1.68 0.95) (end -1.68 -0.95) (layer F.CrtYd) (width 0.05))
18 | (fp_line (start -1.68 -0.95) (end 1.68 -0.95) (layer F.CrtYd) (width 0.05))
19 | (fp_line (start 1.68 -0.95) (end 1.68 0.95) (layer F.CrtYd) (width 0.05))
20 | (fp_line (start 1.68 0.95) (end -1.68 0.95) (layer F.CrtYd) (width 0.05))
21 | (fp_text user %R (at 0 0) (layer F.Fab)
22 | (effects (font (size 0.5 0.5) (thickness 0.08)))
23 | )
24 | (pad 1 smd roundrect (at -0.9375 0) (size 0.975 1.4) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25))
25 | (pad 2 smd roundrect (at 0.9375 0) (size 0.975 1.4) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25))
26 | (model ${KIPRJMOD}/Libraries/keyboard.3dshapes/polyfuse.step
27 | (offset (xyz 0 0 0.4))
28 | (scale (xyz 0.4 0.3 0.3))
29 | (rotate (xyz 90 0 0))
30 | )
31 | )
32 |
--------------------------------------------------------------------------------
/Hardware/0.2/Libraries/keyboard.pretty/LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm.kicad_mod:
--------------------------------------------------------------------------------
1 | (module LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm (layer F.Cu) (tedit 5CBED2EC)
2 | (descr https://cdn-shop.adafruit.com/datasheets/WS2812B.pdf)
3 | (tags "LED RGB NeoPixel")
4 | (attr smd)
5 | (fp_text reference REF** (at 0 -3.5) (layer F.SilkS)
6 | (effects (font (size 1 1) (thickness 0.15)))
7 | )
8 | (fp_text value LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm (at 0 4) (layer F.Fab)
9 | (effects (font (size 1 1) (thickness 0.15)))
10 | )
11 | (fp_text user 1 (at -4.15 -1.6) (layer F.SilkS)
12 | (effects (font (size 1 1) (thickness 0.15)))
13 | )
14 | (fp_text user %R (at 0 0) (layer F.Fab)
15 | (effects (font (size 0.8 0.8) (thickness 0.15)))
16 | )
17 | (fp_line (start 3.45 -2.75) (end -3.45 -2.75) (layer F.CrtYd) (width 0.05))
18 | (fp_line (start 3.45 2.75) (end 3.45 -2.75) (layer F.CrtYd) (width 0.05))
19 | (fp_line (start -3.45 2.75) (end 3.45 2.75) (layer F.CrtYd) (width 0.05))
20 | (fp_line (start -3.45 -2.75) (end -3.45 2.75) (layer F.CrtYd) (width 0.05))
21 | (fp_line (start 2.5 1.5) (end 1.5 2.5) (layer F.Fab) (width 0.1))
22 | (fp_line (start -2.5 -2.5) (end -2.5 2.5) (layer F.Fab) (width 0.1))
23 | (fp_line (start -2.5 2.5) (end 2.5 2.5) (layer F.Fab) (width 0.1))
24 | (fp_line (start 2.5 2.5) (end 2.5 -2.5) (layer F.Fab) (width 0.1))
25 | (fp_line (start 2.5 -2.5) (end -2.5 -2.5) (layer F.Fab) (width 0.1))
26 | (fp_line (start -3.65 -2.75) (end 3.65 -2.75) (layer F.SilkS) (width 0.12))
27 | (fp_line (start -3.65 2.75) (end 3.65 2.75) (layer F.SilkS) (width 0.12))
28 | (fp_line (start 3.65 2.75) (end 3.65 1.6) (layer F.SilkS) (width 0.12))
29 | (fp_circle (center 0 0) (end 0 -2) (layer F.Fab) (width 0.1))
30 | (pad 3 smd rect (at 2.45 1.6) (size 1.5 1) (layers F.Cu F.Paste F.Mask))
31 | (pad 4 smd rect (at 2.45 -1.6) (size 1.5 1) (layers F.Cu F.Paste F.Mask))
32 | (pad 2 smd rect (at -2.45 1.6) (size 1.5 1) (layers F.Cu F.Paste F.Mask))
33 | (pad 1 smd rect (at -2.45 -1.6) (size 1.5 1) (layers F.Cu F.Paste F.Mask))
34 | (model ${KIPRJMOD}/Libraries/keyboard.3dshapes/ws2812B.step
35 | (offset (xyz 0 0 0.75))
36 | (scale (xyz 1 1 1))
37 | (rotate (xyz 0 0 -180))
38 | )
39 | )
40 |
--------------------------------------------------------------------------------
/Hardware/0.2/Libraries/keyboard.pretty/MicroUSB_Aliexpress.kicad_mod:
--------------------------------------------------------------------------------
1 | (module MicroUSB_Aliexpress (layer F.Cu) (tedit 5CF07978)
2 | (fp_text reference J1 (at 6.55 -2.75) (layer F.SilkS)
3 | (effects (font (size 1 1) (thickness 0.15)))
4 | )
5 | (fp_text value USB_B_Micro (at 0 3.45) (layer F.Fab)
6 | (effects (font (size 1 1) (thickness 0.15)))
7 | )
8 | (fp_line (start -5.5 0) (end 5.5 0) (layer F.CrtYd) (width 0.15))
9 | (fp_text user ^ (at 0 0 -180) (layer F.Fab)
10 | (effects (font (size 1 1) (thickness 0.15)))
11 | )
12 | (fp_text user "PCB Edge" (at 0 1.5) (layer F.Fab)
13 | (effects (font (size 1 1) (thickness 0.15)))
14 | )
15 | (fp_line (start 5.5 0) (end 5.5 -5.5) (layer F.CrtYd) (width 0.15))
16 | (fp_line (start -5.5 0) (end -5.5 -5.5) (layer F.CrtYd) (width 0.15))
17 | (fp_line (start -5.5 -5.5) (end 5.5 -5.5) (layer F.CrtYd) (width 0.15))
18 | (pad 6 smd rect (at 1.15 -1.45) (size 1.9 1.9) (layers F.Cu F.Paste F.Mask))
19 | (pad 6 smd rect (at -1.15 -1.45) (size 1.9 1.9) (layers F.Cu F.Paste F.Mask))
20 | (pad 6 smd rect (at -3.95 -1.45) (size 1.9 1.9) (layers F.Cu F.Paste F.Mask))
21 | (pad 6 smd rect (at 3.95 -1.45) (size 1.9 1.9) (layers F.Cu F.Paste F.Mask))
22 | (pad 6 smd rect (at 3.1 -3.7) (size 1.35 1) (layers F.Cu F.Paste F.Mask)
23 | (clearance 0.01))
24 | (pad 6 smd rect (at -3.1 -3.7) (size 1.35 1) (layers F.Cu F.Paste F.Mask)
25 | (clearance 0.01))
26 | (pad 3 smd rect (at 0 -4.125) (size 0.4 1.35) (layers F.Cu F.Paste F.Mask))
27 | (pad "" np_thru_hole circle (at -2 -3.58) (size 0.6 0.6) (drill 0.6) (layers *.Cu *.Mask)
28 | (clearance 0.01))
29 | (pad "" np_thru_hole circle (at 2 -3.58) (size 0.6 0.6) (drill 0.6) (layers *.Mask F.Cu)
30 | (clearance 0.01))
31 | (pad 5 smd rect (at 1.3 -4.125) (size 0.4 1.35) (layers F.Cu F.Paste F.Mask))
32 | (pad 4 smd rect (at 0.65 -4.125) (size 0.4 1.35) (layers F.Cu F.Paste F.Mask))
33 | (pad 1 smd rect (at -1.3 -4.125) (size 0.4 1.35) (layers F.Cu F.Paste F.Mask))
34 | (pad 2 smd rect (at -0.65 -4.125) (size 0.4 1.35) (layers F.Cu F.Paste F.Mask))
35 | (model ${KIPRJMOD}/Libraries/keyboard.3dshapes/MicroUSB_Connector.step
36 | (offset (xyz -3.65 4.2 0))
37 | (scale (xyz 1 1 1))
38 | (rotate (xyz -90 0 -90))
39 | )
40 | )
41 |
--------------------------------------------------------------------------------
/Hardware/0.2/Libraries/keyboard.pretty/PinPad_1x03_P2.54mm.kicad_mod:
--------------------------------------------------------------------------------
1 | (module PinPad_1x03_P2.54mm (layer F.Cu) (tedit 5CBED9C2)
2 | (descr "Through hole straight pin header, 1x03, 2.54mm pitch, single row")
3 | (tags "Through hole pin header THT 1x03 2.54mm single row")
4 | (fp_text reference REF** (at 0 -2.33) (layer F.SilkS)
5 | (effects (font (size 1 1) (thickness 0.15)))
6 | )
7 | (fp_text value PinPad_1x03_P2.54mm (at 0 7.41) (layer F.Fab)
8 | (effects (font (size 1 1) (thickness 0.15)))
9 | )
10 | (fp_line (start -0.635 -1.27) (end 1.27 -1.27) (layer F.Fab) (width 0.1))
11 | (fp_line (start 1.27 -1.27) (end 1.27 6.35) (layer F.Fab) (width 0.1))
12 | (fp_line (start 1.27 6.35) (end -1.27 6.35) (layer F.Fab) (width 0.1))
13 | (fp_line (start -1.27 6.35) (end -1.27 -0.635) (layer F.Fab) (width 0.1))
14 | (fp_line (start -1.27 -0.635) (end -0.635 -1.27) (layer F.Fab) (width 0.1))
15 | (fp_line (start -1.33 6.41) (end 1.33 6.41) (layer F.SilkS) (width 0.12))
16 | (fp_line (start -1.33 -0.66) (end -1.33 6.41) (layer F.SilkS) (width 0.12))
17 | (fp_line (start 1.33 -1.5) (end 1.33 6.41) (layer F.SilkS) (width 0.12))
18 | (fp_line (start -0.5 -1.5) (end 1.33 -1.5) (layer F.SilkS) (width 0.12))
19 | (fp_line (start -1.8 -1.8) (end -1.8 6.85) (layer F.CrtYd) (width 0.05))
20 | (fp_line (start -1.8 6.85) (end 1.8 6.85) (layer F.CrtYd) (width 0.05))
21 | (fp_line (start 1.8 6.85) (end 1.8 -1.8) (layer F.CrtYd) (width 0.05))
22 | (fp_line (start 1.8 -1.8) (end -1.8 -1.8) (layer F.CrtYd) (width 0.05))
23 | (fp_text user %R (at 0 2.54 90) (layer F.Fab)
24 | (effects (font (size 1 1) (thickness 0.15)))
25 | )
26 | (fp_line (start -0.5 -1.5) (end -1.33 -0.66) (layer F.SilkS) (width 0.12))
27 | (pad 1 thru_hole circle (at 0 0) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
28 | (pad 2 thru_hole oval (at 0 2.54) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
29 | (pad 3 thru_hole oval (at 0 5.08) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
30 | )
31 |
--------------------------------------------------------------------------------
/Hardware/0.2/Libraries/keyboard.pretty/RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm_CircularMountingHoles.kicad_mod:
--------------------------------------------------------------------------------
1 | (module RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm_CircularMountingHoles (layer F.Cu) (tedit 5CBF76A3)
2 | (descr "Alps rotary encoder, EC12E... with switch, vertical shaft, mounting holes with circular drills, http://www.alps.com/prod/info/E/HTML/Encoder/Incremental/EC11/EC11E15204A3.html")
3 | (tags "rotary encoder")
4 | (fp_text reference REF** (at -4.7 -7.2) (layer F.SilkS)
5 | (effects (font (size 1 1) (thickness 0.15)))
6 | )
7 | (fp_text value RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm_CircularMountingHoles (at 0 7.9) (layer F.Fab)
8 | (effects (font (size 1 1) (thickness 0.15)))
9 | )
10 | (fp_text user %R (at 3.6 3.8) (layer F.Fab)
11 | (effects (font (size 1 1) (thickness 0.15)))
12 | )
13 | (fp_line (start -0.5 0) (end 0.5 0) (layer F.SilkS) (width 0.12))
14 | (fp_line (start 0 -0.5) (end 0 0.5) (layer F.SilkS) (width 0.12))
15 | (fp_line (start -3 0) (end 3 0) (layer F.Fab) (width 0.12))
16 | (fp_line (start 0 -3) (end 0 3) (layer F.Fab) (width 0.12))
17 | (fp_line (start -6 -4.7) (end -5 -5.8) (layer F.Fab) (width 0.12))
18 | (fp_line (start -6 5.8) (end -6 -4.7) (layer F.Fab) (width 0.12))
19 | (fp_line (start 6 5.8) (end -6 5.8) (layer F.Fab) (width 0.12))
20 | (fp_line (start 6 -5.8) (end 6 5.8) (layer F.Fab) (width 0.12))
21 | (fp_line (start -5 -5.8) (end 6 -5.8) (layer F.Fab) (width 0.12))
22 | (fp_line (start -9 -7.7) (end 8.5 -7.7) (layer F.CrtYd) (width 0.05))
23 | (fp_line (start -9 -7.7) (end -9 7.7) (layer F.CrtYd) (width 0.05))
24 | (fp_line (start 8.5 7.7) (end 8.5 -7.7) (layer F.CrtYd) (width 0.05))
25 | (fp_line (start 8.5 7.7) (end -9 7.7) (layer F.CrtYd) (width 0.05))
26 | (fp_circle (center 0 0) (end 3 0) (layer F.SilkS) (width 0.12))
27 | (fp_circle (center 0 0) (end 3 0) (layer F.Fab) (width 0.12))
28 | (pad S1 thru_hole circle (at 7 2.5) (size 2 2) (drill 1) (layers *.Cu *.Mask))
29 | (pad S2 thru_hole circle (at 7 -2.5) (size 2 2) (drill 1) (layers *.Cu *.Mask))
30 | (pad MP thru_hole circle (at 0 5.6) (size 3.2 3.2) (drill 2.6) (layers *.Cu *.Mask))
31 | (pad MP thru_hole circle (at 0 -5.6) (size 3.2 3.2) (drill 2.6) (layers *.Cu *.Mask))
32 | (pad B thru_hole circle (at -7.5 2.5) (size 2 2) (drill 1) (layers *.Cu *.Mask))
33 | (pad C thru_hole circle (at -7.5 0) (size 2 2) (drill 1) (layers *.Cu *.Mask))
34 | (pad A thru_hole rect (at -7.5 -2.5) (size 2 2) (drill 1) (layers *.Cu *.Mask))
35 | (model ${KIPRJMOD}/Libraries/keyboard.3dshapes/pec11r-4220k_l13-8_w12-4_h26-5.stp
36 | (offset (xyz 0 0 1.5))
37 | (scale (xyz 1 1 1))
38 | (rotate (xyz -90 0 90))
39 | )
40 | )
41 |
--------------------------------------------------------------------------------
/Hardware/0.2/Libraries/keyboard.pretty/SW_Cherry_MX1A_1.00u_PCB.kicad_mod:
--------------------------------------------------------------------------------
1 | (module SW_Cherry_MX1A_1.00u_PCB (layer F.Cu) (tedit 5CBF76F3)
2 | (descr "Cherry MX keyswitch, MX1A, 1.00u, PCB mount, http://cherryamericas.com/wp-content/uploads/2014/12/mx_cat.pdf")
3 | (tags "cherry mx keyswitch MX1A 1.00u PCB")
4 | (fp_text reference REF** (at 0.06 -7.894) (layer F.SilkS)
5 | (effects (font (size 1 1) (thickness 0.15)))
6 | )
7 | (fp_text value SW_Cherry_MX1A_1.00u_PCB (at 0.06 7.854) (layer F.Fab)
8 | (effects (font (size 1 1) (thickness 0.15)))
9 | )
10 | (fp_text user %R (at 0.06 -7.894) (layer F.Fab)
11 | (effects (font (size 1 1) (thickness 0.15)))
12 | )
13 | (fp_line (start -6.29 -6.37) (end 6.41 -6.37) (layer F.Fab) (width 0.15))
14 | (fp_line (start 6.41 -6.37) (end 6.41 6.33) (layer F.Fab) (width 0.15))
15 | (fp_line (start 6.41 6.33) (end -6.29 6.33) (layer F.Fab) (width 0.15))
16 | (fp_line (start -6.29 6.33) (end -6.29 -6.37) (layer F.Fab) (width 0.15))
17 | (fp_line (start -6.54 6.58) (end -6.54 -6.62) (layer F.CrtYd) (width 0.05))
18 | (fp_line (start 6.66 6.58) (end -6.54 6.58) (layer F.CrtYd) (width 0.05))
19 | (fp_line (start 6.66 -6.62) (end 6.66 6.58) (layer F.CrtYd) (width 0.05))
20 | (fp_line (start -6.54 -6.62) (end 6.66 -6.62) (layer F.CrtYd) (width 0.05))
21 | (fp_line (start -9.465 -9.545) (end 9.585 -9.545) (layer Dwgs.User) (width 0.15))
22 | (fp_line (start 9.585 -9.545) (end 9.585 9.505) (layer Dwgs.User) (width 0.15))
23 | (fp_line (start 9.585 9.505) (end -9.465 9.505) (layer Dwgs.User) (width 0.15))
24 | (fp_line (start -9.465 9.505) (end -9.465 -9.545) (layer Dwgs.User) (width 0.15))
25 | (pad 1 thru_hole circle (at 2.6 -5.1) (size 2.2 2.2) (drill 1.5) (layers *.Cu *.Mask))
26 | (pad 2 thru_hole circle (at -3.75 -2.56) (size 2.2 2.2) (drill 1.5) (layers *.Cu *.Mask))
27 | (pad "" np_thru_hole circle (at 0.06 -0.02) (size 4 4) (drill 4) (layers *.Cu *.Mask))
28 | (pad "" np_thru_hole circle (at -5.02 -0.02) (size 1.7 1.7) (drill 1.7) (layers *.Cu *.Mask))
29 | (pad "" np_thru_hole circle (at 5.14 -0.02) (size 1.7 1.7) (drill 1.7) (layers *.Cu *.Mask))
30 | (model ${KIPRJMOD}/Libraries/keyboard.3dshapes/cherrymx.step
31 | (offset (xyz 0.05 0 5.6))
32 | (scale (xyz 1 1 1))
33 | (rotate (xyz -90 0 -180))
34 | )
35 | (model ${KIPRJMOD}/Libraries/keyboard.3dshapes/mxKeycap.STEP
36 | (offset (xyz -9 9 10))
37 | (scale (xyz 1 1 1))
38 | (rotate (xyz -90 0 0))
39 | )
40 | )
41 |
--------------------------------------------------------------------------------
/Hardware/0.2/Libraries/keyboard.pretty/Small_Tact_Switch.kicad_mod:
--------------------------------------------------------------------------------
1 | (module Small_Tact_Switch (layer F.Cu) (tedit 5CBED444)
2 | (fp_text reference REF** (at 0.01 -2.53) (layer F.SilkS)
3 | (effects (font (size 1 1) (thickness 0.15)))
4 | )
5 | (fp_text value Small_Tact_Switch (at 0.08 2.78) (layer F.Fab)
6 | (effects (font (size 1 1) (thickness 0.15)))
7 | )
8 | (fp_line (start 2 -1.5) (end -2 -1.5) (layer F.SilkS) (width 0.15))
9 | (fp_line (start -2 1.5) (end 2 1.5) (layer F.SilkS) (width 0.15))
10 | (fp_line (start -3.5 -2) (end 3 -2) (layer F.CrtYd) (width 0.12))
11 | (fp_line (start 3 -2) (end 3 2) (layer F.CrtYd) (width 0.12))
12 | (fp_line (start 3 2) (end -3.5 2) (layer F.CrtYd) (width 0.12))
13 | (fp_line (start -3.5 2) (end -3.5 -2) (layer F.CrtYd) (width 0.12))
14 | (pad 2 smd rect (at 2.4 0) (size 0.8 1.5) (layers F.Cu F.Paste F.Mask))
15 | (pad 1 smd rect (at -2.4 0) (size 0.8 1.5) (layers F.Cu F.Paste F.Mask))
16 | (model ${KIPRJMOD}/Libraries/keyboard.3dshapes/b3u-1000p.stp
17 | (at (xyz 0 0 0))
18 | (scale (xyz 1.3 1 1))
19 | (rotate (xyz -90 0 0))
20 | )
21 | )
22 |
--------------------------------------------------------------------------------
/Hardware/0.2/fp-lib-table:
--------------------------------------------------------------------------------
1 | (fp_lib_table
2 | (lib (name keyboard)(type KiCad)(uri ${KIPRJMOD}/Libraries/keyboard.pretty)(options "")(descr ""))
3 | (lib (name josh-buttons-switches)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-buttons-switches.pretty)(options "")(descr ""))
4 | (lib (name josh-connectors)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-connectors.pretty)(options "")(descr ""))
5 | (lib (name josh-dfn-qfn)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-dfn-qfn.pretty)(options "")(descr ""))
6 | (lib (name josh-led)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-led.pretty)(options "")(descr ""))
7 | (lib (name josh-logos)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-logos.pretty)(options "")(descr ""))
8 | (lib (name josh-mechanical)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-mechanical.pretty)(options "")(descr ""))
9 | (lib (name josh-oscillators)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-oscillators.pretty)(options "")(descr ""))
10 | (lib (name josh-passives-smt)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-passives-smt.pretty)(options "")(descr ""))
11 | (lib (name josh-rf)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-rf.pretty)(options "")(descr ""))
12 | (lib (name josh-soic-sot-etc)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-soic-sot-etc.pretty)(options "")(descr ""))
13 | (lib (name josh-test-point)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-test-point.pretty)(options "")(descr ""))
14 | )
15 |
--------------------------------------------------------------------------------
/Hardware/0.2/sym-lib-table:
--------------------------------------------------------------------------------
1 | (sym_lib_table
2 | (lib (name keyboard)(type Legacy)(uri ${KIPRJMOD}/Libraries/keyboard.lib)(options "")(descr ""))
3 | (lib (name Hub16-rescue)(type Legacy)(uri ${KIPRJMOD}/Hub16-rescue.lib)(options "")(descr ""))
4 | (lib (name josh-ic)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-ic.lib)(options "")(descr ""))
5 | (lib (name josh-led)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-led.lib)(options "")(descr ""))
6 | (lib (name josh-logic)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-logic.lib)(options "")(descr ""))
7 | (lib (name josh-mechnanical)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-mechnanical.lib)(options "")(descr ""))
8 | (lib (name josh-memory)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-memory.lib)(options "")(descr ""))
9 | (lib (name josh-oscillator)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-oscillator.lib)(options "")(descr ""))
10 | (lib (name josh-passive)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-passive.lib)(options "")(descr ""))
11 | (lib (name josh-power)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-power.lib)(options "")(descr ""))
12 | (lib (name josh-rf)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-rf.lib)(options "")(descr ""))
13 | (lib (name josh-connector)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-connector.lib)(options "")(descr ""))
14 | )
15 |
--------------------------------------------------------------------------------
/Hardware/0.3/Hub16-rescue.dcm:
--------------------------------------------------------------------------------
1 | EESchema-DOCLIB Version 2.0
2 | #
3 | #End Doc Library
4 |
--------------------------------------------------------------------------------
/Hardware/0.3/Hub16-rescue.lib:
--------------------------------------------------------------------------------
1 | EESchema-LIBRARY Version 2.4
2 | #encoding utf-8
3 | #
4 | # AVR-ISP-6-Connector
5 | #
6 | DEF AVR-ISP-6-Connector J 0 40 Y Y 1 F N
7 | F0 "J" 0 400 50 H V L CNN
8 | F1 "AVR-ISP-6-Connector" 0 -300 50 H V L CNN
9 | F2 "" -250 50 50 V I C CNN
10 | F3 "" -1275 -550 50 H I C CNN
11 | $FPLIST
12 | IDC?Header*2x03*
13 | Pin?Header*2x03*
14 | $ENDFPLIST
15 | DRAW
16 | S -105 -220 -95 -250 0 1 0 N
17 | S -105 350 -95 320 0 1 0 N
18 | S 250 -95 220 -105 0 1 0 N
19 | S 250 5 220 -5 0 1 0 N
20 | S 250 105 220 95 0 1 0 N
21 | S 250 205 220 195 0 1 0 N
22 | S 250 350 -250 -250 0 1 10 f
23 | X MISO 1 400 200 150 L 50 50 1 1 P
24 | X VCC 2 -100 500 150 D 50 50 1 1 W
25 | X SCK 3 400 0 150 L 50 50 1 1 P
26 | X MOSI 4 400 100 150 L 50 50 1 1 P
27 | X ~RST 5 400 -100 150 L 50 50 1 1 P
28 | X GND 6 -100 -400 150 U 50 50 1 1 W
29 | ENDDRAW
30 | ENDDEF
31 | #
32 | # Crystal_GND24_Small-Device-Hub16-rescue
33 | #
34 | DEF Crystal_GND24_Small-Device-Hub16-rescue Y 0 40 Y N 1 F N
35 | F0 "Y" 50 175 50 H V L CNN
36 | F1 "Crystal_GND24_Small-Device-Hub16-rescue" 50 100 50 H V L CNN
37 | F2 "" 0 0 50 H I C CNN
38 | F3 "" 0 0 50 H I C CNN
39 | $FPLIST
40 | Crystal*
41 | $ENDFPLIST
42 | DRAW
43 | S -30 -60 30 60 0 1 0 N
44 | P 2 0 1 15 -50 -30 -50 30 N
45 | P 2 0 1 15 50 -30 50 30 N
46 | P 4 0 1 0 -50 -50 -50 -75 50 -75 50 -50 N
47 | P 4 0 1 0 -50 50 -50 75 50 75 50 50 N
48 | X 1 1 -100 0 50 R 50 50 1 1 P
49 | X 2 2 0 -125 50 U 50 50 1 1 P
50 | X 3 3 100 0 50 L 50 50 1 1 P
51 | X 4 4 0 125 50 D 50 50 1 1 P
52 | ENDDRAW
53 | ENDDEF
54 | #
55 | # RN-josh-passive
56 | #
57 | DEF RN-josh-passive RN 0 0 N Y 4 F N
58 | F0 "RN" 0 70 50 H V C CNN
59 | F1 "RN-josh-passive" 0 0 50 H V C CNN
60 | F2 "" 0 0 50 V I C CNN
61 | F3 "" 0 0 50 V I C CNN
62 | DRAW
63 | S -100 -40 100 40 0 1 0 N
64 | X ~ 4 -200 0 100 R 50 50 1 1 P
65 | X ~ 5 200 0 100 L 50 50 1 1 P
66 | X ~ 3 -200 0 100 R 50 50 2 1 P
67 | X ~ 6 200 0 100 L 50 50 2 1 P
68 | X ~ 2 -200 0 100 R 50 50 3 1 P
69 | X ~ 7 200 0 100 L 50 50 3 1 P
70 | X ~ 1 -200 0 100 R 50 50 4 1 P
71 | X ~ 8 200 0 100 L 50 50 4 1 P
72 | ENDDRAW
73 | ENDDEF
74 | #
75 | #End Library
76 |
--------------------------------------------------------------------------------
/Hardware/0.3/Hub16.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Hardware/0.3/Hub16.pdf
--------------------------------------------------------------------------------
/Hardware/0.3/Libraries/LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm.kicad_mod:
--------------------------------------------------------------------------------
1 | (module LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm (layer F.Cu) (tedit 5CBED2EC)
2 | (descr https://cdn-shop.adafruit.com/datasheets/WS2812B.pdf)
3 | (tags "LED RGB NeoPixel")
4 | (attr smd)
5 | (fp_text reference REF** (at 0 -3.5) (layer F.SilkS)
6 | (effects (font (size 1 1) (thickness 0.15)))
7 | )
8 | (fp_text value LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm (at 0 4) (layer F.Fab)
9 | (effects (font (size 1 1) (thickness 0.15)))
10 | )
11 | (fp_text user 1 (at -4.15 -1.6) (layer F.SilkS)
12 | (effects (font (size 1 1) (thickness 0.15)))
13 | )
14 | (fp_text user %R (at 0 0) (layer F.Fab)
15 | (effects (font (size 0.8 0.8) (thickness 0.15)))
16 | )
17 | (fp_line (start 3.45 -2.75) (end -3.45 -2.75) (layer F.CrtYd) (width 0.05))
18 | (fp_line (start 3.45 2.75) (end 3.45 -2.75) (layer F.CrtYd) (width 0.05))
19 | (fp_line (start -3.45 2.75) (end 3.45 2.75) (layer F.CrtYd) (width 0.05))
20 | (fp_line (start -3.45 -2.75) (end -3.45 2.75) (layer F.CrtYd) (width 0.05))
21 | (fp_line (start 2.5 1.5) (end 1.5 2.5) (layer F.Fab) (width 0.1))
22 | (fp_line (start -2.5 -2.5) (end -2.5 2.5) (layer F.Fab) (width 0.1))
23 | (fp_line (start -2.5 2.5) (end 2.5 2.5) (layer F.Fab) (width 0.1))
24 | (fp_line (start 2.5 2.5) (end 2.5 -2.5) (layer F.Fab) (width 0.1))
25 | (fp_line (start 2.5 -2.5) (end -2.5 -2.5) (layer F.Fab) (width 0.1))
26 | (fp_line (start -3.65 -2.75) (end 3.65 -2.75) (layer F.SilkS) (width 0.12))
27 | (fp_line (start -3.65 2.75) (end 3.65 2.75) (layer F.SilkS) (width 0.12))
28 | (fp_line (start 3.65 2.75) (end 3.65 1.6) (layer F.SilkS) (width 0.12))
29 | (fp_circle (center 0 0) (end 0 -2) (layer F.Fab) (width 0.1))
30 | (pad 3 smd rect (at 2.45 1.6) (size 1.5 1) (layers F.Cu F.Paste F.Mask))
31 | (pad 4 smd rect (at 2.45 -1.6) (size 1.5 1) (layers F.Cu F.Paste F.Mask))
32 | (pad 2 smd rect (at -2.45 1.6) (size 1.5 1) (layers F.Cu F.Paste F.Mask))
33 | (pad 1 smd rect (at -2.45 -1.6) (size 1.5 1) (layers F.Cu F.Paste F.Mask))
34 | (model ${KIPRJMOD}/Libraries/keyboard.3dshapes/ws2812B.step
35 | (offset (xyz 0 0 0.75))
36 | (scale (xyz 1 1 1))
37 | (rotate (xyz 0 0 -180))
38 | )
39 | )
40 |
--------------------------------------------------------------------------------
/Hardware/0.3/Libraries/keyboard.3dshapes/mxKeycap.STEP:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Hardware/0.3/Libraries/keyboard.3dshapes/mxKeycap.STEP
--------------------------------------------------------------------------------
/Hardware/0.3/Libraries/keyboard.dcm:
--------------------------------------------------------------------------------
1 | EESchema-DOCLIB Version 2.0
2 | #
3 | #End Doc Library
4 |
--------------------------------------------------------------------------------
/Hardware/0.3/Libraries/keyboard.lib:
--------------------------------------------------------------------------------
1 | EESchema-LIBRARY Version 2.4
2 | #encoding utf-8
3 | #
4 | # ATMEGA32U4
5 | #
6 | DEF ATMEGA32U4 U 0 40 Y Y 1 F N
7 | F0 "U" -700 1200 60 H V C CNN
8 | F1 "ATMEGA32U4" -200 1200 60 H V C CNN
9 | F2 "" 0 0 60 H V C CNN
10 | F3 "" 0 0 60 H V C CNN
11 | DRAW
12 | S 350 1150 -750 -1600 0 1 0 f
13 | X PE6 1 650 -900 300 L 50 50 1 1 B
14 | X PB2/MOSI 10 650 850 300 L 50 50 1 1 B
15 | X PB3/MISO 11 650 750 300 L 50 50 1 1 B
16 | X PB7 12 650 350 300 L 50 50 1 1 B
17 | X ~RESET 13 -1050 -50 300 R 50 50 1 1 I
18 | X VCC 14 -1050 1050 300 R 50 50 1 1 W
19 | X GND 15 -1050 -1250 300 R 50 50 1 1 W
20 | X XTAL1 16 -1050 -350 300 R 50 50 1 1 I
21 | X XTAL2 17 -1050 -450 300 R 50 50 1 1 O
22 | X PD0 18 650 -50 300 L 50 50 1 1 B
23 | X PD1 19 650 -150 300 L 50 50 1 1 B
24 | X UVcc 2 -1050 400 300 R 50 50 1 1 W
25 | X PD2 20 650 -250 300 L 50 50 1 1 B
26 | X PD3 21 650 -350 300 L 50 50 1 1 B
27 | X PD5 22 650 -550 300 L 50 50 1 1 B
28 | X GND 23 -1050 -1350 300 R 50 50 1 1 W
29 | X AVCC 24 -1050 750 300 R 50 50 1 1 W
30 | X PD4 25 650 -450 300 L 50 50 1 1 B
31 | X PD6 26 650 -650 300 L 50 50 1 1 B
32 | X PD7 27 650 -750 300 L 50 50 1 1 B
33 | X PB4 28 650 650 300 L 50 50 1 1 B
34 | X PB5 29 650 550 300 L 50 50 1 1 B
35 | X D- 3 -1050 150 300 R 50 50 1 1 B
36 | X PB6 30 650 450 300 L 50 50 1 1 B
37 | X PC6 31 650 200 300 L 50 50 1 1 B
38 | X PC7 32 650 100 300 L 50 50 1 1 B
39 | X PE2/~HWB 33 -1050 -900 300 R 50 50 1 1 B
40 | X VCC 34 -1050 950 300 R 50 50 1 1 W
41 | X GND 35 -1050 -1450 300 R 50 50 1 1 W
42 | X PF7 36 650 -1550 300 L 50 50 1 1 B
43 | X PF6 37 650 -1450 300 L 50 50 1 1 B
44 | X PF5 38 650 -1350 300 L 50 50 1 1 B
45 | X PF4 39 650 -1250 300 L 50 50 1 1 B
46 | X D+ 4 -1050 250 300 R 50 50 1 1 B
47 | X PF1 40 650 -1150 300 L 50 50 1 1 B
48 | X PF0 41 650 -1050 300 L 50 50 1 1 B
49 | X AREF 42 -1050 850 300 R 50 50 1 1 I
50 | X GND 43 -1050 -1550 300 R 50 50 1 1 W
51 | X AVCC 44 -1050 650 300 R 50 50 1 1 W
52 | X UGnd 5 -1050 -1150 300 R 50 50 1 1 W
53 | X UCap 6 -1050 -800 300 R 50 50 1 1 I
54 | X VBus 7 -1050 500 300 R 50 50 1 1 I
55 | X PB0 8 650 1050 300 L 50 50 1 1 B
56 | X PB1/SCK 9 650 950 300 L 50 50 1 1 B
57 | ENDDRAW
58 | ENDDEF
59 | #
60 | # D
61 | #
62 | DEF D D 0 40 Y Y 1 F N
63 | F0 "D" -150 -50 60 V V C CNN
64 | F1 "D" 150 -50 60 V I C CNN
65 | F2 "" 0 0 60 H V C CNN
66 | F3 "" 0 0 60 H V C CNN
67 | DRAW
68 | P 2 0 1 0 -100 0 100 0 N
69 | P 4 0 1 0 0 0 -100 -100 100 -100 0 0 F
70 | X ~ 1 0 50 50 D 60 60 1 1 P
71 | X ~ 2 0 -150 50 U 60 60 1 1 P
72 | ENDDRAW
73 | ENDDEF
74 | #
75 | # KEYSW
76 | #
77 | DEF KEYSW K? 0 40 Y Y 1 F N
78 | F0 "K?" -50 0 60 H V C CNN
79 | F1 "KEYSW" 0 -100 60 H I C CNN
80 | F2 "" 0 0 60 H V C CNN
81 | F3 "" 0 0 60 H V C CNN
82 | DRAW
83 | C -200 0 50 0 1 0 N
84 | C 200 0 50 0 1 0 N
85 | P 2 0 1 10 -200 50 150 150 N
86 | X ~ 1 300 0 50 L 60 60 1 1 P
87 | X ~ 2 -300 0 50 R 60 60 1 1 P
88 | ENDDRAW
89 | ENDDEF
90 | #
91 | # SOLDER_JUMPER
92 | #
93 | DEF SOLDER_JUMPER SJ 0 40 Y Y 1 F N
94 | F0 "SJ" 0 -50 60 H V C CNN
95 | F1 "SOLDER_JUMPER" 50 150 60 H I C CNN
96 | F2 "" 50 0 60 H V C CNN
97 | F3 "" 50 0 60 H V C CNN
98 | DRAW
99 | S -50 100 0 0 0 1 0 F
100 | S 50 100 100 0 0 1 0 F
101 | X ~ 1 -100 50 50 R 50 50 1 1 P
102 | X ~ 2 150 50 50 L 50 50 1 1 P
103 | ENDDRAW
104 | ENDDEF
105 | #
106 | #End Library
107 |
--------------------------------------------------------------------------------
/Hardware/0.3/Libraries/keyboard.pretty/AVR_Programmer_SMD.kicad_mod:
--------------------------------------------------------------------------------
1 | (module AVR_Programmer_SMD (layer F.Cu) (tedit 5CBED92B)
2 | (fp_text reference REF** (at -4.64 0 90) (layer F.SilkS)
3 | (effects (font (size 1 1) (thickness 0.15)))
4 | )
5 | (fp_text value AVR_Programmer_SMD (at 0 0) (layer F.Fab)
6 | (effects (font (size 1 1) (thickness 0.15)))
7 | )
8 | (fp_line (start -2.75 2.37) (end 3.64 2.37) (layer F.SilkS) (width 0.12))
9 | (fp_line (start 3.64 2.37) (end 3.64 -2.37) (layer F.SilkS) (width 0.12))
10 | (fp_line (start 3.64 -2.37) (end -3.64 -2.37) (layer F.SilkS) (width 0.12))
11 | (fp_line (start -3.64 -2.37) (end -3.64 1.5) (layer F.SilkS) (width 0.12))
12 | (fp_line (start -3.39 -2.12) (end 3.39 -2.12) (layer F.CrtYd) (width 0.05))
13 | (fp_line (start 3.39 -2.12) (end 3.39 2.12) (layer F.CrtYd) (width 0.05))
14 | (fp_line (start 3.39 2.12) (end -3.39 2.12) (layer F.CrtYd) (width 0.05))
15 | (fp_line (start -3.39 2.12) (end -3.39 -2.12) (layer F.CrtYd) (width 0.05))
16 | (fp_line (start -3.64 1.5) (end -2.75 2.37) (layer F.SilkS) (width 0.12))
17 | (pad 2 smd circle (at -2.54 -1.27) (size 1.2 1.2) (layers F.Cu F.Mask))
18 | (pad 1 smd circle (at -2.54 1.27) (size 1.2 1.2) (layers F.Cu F.Mask))
19 | (pad 4 smd circle (at 0 -1.27) (size 1.2 1.2) (layers F.Cu F.Mask))
20 | (pad 3 smd circle (at 0 1.27) (size 1.2 1.2) (layers F.Cu F.Mask))
21 | (pad 6 smd circle (at 2.54 -1.27) (size 1.2 1.2) (layers F.Cu F.Mask))
22 | (pad 5 smd circle (at 2.54 1.27) (size 1.2 1.2) (layers F.Cu F.Mask))
23 | )
24 |
--------------------------------------------------------------------------------
/Hardware/0.3/Libraries/keyboard.pretty/Fuse_0805_2012Metric.kicad_mod:
--------------------------------------------------------------------------------
1 | (module Fuse_0805_2012Metric (layer F.Cu) (tedit 5CF079AA)
2 | (descr "Fuse SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator")
3 | (tags resistor)
4 | (attr smd)
5 | (fp_text reference REF** (at 0 -1.65) (layer F.SilkS)
6 | (effects (font (size 1 1) (thickness 0.15)))
7 | )
8 | (fp_text value Fuse_0805_2012Metric (at 0 1.65) (layer F.Fab)
9 | (effects (font (size 1 1) (thickness 0.15)))
10 | )
11 | (fp_line (start -1 0.6) (end -1 -0.6) (layer F.Fab) (width 0.1))
12 | (fp_line (start -1 -0.6) (end 1 -0.6) (layer F.Fab) (width 0.1))
13 | (fp_line (start 1 -0.6) (end 1 0.6) (layer F.Fab) (width 0.1))
14 | (fp_line (start 1 0.6) (end -1 0.6) (layer F.Fab) (width 0.1))
15 | (fp_line (start -0.258578 -0.71) (end 0.258578 -0.71) (layer F.SilkS) (width 0.12))
16 | (fp_line (start -0.258578 0.71) (end 0.258578 0.71) (layer F.SilkS) (width 0.12))
17 | (fp_line (start -1.68 0.95) (end -1.68 -0.95) (layer F.CrtYd) (width 0.05))
18 | (fp_line (start -1.68 -0.95) (end 1.68 -0.95) (layer F.CrtYd) (width 0.05))
19 | (fp_line (start 1.68 -0.95) (end 1.68 0.95) (layer F.CrtYd) (width 0.05))
20 | (fp_line (start 1.68 0.95) (end -1.68 0.95) (layer F.CrtYd) (width 0.05))
21 | (fp_text user %R (at 0 0) (layer F.Fab)
22 | (effects (font (size 0.5 0.5) (thickness 0.08)))
23 | )
24 | (pad 1 smd roundrect (at -0.9375 0) (size 0.975 1.4) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25))
25 | (pad 2 smd roundrect (at 0.9375 0) (size 0.975 1.4) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25))
26 | (model ${KIPRJMOD}/Libraries/keyboard.3dshapes/polyfuse.step
27 | (offset (xyz 0 0 0.4))
28 | (scale (xyz 0.4 0.3 0.3))
29 | (rotate (xyz 90 0 0))
30 | )
31 | )
32 |
--------------------------------------------------------------------------------
/Hardware/0.3/Libraries/keyboard.pretty/LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm.kicad_mod:
--------------------------------------------------------------------------------
1 | (module LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm (layer F.Cu) (tedit 5CBED2EC)
2 | (descr https://cdn-shop.adafruit.com/datasheets/WS2812B.pdf)
3 | (tags "LED RGB NeoPixel")
4 | (attr smd)
5 | (fp_text reference REF** (at 0 -3.5) (layer F.SilkS)
6 | (effects (font (size 1 1) (thickness 0.15)))
7 | )
8 | (fp_text value LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm (at 0 4) (layer F.Fab)
9 | (effects (font (size 1 1) (thickness 0.15)))
10 | )
11 | (fp_text user 1 (at -4.15 -1.6) (layer F.SilkS)
12 | (effects (font (size 1 1) (thickness 0.15)))
13 | )
14 | (fp_text user %R (at 0 0) (layer F.Fab)
15 | (effects (font (size 0.8 0.8) (thickness 0.15)))
16 | )
17 | (fp_line (start 3.45 -2.75) (end -3.45 -2.75) (layer F.CrtYd) (width 0.05))
18 | (fp_line (start 3.45 2.75) (end 3.45 -2.75) (layer F.CrtYd) (width 0.05))
19 | (fp_line (start -3.45 2.75) (end 3.45 2.75) (layer F.CrtYd) (width 0.05))
20 | (fp_line (start -3.45 -2.75) (end -3.45 2.75) (layer F.CrtYd) (width 0.05))
21 | (fp_line (start 2.5 1.5) (end 1.5 2.5) (layer F.Fab) (width 0.1))
22 | (fp_line (start -2.5 -2.5) (end -2.5 2.5) (layer F.Fab) (width 0.1))
23 | (fp_line (start -2.5 2.5) (end 2.5 2.5) (layer F.Fab) (width 0.1))
24 | (fp_line (start 2.5 2.5) (end 2.5 -2.5) (layer F.Fab) (width 0.1))
25 | (fp_line (start 2.5 -2.5) (end -2.5 -2.5) (layer F.Fab) (width 0.1))
26 | (fp_line (start -3.65 -2.75) (end 3.65 -2.75) (layer F.SilkS) (width 0.12))
27 | (fp_line (start -3.65 2.75) (end 3.65 2.75) (layer F.SilkS) (width 0.12))
28 | (fp_line (start 3.65 2.75) (end 3.65 1.6) (layer F.SilkS) (width 0.12))
29 | (fp_circle (center 0 0) (end 0 -2) (layer F.Fab) (width 0.1))
30 | (pad 3 smd rect (at 2.45 1.6) (size 1.5 1) (layers F.Cu F.Paste F.Mask))
31 | (pad 4 smd rect (at 2.45 -1.6) (size 1.5 1) (layers F.Cu F.Paste F.Mask))
32 | (pad 2 smd rect (at -2.45 1.6) (size 1.5 1) (layers F.Cu F.Paste F.Mask))
33 | (pad 1 smd rect (at -2.45 -1.6) (size 1.5 1) (layers F.Cu F.Paste F.Mask))
34 | (model ${KIPRJMOD}/Libraries/keyboard.3dshapes/ws2812B.step
35 | (offset (xyz 0 0 0.75))
36 | (scale (xyz 1 1 1))
37 | (rotate (xyz 0 0 -180))
38 | )
39 | )
40 |
--------------------------------------------------------------------------------
/Hardware/0.3/Libraries/keyboard.pretty/MicroUSB_Aliexpress.kicad_mod:
--------------------------------------------------------------------------------
1 | (module MicroUSB_Aliexpress (layer F.Cu) (tedit 5CF07978)
2 | (fp_text reference J1 (at 6.55 -2.75) (layer F.SilkS)
3 | (effects (font (size 1 1) (thickness 0.15)))
4 | )
5 | (fp_text value USB_B_Micro (at 0 3.45) (layer F.Fab)
6 | (effects (font (size 1 1) (thickness 0.15)))
7 | )
8 | (fp_line (start -5.5 0) (end 5.5 0) (layer F.CrtYd) (width 0.15))
9 | (fp_text user ^ (at 0 0 -180) (layer F.Fab)
10 | (effects (font (size 1 1) (thickness 0.15)))
11 | )
12 | (fp_text user "PCB Edge" (at 0 1.5) (layer F.Fab)
13 | (effects (font (size 1 1) (thickness 0.15)))
14 | )
15 | (fp_line (start 5.5 0) (end 5.5 -5.5) (layer F.CrtYd) (width 0.15))
16 | (fp_line (start -5.5 0) (end -5.5 -5.5) (layer F.CrtYd) (width 0.15))
17 | (fp_line (start -5.5 -5.5) (end 5.5 -5.5) (layer F.CrtYd) (width 0.15))
18 | (pad 6 smd rect (at 1.15 -1.45) (size 1.9 1.9) (layers F.Cu F.Paste F.Mask))
19 | (pad 6 smd rect (at -1.15 -1.45) (size 1.9 1.9) (layers F.Cu F.Paste F.Mask))
20 | (pad 6 smd rect (at -3.95 -1.45) (size 1.9 1.9) (layers F.Cu F.Paste F.Mask))
21 | (pad 6 smd rect (at 3.95 -1.45) (size 1.9 1.9) (layers F.Cu F.Paste F.Mask))
22 | (pad 6 smd rect (at 3.1 -3.7) (size 1.35 1) (layers F.Cu F.Paste F.Mask)
23 | (clearance 0.01))
24 | (pad 6 smd rect (at -3.1 -3.7) (size 1.35 1) (layers F.Cu F.Paste F.Mask)
25 | (clearance 0.01))
26 | (pad 3 smd rect (at 0 -4.125) (size 0.4 1.35) (layers F.Cu F.Paste F.Mask))
27 | (pad "" np_thru_hole circle (at -2 -3.58) (size 0.6 0.6) (drill 0.6) (layers *.Cu *.Mask)
28 | (clearance 0.01))
29 | (pad "" np_thru_hole circle (at 2 -3.58) (size 0.6 0.6) (drill 0.6) (layers *.Mask F.Cu)
30 | (clearance 0.01))
31 | (pad 5 smd rect (at 1.3 -4.125) (size 0.4 1.35) (layers F.Cu F.Paste F.Mask))
32 | (pad 4 smd rect (at 0.65 -4.125) (size 0.4 1.35) (layers F.Cu F.Paste F.Mask))
33 | (pad 1 smd rect (at -1.3 -4.125) (size 0.4 1.35) (layers F.Cu F.Paste F.Mask))
34 | (pad 2 smd rect (at -0.65 -4.125) (size 0.4 1.35) (layers F.Cu F.Paste F.Mask))
35 | (model ${KIPRJMOD}/Libraries/keyboard.3dshapes/MicroUSB_Connector.step
36 | (offset (xyz -3.65 4.2 0))
37 | (scale (xyz 1 1 1))
38 | (rotate (xyz -90 0 -90))
39 | )
40 | )
41 |
--------------------------------------------------------------------------------
/Hardware/0.3/Libraries/keyboard.pretty/PinPad_1x03_P2.54mm.kicad_mod:
--------------------------------------------------------------------------------
1 | (module PinPad_1x03_P2.54mm (layer F.Cu) (tedit 5CBED9C2)
2 | (descr "Through hole straight pin header, 1x03, 2.54mm pitch, single row")
3 | (tags "Through hole pin header THT 1x03 2.54mm single row")
4 | (fp_text reference REF** (at 0 -2.33) (layer F.SilkS)
5 | (effects (font (size 1 1) (thickness 0.15)))
6 | )
7 | (fp_text value PinPad_1x03_P2.54mm (at 0 7.41) (layer F.Fab)
8 | (effects (font (size 1 1) (thickness 0.15)))
9 | )
10 | (fp_line (start -0.635 -1.27) (end 1.27 -1.27) (layer F.Fab) (width 0.1))
11 | (fp_line (start 1.27 -1.27) (end 1.27 6.35) (layer F.Fab) (width 0.1))
12 | (fp_line (start 1.27 6.35) (end -1.27 6.35) (layer F.Fab) (width 0.1))
13 | (fp_line (start -1.27 6.35) (end -1.27 -0.635) (layer F.Fab) (width 0.1))
14 | (fp_line (start -1.27 -0.635) (end -0.635 -1.27) (layer F.Fab) (width 0.1))
15 | (fp_line (start -1.33 6.41) (end 1.33 6.41) (layer F.SilkS) (width 0.12))
16 | (fp_line (start -1.33 -0.66) (end -1.33 6.41) (layer F.SilkS) (width 0.12))
17 | (fp_line (start 1.33 -1.5) (end 1.33 6.41) (layer F.SilkS) (width 0.12))
18 | (fp_line (start -0.5 -1.5) (end 1.33 -1.5) (layer F.SilkS) (width 0.12))
19 | (fp_line (start -1.8 -1.8) (end -1.8 6.85) (layer F.CrtYd) (width 0.05))
20 | (fp_line (start -1.8 6.85) (end 1.8 6.85) (layer F.CrtYd) (width 0.05))
21 | (fp_line (start 1.8 6.85) (end 1.8 -1.8) (layer F.CrtYd) (width 0.05))
22 | (fp_line (start 1.8 -1.8) (end -1.8 -1.8) (layer F.CrtYd) (width 0.05))
23 | (fp_text user %R (at 0 2.54 90) (layer F.Fab)
24 | (effects (font (size 1 1) (thickness 0.15)))
25 | )
26 | (fp_line (start -0.5 -1.5) (end -1.33 -0.66) (layer F.SilkS) (width 0.12))
27 | (pad 1 thru_hole circle (at 0 0) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
28 | (pad 2 thru_hole oval (at 0 2.54) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
29 | (pad 3 thru_hole oval (at 0 5.08) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
30 | )
31 |
--------------------------------------------------------------------------------
/Hardware/0.3/Libraries/keyboard.pretty/RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm_CircularMountingHoles.kicad_mod:
--------------------------------------------------------------------------------
1 | (module RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm_CircularMountingHoles (layer F.Cu) (tedit 5CBF76A3)
2 | (descr "Alps rotary encoder, EC12E... with switch, vertical shaft, mounting holes with circular drills, http://www.alps.com/prod/info/E/HTML/Encoder/Incremental/EC11/EC11E15204A3.html")
3 | (tags "rotary encoder")
4 | (fp_text reference REF** (at -4.7 -7.2) (layer F.SilkS)
5 | (effects (font (size 1 1) (thickness 0.15)))
6 | )
7 | (fp_text value RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm_CircularMountingHoles (at 0 7.9) (layer F.Fab)
8 | (effects (font (size 1 1) (thickness 0.15)))
9 | )
10 | (fp_text user %R (at 3.6 3.8) (layer F.Fab)
11 | (effects (font (size 1 1) (thickness 0.15)))
12 | )
13 | (fp_line (start -0.5 0) (end 0.5 0) (layer F.SilkS) (width 0.12))
14 | (fp_line (start 0 -0.5) (end 0 0.5) (layer F.SilkS) (width 0.12))
15 | (fp_line (start -3 0) (end 3 0) (layer F.Fab) (width 0.12))
16 | (fp_line (start 0 -3) (end 0 3) (layer F.Fab) (width 0.12))
17 | (fp_line (start -6 -4.7) (end -5 -5.8) (layer F.Fab) (width 0.12))
18 | (fp_line (start -6 5.8) (end -6 -4.7) (layer F.Fab) (width 0.12))
19 | (fp_line (start 6 5.8) (end -6 5.8) (layer F.Fab) (width 0.12))
20 | (fp_line (start 6 -5.8) (end 6 5.8) (layer F.Fab) (width 0.12))
21 | (fp_line (start -5 -5.8) (end 6 -5.8) (layer F.Fab) (width 0.12))
22 | (fp_line (start -9 -7.7) (end 8.5 -7.7) (layer F.CrtYd) (width 0.05))
23 | (fp_line (start -9 -7.7) (end -9 7.7) (layer F.CrtYd) (width 0.05))
24 | (fp_line (start 8.5 7.7) (end 8.5 -7.7) (layer F.CrtYd) (width 0.05))
25 | (fp_line (start 8.5 7.7) (end -9 7.7) (layer F.CrtYd) (width 0.05))
26 | (fp_circle (center 0 0) (end 3 0) (layer F.SilkS) (width 0.12))
27 | (fp_circle (center 0 0) (end 3 0) (layer F.Fab) (width 0.12))
28 | (pad S1 thru_hole circle (at 7 2.5) (size 2 2) (drill 1) (layers *.Cu *.Mask))
29 | (pad S2 thru_hole circle (at 7 -2.5) (size 2 2) (drill 1) (layers *.Cu *.Mask))
30 | (pad MP thru_hole circle (at 0 5.6) (size 3.2 3.2) (drill 2.6) (layers *.Cu *.Mask))
31 | (pad MP thru_hole circle (at 0 -5.6) (size 3.2 3.2) (drill 2.6) (layers *.Cu *.Mask))
32 | (pad B thru_hole circle (at -7.5 2.5) (size 2 2) (drill 1) (layers *.Cu *.Mask))
33 | (pad C thru_hole circle (at -7.5 0) (size 2 2) (drill 1) (layers *.Cu *.Mask))
34 | (pad A thru_hole rect (at -7.5 -2.5) (size 2 2) (drill 1) (layers *.Cu *.Mask))
35 | (model ${KIPRJMOD}/Libraries/keyboard.3dshapes/pec11r-4220k_l13-8_w12-4_h26-5.stp
36 | (offset (xyz 0 0 1.5))
37 | (scale (xyz 1 1 1))
38 | (rotate (xyz -90 0 90))
39 | )
40 | )
41 |
--------------------------------------------------------------------------------
/Hardware/0.3/Libraries/keyboard.pretty/SW_Cherry_MX1A_1.00u_PCB.kicad_mod:
--------------------------------------------------------------------------------
1 | (module SW_Cherry_MX1A_1.00u_PCB (layer F.Cu) (tedit 5CBF76F3)
2 | (descr "Cherry MX keyswitch, MX1A, 1.00u, PCB mount, http://cherryamericas.com/wp-content/uploads/2014/12/mx_cat.pdf")
3 | (tags "cherry mx keyswitch MX1A 1.00u PCB")
4 | (fp_text reference REF** (at 0.06 -7.894) (layer F.SilkS)
5 | (effects (font (size 1 1) (thickness 0.15)))
6 | )
7 | (fp_text value SW_Cherry_MX1A_1.00u_PCB (at 0.06 7.854) (layer F.Fab)
8 | (effects (font (size 1 1) (thickness 0.15)))
9 | )
10 | (fp_text user %R (at 0.06 -7.894) (layer F.Fab)
11 | (effects (font (size 1 1) (thickness 0.15)))
12 | )
13 | (fp_line (start -6.29 -6.37) (end 6.41 -6.37) (layer F.Fab) (width 0.15))
14 | (fp_line (start 6.41 -6.37) (end 6.41 6.33) (layer F.Fab) (width 0.15))
15 | (fp_line (start 6.41 6.33) (end -6.29 6.33) (layer F.Fab) (width 0.15))
16 | (fp_line (start -6.29 6.33) (end -6.29 -6.37) (layer F.Fab) (width 0.15))
17 | (fp_line (start -6.54 6.58) (end -6.54 -6.62) (layer F.CrtYd) (width 0.05))
18 | (fp_line (start 6.66 6.58) (end -6.54 6.58) (layer F.CrtYd) (width 0.05))
19 | (fp_line (start 6.66 -6.62) (end 6.66 6.58) (layer F.CrtYd) (width 0.05))
20 | (fp_line (start -6.54 -6.62) (end 6.66 -6.62) (layer F.CrtYd) (width 0.05))
21 | (fp_line (start -9.465 -9.545) (end 9.585 -9.545) (layer Dwgs.User) (width 0.15))
22 | (fp_line (start 9.585 -9.545) (end 9.585 9.505) (layer Dwgs.User) (width 0.15))
23 | (fp_line (start 9.585 9.505) (end -9.465 9.505) (layer Dwgs.User) (width 0.15))
24 | (fp_line (start -9.465 9.505) (end -9.465 -9.545) (layer Dwgs.User) (width 0.15))
25 | (pad 1 thru_hole circle (at 2.6 -5.1) (size 2.2 2.2) (drill 1.5) (layers *.Cu *.Mask))
26 | (pad 2 thru_hole circle (at -3.75 -2.56) (size 2.2 2.2) (drill 1.5) (layers *.Cu *.Mask))
27 | (pad "" np_thru_hole circle (at 0.06 -0.02) (size 4 4) (drill 4) (layers *.Cu *.Mask))
28 | (pad "" np_thru_hole circle (at -5.02 -0.02) (size 1.7 1.7) (drill 1.7) (layers *.Cu *.Mask))
29 | (pad "" np_thru_hole circle (at 5.14 -0.02) (size 1.7 1.7) (drill 1.7) (layers *.Cu *.Mask))
30 | (model ${KIPRJMOD}/Libraries/keyboard.3dshapes/cherrymx.step
31 | (offset (xyz 0.05 0 5.6))
32 | (scale (xyz 1 1 1))
33 | (rotate (xyz -90 0 -180))
34 | )
35 | (model ${KIPRJMOD}/Libraries/keyboard.3dshapes/mxKeycap.STEP
36 | (offset (xyz -9 9 10))
37 | (scale (xyz 1 1 1))
38 | (rotate (xyz -90 0 0))
39 | )
40 | )
41 |
--------------------------------------------------------------------------------
/Hardware/0.3/Libraries/keyboard.pretty/Small_Tact_Switch.kicad_mod:
--------------------------------------------------------------------------------
1 | (module Small_Tact_Switch (layer F.Cu) (tedit 5CBED444)
2 | (fp_text reference REF** (at 0.01 -2.53) (layer F.SilkS)
3 | (effects (font (size 1 1) (thickness 0.15)))
4 | )
5 | (fp_text value Small_Tact_Switch (at 0.08 2.78) (layer F.Fab)
6 | (effects (font (size 1 1) (thickness 0.15)))
7 | )
8 | (fp_line (start 2 -1.5) (end -2 -1.5) (layer F.SilkS) (width 0.15))
9 | (fp_line (start -2 1.5) (end 2 1.5) (layer F.SilkS) (width 0.15))
10 | (fp_line (start -3.5 -2) (end 3 -2) (layer F.CrtYd) (width 0.12))
11 | (fp_line (start 3 -2) (end 3 2) (layer F.CrtYd) (width 0.12))
12 | (fp_line (start 3 2) (end -3.5 2) (layer F.CrtYd) (width 0.12))
13 | (fp_line (start -3.5 2) (end -3.5 -2) (layer F.CrtYd) (width 0.12))
14 | (pad 2 smd rect (at 2.4 0) (size 0.8 1.5) (layers F.Cu F.Paste F.Mask))
15 | (pad 1 smd rect (at -2.4 0) (size 0.8 1.5) (layers F.Cu F.Paste F.Mask))
16 | (model ${KIPRJMOD}/Libraries/keyboard.3dshapes/b3u-1000p.stp
17 | (at (xyz 0 0 0))
18 | (scale (xyz 1.3 1 1))
19 | (rotate (xyz -90 0 0))
20 | )
21 | )
22 |
--------------------------------------------------------------------------------
/Hardware/0.3/bom/Hub16_BOM.csv:
--------------------------------------------------------------------------------
1 | Qty,Reference(s),Value,Footprint,MPN,DigiKey,LCSC,DNP,Notes
2 | 2,"C1, C13",10u,Capacitor_SMD:C_0603_1608Metric,CL10A106MP8NNNC ,1276-1871-1-ND ,C85713,,
3 | 11,"C10, C11, C12, C14, C15, C16, C21, C6, C7, C8, C9",100n,Capacitor_SMD:C_0603_1608Metric,CL10B104KB8NNNC,1276-1000-1-ND,C1591,,
4 | 4,"C17, C18, C2, C3",22p,Capacitor_SMD:C_0603_1608Metric,CL10C220JB8NFNC ,1276-2228-1-ND ,C1653,,
5 | 5,"C19, C20, C22, C4, C5",1u,Capacitor_SMD:C_0603_1608Metric,CL10A105MP8NNNC ,1276-1866-1-ND ,C29936,,
6 | 1,D1,LED,LED_SMD:LED_0603_1608Metric,150060VS75000,732-4980-1-ND ,C364559,,
7 | 11,"D10, D16, D2, D22, D23, D29, D3, D30, D31, D32, D4",WS2812B,keyboard:LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm,WS2812B,1528-1104-ND,WS2812B-B,,LCSC - Black Model
8 | 16,"D11, D12, D13, D14, D17, D18, D19, D20, D24, D25, D26, D27, D5, D6, D7, D8",D,Diode_SMD:D_SOD-123,1N4148W-7-F,1N4148W-FDICT-ND, C83528,,
9 | 1,F1,500mA,keyboard:Fuse_0805_2012Metric,0ZCK0050FF2E,507-1813-1-ND, C181350,,LCSC: Substitute PN
10 | 4,"FB1, FB2, FB3, FB4",600R,josh-passives-smt:Ferrite_Bead_0603,BLM18AG601SN1D,490-1014-1-ND,C19330,,
11 | 4,"H1, H2, H3, H4",MH-M3,MountingHole:MountingHole_3.2mm_M3_ISO14580,,,,DNP,
12 | 4,"J1, J3, J4, J5",USB_C_Receptacle_USB2.0,josh-connectors:USB_C_Receptacle_GT-USB-7010,U262-161N-4BVC11,,C319148,,"Cannot source from Digikey, available on AliExpress: https://www.aliexpress.com/item/33045191307.html"
13 | 1,J2,AVR-ISP-6,keyboard:AVR_Programmer_SMD,,,,DNP,
14 | 10,"JP1, JP10, JP2, JP3, JP4, JP5, JP6, JP7, JP8, JP9",Jumper,Jumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mm,,,,DNP,
15 | 1,JP11,LED_ON,Jumper:SolderJumper-2_P1.3mm_Bridged_RoundedPad1.0x1.5mm,,,,DNP,
16 | 16,"K1, K11, K12, K13, K14, K16, K17, K18, K19, K2, K3, K4, K6, K7, K8, K9",KEYSW,keyboard:SW_Cherry_MX1A_1.00u_PCB,,,,,
17 | 1,R1,2K2,Resistor_SMD:R_0603_1608Metric,CR0603-JW-222ELF ,CR0603-JW-222ELFCT-ND ,C113303,,
18 | 3,"R10, R13, R9",100K,Resistor_SMD:R_0603_1608Metric,CR0603-JW-104ELF ,CR0603-JW-104ELFCT-ND ,C203223,DNP,
19 | 5,"R11, R12, R2, R5, R8",10K,Resistor_SMD:R_0603_1608Metric,CR0603-JW-103ELF ,CR0603-JW-103ELFCT-ND ,C144116,,
20 | 1,R14,649R,Resistor_SMD:R_0603_1608Metric,MCR03ERTF6490 ,RHM649CFCT-ND ,,,"Cannot source from LCSC, no substitutes available "
21 | 2,"R3, R4",5K1,Resistor_SMD:R_0603_1608Metric,CR0603-JW-512ELF ,118-CR0603-JW-512ELFCT-ND ,C14677,,
22 | 2,"R6, R7",22R,Resistor_SMD:R_0603_1608Metric,CR0603-JW-220ELF ,CR0603-JW-220ELFCT-ND ,C203424,,
23 | 2,"RN1, RN3",10K,Resistor_SMD:R_Array_Convex_4x0402,RAVF104DJT10K0,RAVF104DJT10K0CT-ND,C136853,,
24 | 1,RN5,10K,Resistor_SMD:R_Array_Convex_4x0402,RAVF104DJT10K0,RAVF104DJT10K0CT-ND,C136853,,
25 | 1,SW1,SW_Push,josh-buttons-switches:BT_Small_2_Pin,KSR223GLFG,401-1704-1-ND,C354946,,LCSC: Substitute PN
26 | 2,"SW2, SW3",Rotary_Encoder_Switch,keyboard:RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm_CircularMountingHoles,EC11E1834403,987-1398-ND,C361165,,Similar to: https://www.aliexpress.com/item/32839106848.html
27 | 1,U1,TPD2S017,Package_TO_SOT_SMD:SOT-23-6,TPD2S017DBVR,296-25216-1-ND ,,,"Cannot source from LCSC, no substitutes available "
28 | 1,U2,ATMEGA32U4,Package_QFP:TQFP-44_10x10mm_P0.8mm,ATMEGA32U4-AU,ATMEGA32U4-AURCT-ND,C44854,,
29 | 1,U3,CY7C65632-28LTXCT,Package_DFN_QFN:QFN-28-1EP_5x5mm_P0.5mm_EP3.35x3.35mm_ThermalVias,CY7C65632-28LTXCT,428-3156-1-ND,C466886,,
30 | 1,Y1,16MHz,josh-oscillators:Crystal_SMD_3225-4Pin_3.2x2.5mm,ABM8-16.000MHZ-B2-T,535-9134-1-ND ,C179641,,
31 | 1,Y2,12MHz,josh-oscillators:Crystal_SMD_3225-4Pin_3.2x2.5mm,ABM8-12.000MHZ-B2-T,535-9826-1-ND,C276421,,
32 |
--------------------------------------------------------------------------------
/Hardware/0.3/fp-lib-table:
--------------------------------------------------------------------------------
1 | (fp_lib_table
2 | (lib (name keyboard)(type KiCad)(uri ${KIPRJMOD}/Libraries/keyboard.pretty)(options "")(descr ""))
3 | (lib (name josh-buttons-switches)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-buttons-switches.pretty)(options "")(descr ""))
4 | (lib (name josh-connectors)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-connectors.pretty)(options "")(descr ""))
5 | (lib (name josh-dfn-qfn)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-dfn-qfn.pretty)(options "")(descr ""))
6 | (lib (name josh-led)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-led.pretty)(options "")(descr ""))
7 | (lib (name josh-logos)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-logos.pretty)(options "")(descr ""))
8 | (lib (name josh-mechanical)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-mechanical.pretty)(options "")(descr ""))
9 | (lib (name josh-oscillators)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-oscillators.pretty)(options "")(descr ""))
10 | (lib (name josh-passives-smt)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-passives-smt.pretty)(options "")(descr ""))
11 | (lib (name josh-rf)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-rf.pretty)(options "")(descr ""))
12 | (lib (name josh-soic-sot-etc)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-soic-sot-etc.pretty)(options "")(descr ""))
13 | (lib (name josh-test-point)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-test-point.pretty)(options "")(descr ""))
14 | )
15 |
--------------------------------------------------------------------------------
/Hardware/0.3/sym-lib-table:
--------------------------------------------------------------------------------
1 | (sym_lib_table
2 | (lib (name keyboard)(type Legacy)(uri ${KIPRJMOD}/Libraries/keyboard.lib)(options "")(descr ""))
3 | (lib (name Hub16-rescue)(type Legacy)(uri ${KIPRJMOD}/Hub16-rescue.lib)(options "")(descr ""))
4 | (lib (name josh-ic)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-ic.lib)(options "")(descr ""))
5 | (lib (name josh-led)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-led.lib)(options "")(descr ""))
6 | (lib (name josh-logic)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-logic.lib)(options "")(descr ""))
7 | (lib (name josh-mechnanical)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-mechnanical.lib)(options "")(descr ""))
8 | (lib (name josh-memory)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-memory.lib)(options "")(descr ""))
9 | (lib (name josh-oscillator)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-oscillator.lib)(options "")(descr ""))
10 | (lib (name josh-passive)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-passive.lib)(options "")(descr ""))
11 | (lib (name josh-power)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-power.lib)(options "")(descr ""))
12 | (lib (name josh-rf)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-rf.lib)(options "")(descr ""))
13 | (lib (name josh-connector)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-connector.lib)(options "")(descr ""))
14 | )
15 |
--------------------------------------------------------------------------------
/Hardware/0.4/Hub16.pro:
--------------------------------------------------------------------------------
1 | update=Sun 16 Feb 2020 19:39:10 AEDT
2 | version=1
3 | last_client=kicad
4 | [general]
5 | version=1
6 | RootSch=
7 | BoardNm=
8 | [cvpcb]
9 | version=1
10 | NetIExt=net
11 | [eeschema]
12 | version=1
13 | LibDir=
14 | [eeschema/libraries]
15 | [schematic_editor]
16 | version=1
17 | PageLayoutDescrFile=
18 | PlotDirectoryName=./
19 | SubpartIdSeparator=0
20 | SubpartFirstId=65
21 | NetFmtName=Pcbnew
22 | SpiceAjustPassiveValues=0
23 | LabSize=50
24 | ERC_TestSimilarLabels=1
25 | [pcbnew]
26 | version=1
27 | PageLayoutDescrFile=
28 | LastNetListRead=Hub16.net
29 | CopperLayerCount=2
30 | BoardThickness=1.6
31 | AllowMicroVias=0
32 | AllowBlindVias=0
33 | RequireCourtyardDefinitions=0
34 | ProhibitOverlappingCourtyards=1
35 | MinTrackWidth=0.2
36 | MinViaDiameter=0.6
37 | MinViaDrill=0.3
38 | MinMicroViaDiameter=0.2
39 | MinMicroViaDrill=0.09999999999999999
40 | MinHoleToHole=0.25
41 | TrackWidth1=0.25
42 | TrackWidth2=0.2
43 | TrackWidth3=0.5
44 | TrackWidth4=1
45 | ViaDiameter1=0.6
46 | ViaDrill1=0.3
47 | ViaDiameter2=0.6
48 | ViaDrill2=0.3
49 | dPairWidth1=0.2
50 | dPairGap1=0.25
51 | dPairViaGap1=0.25
52 | SilkLineWidth=0.12
53 | SilkTextSizeV=1
54 | SilkTextSizeH=1
55 | SilkTextSizeThickness=0.15
56 | SilkTextItalic=0
57 | SilkTextUpright=1
58 | CopperLineWidth=0.2
59 | CopperTextSizeV=1.5
60 | CopperTextSizeH=1.5
61 | CopperTextThickness=0.3
62 | CopperTextItalic=0
63 | CopperTextUpright=1
64 | EdgeCutLineWidth=0.05
65 | CourtyardLineWidth=0.05
66 | OthersLineWidth=0.15
67 | OthersTextSizeV=1
68 | OthersTextSizeH=1
69 | OthersTextSizeThickness=0.15
70 | OthersTextItalic=0
71 | OthersTextUpright=1
72 | SolderMaskClearance=0
73 | SolderMaskMinWidth=0
74 | SolderPasteClearance=0
75 | SolderPasteRatio=-0
76 | [pcbnew/Layer.F.Cu]
77 | Name=F.Cu
78 | Type=0
79 | Enabled=1
80 | [pcbnew/Layer.In1.Cu]
81 | Name=In1.Cu
82 | Type=0
83 | Enabled=0
84 | [pcbnew/Layer.In2.Cu]
85 | Name=In2.Cu
86 | Type=0
87 | Enabled=0
88 | [pcbnew/Layer.In3.Cu]
89 | Name=In3.Cu
90 | Type=0
91 | Enabled=0
92 | [pcbnew/Layer.In4.Cu]
93 | Name=In4.Cu
94 | Type=0
95 | Enabled=0
96 | [pcbnew/Layer.In5.Cu]
97 | Name=In5.Cu
98 | Type=0
99 | Enabled=0
100 | [pcbnew/Layer.In6.Cu]
101 | Name=In6.Cu
102 | Type=0
103 | Enabled=0
104 | [pcbnew/Layer.In7.Cu]
105 | Name=In7.Cu
106 | Type=0
107 | Enabled=0
108 | [pcbnew/Layer.In8.Cu]
109 | Name=In8.Cu
110 | Type=0
111 | Enabled=0
112 | [pcbnew/Layer.In9.Cu]
113 | Name=In9.Cu
114 | Type=0
115 | Enabled=0
116 | [pcbnew/Layer.In10.Cu]
117 | Name=In10.Cu
118 | Type=0
119 | Enabled=0
120 | [pcbnew/Layer.In11.Cu]
121 | Name=In11.Cu
122 | Type=0
123 | Enabled=0
124 | [pcbnew/Layer.In12.Cu]
125 | Name=In12.Cu
126 | Type=0
127 | Enabled=0
128 | [pcbnew/Layer.In13.Cu]
129 | Name=In13.Cu
130 | Type=0
131 | Enabled=0
132 | [pcbnew/Layer.In14.Cu]
133 | Name=In14.Cu
134 | Type=0
135 | Enabled=0
136 | [pcbnew/Layer.In15.Cu]
137 | Name=In15.Cu
138 | Type=0
139 | Enabled=0
140 | [pcbnew/Layer.In16.Cu]
141 | Name=In16.Cu
142 | Type=0
143 | Enabled=0
144 | [pcbnew/Layer.In17.Cu]
145 | Name=In17.Cu
146 | Type=0
147 | Enabled=0
148 | [pcbnew/Layer.In18.Cu]
149 | Name=In18.Cu
150 | Type=0
151 | Enabled=0
152 | [pcbnew/Layer.In19.Cu]
153 | Name=In19.Cu
154 | Type=0
155 | Enabled=0
156 | [pcbnew/Layer.In20.Cu]
157 | Name=In20.Cu
158 | Type=0
159 | Enabled=0
160 | [pcbnew/Layer.In21.Cu]
161 | Name=In21.Cu
162 | Type=0
163 | Enabled=0
164 | [pcbnew/Layer.In22.Cu]
165 | Name=In22.Cu
166 | Type=0
167 | Enabled=0
168 | [pcbnew/Layer.In23.Cu]
169 | Name=In23.Cu
170 | Type=0
171 | Enabled=0
172 | [pcbnew/Layer.In24.Cu]
173 | Name=In24.Cu
174 | Type=0
175 | Enabled=0
176 | [pcbnew/Layer.In25.Cu]
177 | Name=In25.Cu
178 | Type=0
179 | Enabled=0
180 | [pcbnew/Layer.In26.Cu]
181 | Name=In26.Cu
182 | Type=0
183 | Enabled=0
184 | [pcbnew/Layer.In27.Cu]
185 | Name=In27.Cu
186 | Type=0
187 | Enabled=0
188 | [pcbnew/Layer.In28.Cu]
189 | Name=In28.Cu
190 | Type=0
191 | Enabled=0
192 | [pcbnew/Layer.In29.Cu]
193 | Name=In29.Cu
194 | Type=0
195 | Enabled=0
196 | [pcbnew/Layer.In30.Cu]
197 | Name=In30.Cu
198 | Type=0
199 | Enabled=0
200 | [pcbnew/Layer.B.Cu]
201 | Name=B.Cu
202 | Type=0
203 | Enabled=1
204 | [pcbnew/Layer.B.Adhes]
205 | Enabled=1
206 | [pcbnew/Layer.F.Adhes]
207 | Enabled=1
208 | [pcbnew/Layer.B.Paste]
209 | Enabled=1
210 | [pcbnew/Layer.F.Paste]
211 | Enabled=1
212 | [pcbnew/Layer.B.SilkS]
213 | Enabled=1
214 | [pcbnew/Layer.F.SilkS]
215 | Enabled=1
216 | [pcbnew/Layer.B.Mask]
217 | Enabled=1
218 | [pcbnew/Layer.F.Mask]
219 | Enabled=1
220 | [pcbnew/Layer.Dwgs.User]
221 | Enabled=1
222 | [pcbnew/Layer.Cmts.User]
223 | Enabled=1
224 | [pcbnew/Layer.Eco1.User]
225 | Enabled=1
226 | [pcbnew/Layer.Eco2.User]
227 | Enabled=1
228 | [pcbnew/Layer.Edge.Cuts]
229 | Enabled=1
230 | [pcbnew/Layer.Margin]
231 | Enabled=1
232 | [pcbnew/Layer.B.CrtYd]
233 | Enabled=1
234 | [pcbnew/Layer.F.CrtYd]
235 | Enabled=1
236 | [pcbnew/Layer.B.Fab]
237 | Enabled=1
238 | [pcbnew/Layer.F.Fab]
239 | Enabled=1
240 | [pcbnew/Layer.Rescue]
241 | Enabled=0
242 | [pcbnew/Netclasses]
243 | [pcbnew/Netclasses/Default]
244 | Name=Default
245 | Clearance=0.15
246 | TrackWidth=0.25
247 | ViaDiameter=0.6
248 | ViaDrill=0.3
249 | uViaDiameter=0.3
250 | uViaDrill=0.1
251 | dPairWidth=0.2
252 | dPairGap=0.25
253 | dPairViaGap=0.25
254 |
--------------------------------------------------------------------------------
/Hardware/0.4/fp-lib-table:
--------------------------------------------------------------------------------
1 | (fp_lib_table
2 | (lib (name josh-buttons-switches)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-buttons-switches.pretty)(options "")(descr ""))
3 | (lib (name josh-connectors)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-connectors.pretty)(options "")(descr ""))
4 | (lib (name josh-dfn-qfn)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-dfn-qfn.pretty)(options "")(descr ""))
5 | (lib (name josh-led)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-led.pretty)(options "")(descr ""))
6 | (lib (name josh-logos)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-logos.pretty)(options "")(descr ""))
7 | (lib (name josh-mechanical)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-mechanical.pretty)(options "")(descr ""))
8 | (lib (name josh-oscillators)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-oscillators.pretty)(options "")(descr ""))
9 | (lib (name josh-passives-smt)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-passives-smt.pretty)(options "")(descr ""))
10 | (lib (name josh-rf)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-rf.pretty)(options "")(descr ""))
11 | (lib (name josh-soic-sot-etc)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-soic-sot-etc.pretty)(options "")(descr ""))
12 | (lib (name josh-test-point)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-test-point.pretty)(options "")(descr ""))
13 | (lib (name josh-keyboard)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-keyboard.pretty)(options "")(descr ""))
14 | )
15 |
--------------------------------------------------------------------------------
/Hardware/0.4/sym-lib-table:
--------------------------------------------------------------------------------
1 | (sym_lib_table
2 | (lib (name josh-ic)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-ic.lib)(options "")(descr ""))
3 | (lib (name josh-led)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-led.lib)(options "")(descr ""))
4 | (lib (name josh-logic)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-logic.lib)(options "")(descr ""))
5 | (lib (name josh-mechnanical)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-mechnanical.lib)(options "")(descr ""))
6 | (lib (name josh-memory)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-memory.lib)(options "")(descr ""))
7 | (lib (name josh-oscillator)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-oscillator.lib)(options "")(descr ""))
8 | (lib (name josh-passive)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-passive.lib)(options "")(descr ""))
9 | (lib (name josh-power)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-power.lib)(options "")(descr ""))
10 | (lib (name josh-rf)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-rf.lib)(options "")(descr ""))
11 | (lib (name josh-connector)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-connector.lib)(options "")(descr ""))
12 | )
13 |
--------------------------------------------------------------------------------
/Hardware/0.5/Hub16.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Hardware/0.5/Hub16.pdf
--------------------------------------------------------------------------------
/Hardware/0.5/Hub16.pro:
--------------------------------------------------------------------------------
1 | update=Mon 30 Mar 2020 21:05:31 AEDT
2 | version=1
3 | last_client=kicad
4 | [general]
5 | version=1
6 | RootSch=
7 | BoardNm=
8 | [cvpcb]
9 | version=1
10 | NetIExt=net
11 | [eeschema]
12 | version=1
13 | LibDir=
14 | [eeschema/libraries]
15 | [pcbnew]
16 | version=1
17 | PageLayoutDescrFile=
18 | LastNetListRead=Hub16.net
19 | CopperLayerCount=2
20 | BoardThickness=1.6
21 | AllowMicroVias=0
22 | AllowBlindVias=0
23 | RequireCourtyardDefinitions=0
24 | ProhibitOverlappingCourtyards=1
25 | MinTrackWidth=0.2
26 | MinViaDiameter=0.6
27 | MinViaDrill=0.3
28 | MinMicroViaDiameter=0.2
29 | MinMicroViaDrill=0.09999999999999999
30 | MinHoleToHole=0.25
31 | TrackWidth1=0.25
32 | TrackWidth2=0.2
33 | TrackWidth3=0.5
34 | TrackWidth4=1
35 | ViaDiameter1=0.6
36 | ViaDrill1=0.3
37 | ViaDiameter2=0.6
38 | ViaDrill2=0.3
39 | dPairWidth1=0.2
40 | dPairGap1=0.25
41 | dPairViaGap1=0.25
42 | SilkLineWidth=0.12
43 | SilkTextSizeV=1
44 | SilkTextSizeH=1
45 | SilkTextSizeThickness=0.15
46 | SilkTextItalic=0
47 | SilkTextUpright=1
48 | CopperLineWidth=0.2
49 | CopperTextSizeV=1.5
50 | CopperTextSizeH=1.5
51 | CopperTextThickness=0.3
52 | CopperTextItalic=0
53 | CopperTextUpright=1
54 | EdgeCutLineWidth=0.05
55 | CourtyardLineWidth=0.05
56 | OthersLineWidth=0.15
57 | OthersTextSizeV=1
58 | OthersTextSizeH=1
59 | OthersTextSizeThickness=0.15
60 | OthersTextItalic=0
61 | OthersTextUpright=1
62 | SolderMaskClearance=0
63 | SolderMaskMinWidth=0
64 | SolderPasteClearance=0
65 | SolderPasteRatio=-0
66 | [pcbnew/Layer.F.Cu]
67 | Name=F.Cu
68 | Type=0
69 | Enabled=1
70 | [pcbnew/Layer.In1.Cu]
71 | Name=In1.Cu
72 | Type=0
73 | Enabled=0
74 | [pcbnew/Layer.In2.Cu]
75 | Name=In2.Cu
76 | Type=0
77 | Enabled=0
78 | [pcbnew/Layer.In3.Cu]
79 | Name=In3.Cu
80 | Type=0
81 | Enabled=0
82 | [pcbnew/Layer.In4.Cu]
83 | Name=In4.Cu
84 | Type=0
85 | Enabled=0
86 | [pcbnew/Layer.In5.Cu]
87 | Name=In5.Cu
88 | Type=0
89 | Enabled=0
90 | [pcbnew/Layer.In6.Cu]
91 | Name=In6.Cu
92 | Type=0
93 | Enabled=0
94 | [pcbnew/Layer.In7.Cu]
95 | Name=In7.Cu
96 | Type=0
97 | Enabled=0
98 | [pcbnew/Layer.In8.Cu]
99 | Name=In8.Cu
100 | Type=0
101 | Enabled=0
102 | [pcbnew/Layer.In9.Cu]
103 | Name=In9.Cu
104 | Type=0
105 | Enabled=0
106 | [pcbnew/Layer.In10.Cu]
107 | Name=In10.Cu
108 | Type=0
109 | Enabled=0
110 | [pcbnew/Layer.In11.Cu]
111 | Name=In11.Cu
112 | Type=0
113 | Enabled=0
114 | [pcbnew/Layer.In12.Cu]
115 | Name=In12.Cu
116 | Type=0
117 | Enabled=0
118 | [pcbnew/Layer.In13.Cu]
119 | Name=In13.Cu
120 | Type=0
121 | Enabled=0
122 | [pcbnew/Layer.In14.Cu]
123 | Name=In14.Cu
124 | Type=0
125 | Enabled=0
126 | [pcbnew/Layer.In15.Cu]
127 | Name=In15.Cu
128 | Type=0
129 | Enabled=0
130 | [pcbnew/Layer.In16.Cu]
131 | Name=In16.Cu
132 | Type=0
133 | Enabled=0
134 | [pcbnew/Layer.In17.Cu]
135 | Name=In17.Cu
136 | Type=0
137 | Enabled=0
138 | [pcbnew/Layer.In18.Cu]
139 | Name=In18.Cu
140 | Type=0
141 | Enabled=0
142 | [pcbnew/Layer.In19.Cu]
143 | Name=In19.Cu
144 | Type=0
145 | Enabled=0
146 | [pcbnew/Layer.In20.Cu]
147 | Name=In20.Cu
148 | Type=0
149 | Enabled=0
150 | [pcbnew/Layer.In21.Cu]
151 | Name=In21.Cu
152 | Type=0
153 | Enabled=0
154 | [pcbnew/Layer.In22.Cu]
155 | Name=In22.Cu
156 | Type=0
157 | Enabled=0
158 | [pcbnew/Layer.In23.Cu]
159 | Name=In23.Cu
160 | Type=0
161 | Enabled=0
162 | [pcbnew/Layer.In24.Cu]
163 | Name=In24.Cu
164 | Type=0
165 | Enabled=0
166 | [pcbnew/Layer.In25.Cu]
167 | Name=In25.Cu
168 | Type=0
169 | Enabled=0
170 | [pcbnew/Layer.In26.Cu]
171 | Name=In26.Cu
172 | Type=0
173 | Enabled=0
174 | [pcbnew/Layer.In27.Cu]
175 | Name=In27.Cu
176 | Type=0
177 | Enabled=0
178 | [pcbnew/Layer.In28.Cu]
179 | Name=In28.Cu
180 | Type=0
181 | Enabled=0
182 | [pcbnew/Layer.In29.Cu]
183 | Name=In29.Cu
184 | Type=0
185 | Enabled=0
186 | [pcbnew/Layer.In30.Cu]
187 | Name=In30.Cu
188 | Type=0
189 | Enabled=0
190 | [pcbnew/Layer.B.Cu]
191 | Name=B.Cu
192 | Type=0
193 | Enabled=1
194 | [pcbnew/Layer.B.Adhes]
195 | Enabled=1
196 | [pcbnew/Layer.F.Adhes]
197 | Enabled=1
198 | [pcbnew/Layer.B.Paste]
199 | Enabled=1
200 | [pcbnew/Layer.F.Paste]
201 | Enabled=1
202 | [pcbnew/Layer.B.SilkS]
203 | Enabled=1
204 | [pcbnew/Layer.F.SilkS]
205 | Enabled=1
206 | [pcbnew/Layer.B.Mask]
207 | Enabled=1
208 | [pcbnew/Layer.F.Mask]
209 | Enabled=1
210 | [pcbnew/Layer.Dwgs.User]
211 | Enabled=1
212 | [pcbnew/Layer.Cmts.User]
213 | Enabled=1
214 | [pcbnew/Layer.Eco1.User]
215 | Enabled=1
216 | [pcbnew/Layer.Eco2.User]
217 | Enabled=1
218 | [pcbnew/Layer.Edge.Cuts]
219 | Enabled=1
220 | [pcbnew/Layer.Margin]
221 | Enabled=1
222 | [pcbnew/Layer.B.CrtYd]
223 | Enabled=1
224 | [pcbnew/Layer.F.CrtYd]
225 | Enabled=1
226 | [pcbnew/Layer.B.Fab]
227 | Enabled=1
228 | [pcbnew/Layer.F.Fab]
229 | Enabled=1
230 | [pcbnew/Layer.Rescue]
231 | Enabled=0
232 | [pcbnew/Netclasses]
233 | [pcbnew/Netclasses/Default]
234 | Name=Default
235 | Clearance=0.15
236 | TrackWidth=0.25
237 | ViaDiameter=0.6
238 | ViaDrill=0.3
239 | uViaDiameter=0.3
240 | uViaDrill=0.1
241 | dPairWidth=0.2
242 | dPairGap=0.25
243 | dPairViaGap=0.25
244 | [schematic_editor]
245 | version=1
246 | PageLayoutDescrFile=
247 | PlotDirectoryName=./
248 | SubpartIdSeparator=0
249 | SubpartFirstId=65
250 | NetFmtName=Pcbnew
251 | SpiceAjustPassiveValues=0
252 | LabSize=50
253 | ERC_TestSimilarLabels=1
254 |
--------------------------------------------------------------------------------
/Hardware/0.5/assembly/BOM.csv:
--------------------------------------------------------------------------------
1 | Qty,Reference(s),Value,Footprint,MPN,DigiKey,LCSC,Manufacturer,DNP,Notes
2 | 2,"C1, C13",10u,Capacitor_SMD:C_0603_1608Metric,CL10A106MP8NNNC ,1276-1871-1-ND ,C85713,Samsung Electro-Mechanics,,
3 | 11,"C10, C11, C12, C14, C15, C16, C21, C6, C7, C8, C9",100n,Capacitor_SMD:C_0603_1608Metric,CL10B104KB8NNNC,1276-1000-1-ND,C1591,Samsung Electro-Mechanics,,
4 | 4,"C17, C18, C2, C3",22p,Capacitor_SMD:C_0603_1608Metric,CL10C220JB8NFNC ,1276-2228-1-ND ,C1653,Samsung Electro-Mechanics,,
5 | 5,"C19, C20, C22, C4, C5",1u,Capacitor_SMD:C_0603_1608Metric,CL10A105MP8NNNC ,1276-1866-1-ND ,C29936,Samsung Electro-Mechanics,,
6 | 1,D1,LED,LED_SMD:LED_0603_1608Metric,150060VS75000,732-4980-1-ND ,C364559,Wurth Electronik,,LCSC: Substutite PN
7 | 11,"D10, D16, D2, D22, D23, D29, D3, D30, D31, D32, D4",WS2812B,LED_SMD:LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm,WS2812B,1528-1104-ND,C114586,Worldsemi,,
8 | 16,"D11, D12, D13, D14, D17, D18, D19, D20, D24, D25, D26, D27, D5, D6, D7, D8",D,Diode_SMD:D_SOD-123,1N4148W-7-F,1N4148W-FDICT-ND,C83528,Diodes Inc,,
9 | 1,F1,500mA,josh-passives-smt:Fuse_0805_2012Metric,0ZCK0050FF2E,507-1813-1-ND,C181350,Bel Fuse,,LCSC: Substitute PN
10 | 4,"FB1, FB2, FB3, FB4",600R,josh-passives-smt:Ferrite_Bead_0603,BLM18AG601SN1D,490-1014-1-ND,C19330,Murata,,
11 | 4,"H1, H2, H3, H4",MH-M3,MountingHole:MountingHole_3.2mm_M3_ISO14580,,,,,DNP,
12 | 4,"J1, J3, J4, J5",USB_C_Receptacle_USB2.0,josh-connectors:USB_C_U262-161N-4BVC11,U262-161N-4BVC11,,C319148,XKB Enterprise,,Cannot source from DigiKey
13 | 1,J2,AVR-ISP-6,josh-connectors:AVR_PROG_2.54_SMT,,,,,DNP,
14 | 1,JP11,LED_ON,Jumper:SolderJumper-2_P1.3mm_Bridged_RoundedPad1.0x1.5mm,,,,,DNP,
15 | 16,"K1, K11, K12, K13, K14, K16, K17, K18, K19, K2, K3, K4, K6, K7, K8, K9",KEYSW,josh-keyboard:MX_KEYSWITCH,,,,,DNP,
16 | 1,LOGO1,Josh-Logo,josh-logos:josh-johnson-logo-11x2,,,,,DNP,
17 | 1,LOGO2,Josh-Details,josh-logos:josh-details,,,,,DNP,
18 | 1,LOGO3,Board-Details,josh-logos:board-title,,,,,DNP,
19 | 1,LOGO4,Logo_Open_Hardware_Small,josh-logos:OSHW_Logo_3.6x3.6_F.Mask,,,,,DNP,
20 | 1,R1,2K2,Resistor_SMD:R_0603_1608Metric,CR0603-JW-222ELF ,CR0603-JW-222ELFCT-ND ,C113303,Bourns,,LCSC: Substitute PN
21 | 5,"R11, R12, R2, R5, R8",10K,Resistor_SMD:R_0603_1608Metric,CR0603-JW-103ELF ,CR0603-JW-103ELFCT-ND ,C144116,Bourns,,LCSC: Substitute PN
22 | 2,"R13, R9",100K,Resistor_SMD:R_0603_1608Metric,CR0603-JW-104ELF ,CR0603-JW-104ELFCT-ND ,C203223,Bourns,,LCSC: Substitute PN
23 | 1,R14,649R,Resistor_SMD:R_0603_1608Metric,MCR03ERTF6490 ,RHM649CFCT-ND ,C403314,Rohm Semiconductor,,LCSC: Substitute PN
24 | 2,"R3, R4",5K1,Resistor_SMD:R_0603_1608Metric,CR0603-JW-512ELF ,118-CR0603-JW-512ELFCT-ND ,C14677,Bourns,,LCSC: Substitute PN
25 | 2,"R6, R7",22R,Resistor_SMD:R_0603_1608Metric,CR0603-JW-220ELF ,CR0603-JW-220ELFCT-ND ,C203424,Bourns,,LCSC: Substitute PN
26 | 2,"RN1, RN3",10K,Resistor_SMD:R_Array_Convex_4x0603,RAVF164DJT10K0,RAVF164DJT10K0CT-ND,C29718,Bourns,,LCSC: Substitute PN
27 | 1,RN5,10K,Resistor_SMD:R_Array_Convex_4x0603,RAVF164DJT10K0,RAVF164DJT10K0CT-ND,C29718,Bourns,,LCSC: Substitute PN
28 | 1,SW1,KMR2,josh-buttons-switches:SW_Push_KMR2,KSR223GLFG,401-1704-1-ND,C354946,C&K,,LCSC: Substitute PN
29 | 2,"SW2, SW3",Rotary_Encoder_Switch,josh-buttons-switches:RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm_CircularMountingHoles,EC11E1834403,987-1398-ND,C361165,,DNP,Similar to: https://www.aliexpress.com/item/32839106848.html
30 | 1,U1,USBLC6-2SC6,Package_TO_SOT_SMD:SOT-23-6,USBLC6-2SC6,497-5235-1-ND ,C7519,STmicroelectronics,,
31 | 1,U2,ATMEGA32U4,Package_QFP:TQFP-44_10x10mm_P0.8mm,ATMEGA32U4-AU,ATMEGA32U4-AURCT-ND,C44854,Microchip/Atmel,,
32 | 1,U3,CY7C65632-28LTXCT,josh-dfn-qfn:QFN-28-1EP_5x5mm_P0.5mm_EP3.35x3.35mm_ThermalVias,CY7C65632-28LTXCT,428-3156-1-ND,C466886,Cypress Semiconductor,,
33 | 1,Y1,16MHz,josh-oscillators:Crystal_SMD_3225-4Pin_3.2x2.5mm,ABM8-16.000MHZ-B2-T,535-9134-1-ND ,C179641,Abracon LLC,,
34 | 1,Y2,12MHz,josh-oscillators:Crystal_SMD_3225-4Pin_3.2x2.5mm,ABM8-12.000MHZ-B2-T,535-9826-1-ND,C276421,Abracon LLC,,
35 |
--------------------------------------------------------------------------------
/Hardware/0.5/assembly/gerbers.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Hardware/0.5/assembly/gerbers.zip
--------------------------------------------------------------------------------
/Hardware/0.5/assembly/stencil.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Hardware/0.5/assembly/stencil.zip
--------------------------------------------------------------------------------
/Hardware/0.5/fp-lib-table:
--------------------------------------------------------------------------------
1 | (fp_lib_table
2 | (lib (name josh-buttons-switches)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-buttons-switches.pretty)(options "")(descr ""))
3 | (lib (name josh-connectors)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-connectors.pretty)(options "")(descr ""))
4 | (lib (name josh-dfn-qfn)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-dfn-qfn.pretty)(options "")(descr ""))
5 | (lib (name josh-led)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-led.pretty)(options "")(descr ""))
6 | (lib (name josh-logos)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-logos.pretty)(options "")(descr ""))
7 | (lib (name josh-mechanical)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-mechanical.pretty)(options "")(descr ""))
8 | (lib (name josh-oscillators)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-oscillators.pretty)(options "")(descr ""))
9 | (lib (name josh-passives-smt)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-passives-smt.pretty)(options "")(descr ""))
10 | (lib (name josh-rf)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-rf.pretty)(options "")(descr ""))
11 | (lib (name josh-soic-sot-etc)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-soic-sot-etc.pretty)(options "")(descr ""))
12 | (lib (name josh-test-point)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-test-point.pretty)(options "")(descr ""))
13 | (lib (name josh-keyboard)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-keyboard.pretty)(options "")(descr ""))
14 | )
15 |
--------------------------------------------------------------------------------
/Hardware/0.5/sym-lib-table:
--------------------------------------------------------------------------------
1 | (sym_lib_table
2 | (lib (name josh-ic)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-ic.lib)(options "")(descr ""))
3 | (lib (name josh-led)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-led.lib)(options "")(descr ""))
4 | (lib (name josh-logic)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-logic.lib)(options "")(descr ""))
5 | (lib (name josh-mechnanical)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-mechnanical.lib)(options "")(descr ""))
6 | (lib (name josh-memory)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-memory.lib)(options "")(descr ""))
7 | (lib (name josh-oscillator)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-oscillator.lib)(options "")(descr ""))
8 | (lib (name josh-passive)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-passive.lib)(options "")(descr ""))
9 | (lib (name josh-power)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-power.lib)(options "")(descr ""))
10 | (lib (name josh-rf)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-rf.lib)(options "")(descr ""))
11 | (lib (name josh-connector)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-connector.lib)(options "")(descr ""))
12 | )
13 |
--------------------------------------------------------------------------------
/Hardware/0.6/fp-lib-table:
--------------------------------------------------------------------------------
1 | (fp_lib_table
2 | (lib (name josh-buttons-switches)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-buttons-switches.pretty)(options "")(descr ""))
3 | (lib (name josh-connectors)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-connectors.pretty)(options "")(descr ""))
4 | (lib (name josh-dfn-qfn)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-dfn-qfn.pretty)(options "")(descr ""))
5 | (lib (name josh-led)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-led.pretty)(options "")(descr ""))
6 | (lib (name josh-logos)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-logos.pretty)(options "")(descr ""))
7 | (lib (name josh-mechanical)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-mechanical.pretty)(options "")(descr ""))
8 | (lib (name josh-oscillators)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-oscillators.pretty)(options "")(descr ""))
9 | (lib (name josh-passives-smt)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-passives-smt.pretty)(options "")(descr ""))
10 | (lib (name josh-rf)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-rf.pretty)(options "")(descr ""))
11 | (lib (name josh-soic-sot-etc)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-soic-sot-etc.pretty)(options "")(descr ""))
12 | (lib (name josh-test-point)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-test-point.pretty)(options "")(descr ""))
13 | (lib (name josh-keyboard)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-keyboard.pretty)(options "")(descr ""))
14 | )
15 |
--------------------------------------------------------------------------------
/Hardware/0.6/sym-lib-table:
--------------------------------------------------------------------------------
1 | (sym_lib_table
2 | (lib (name josh-ic)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-ic.lib)(options "")(descr ""))
3 | (lib (name josh-led)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-led.lib)(options "")(descr ""))
4 | (lib (name josh-logic)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-logic.lib)(options "")(descr ""))
5 | (lib (name josh-mechnanical)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-mechnanical.lib)(options "")(descr ""))
6 | (lib (name josh-memory)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-memory.lib)(options "")(descr ""))
7 | (lib (name josh-oscillator)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-oscillator.lib)(options "")(descr ""))
8 | (lib (name josh-passive)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-passive.lib)(options "")(descr ""))
9 | (lib (name josh-power)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-power.lib)(options "")(descr ""))
10 | (lib (name josh-rf)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-rf.lib)(options "")(descr ""))
11 | (lib (name josh-connector)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-connector.lib)(options "")(descr ""))
12 | )
13 |
--------------------------------------------------------------------------------
/Hardware/0.7-hs/fp-lib-table:
--------------------------------------------------------------------------------
1 | (fp_lib_table
2 | (lib (name josh-buttons-switches)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-buttons-switches.pretty)(options "")(descr ""))
3 | (lib (name josh-connectors)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-connectors.pretty)(options "")(descr ""))
4 | (lib (name josh-dfn-qfn)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-dfn-qfn.pretty)(options "")(descr ""))
5 | (lib (name josh-led)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-led.pretty)(options "")(descr ""))
6 | (lib (name josh-logos)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-logos.pretty)(options "")(descr ""))
7 | (lib (name josh-mechanical)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-mechanical.pretty)(options "")(descr ""))
8 | (lib (name josh-oscillators)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-oscillators.pretty)(options "")(descr ""))
9 | (lib (name josh-passives-smt)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-passives-smt.pretty)(options "")(descr ""))
10 | (lib (name josh-rf)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-rf.pretty)(options "")(descr ""))
11 | (lib (name josh-soic-sot-etc)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-soic-sot-etc.pretty)(options "")(descr ""))
12 | (lib (name josh-test-point)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-test-point.pretty)(options "")(descr ""))
13 | (lib (name josh-keyboard)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-keyboard.pretty)(options "")(descr ""))
14 | )
15 |
--------------------------------------------------------------------------------
/Hardware/0.7-hs/sym-lib-table:
--------------------------------------------------------------------------------
1 | (sym_lib_table
2 | (lib (name josh-ic)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-ic.lib)(options "")(descr ""))
3 | (lib (name josh-led)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-led.lib)(options "")(descr ""))
4 | (lib (name josh-logic)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-logic.lib)(options "")(descr ""))
5 | (lib (name josh-mechnanical)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-mechnanical.lib)(options "")(descr ""))
6 | (lib (name josh-memory)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-memory.lib)(options "")(descr ""))
7 | (lib (name josh-oscillator)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-oscillator.lib)(options "")(descr ""))
8 | (lib (name josh-passive)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-passive.lib)(options "")(descr ""))
9 | (lib (name josh-power)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-power.lib)(options "")(descr ""))
10 | (lib (name josh-rf)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-rf.lib)(options "")(descr ""))
11 | (lib (name josh-connector)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-connector.lib)(options "")(descr ""))
12 | )
13 |
--------------------------------------------------------------------------------
/Hardware/0.7/fp-lib-table:
--------------------------------------------------------------------------------
1 | (fp_lib_table
2 | (lib (name josh-buttons-switches)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-buttons-switches.pretty)(options "")(descr ""))
3 | (lib (name josh-connectors)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-connectors.pretty)(options "")(descr ""))
4 | (lib (name josh-dfn-qfn)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-dfn-qfn.pretty)(options "")(descr ""))
5 | (lib (name josh-led)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-led.pretty)(options "")(descr ""))
6 | (lib (name josh-logos)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-logos.pretty)(options "")(descr ""))
7 | (lib (name josh-mechanical)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-mechanical.pretty)(options "")(descr ""))
8 | (lib (name josh-oscillators)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-oscillators.pretty)(options "")(descr ""))
9 | (lib (name josh-passives-smt)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-passives-smt.pretty)(options "")(descr ""))
10 | (lib (name josh-rf)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-rf.pretty)(options "")(descr ""))
11 | (lib (name josh-soic-sot-etc)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-soic-sot-etc.pretty)(options "")(descr ""))
12 | (lib (name josh-test-point)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-test-point.pretty)(options "")(descr ""))
13 | (lib (name josh-keyboard)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-keyboard.pretty)(options "")(descr ""))
14 | )
15 |
--------------------------------------------------------------------------------
/Hardware/0.7/sym-lib-table:
--------------------------------------------------------------------------------
1 | (sym_lib_table
2 | (lib (name josh-ic)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-ic.lib)(options "")(descr ""))
3 | (lib (name josh-led)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-led.lib)(options "")(descr ""))
4 | (lib (name josh-logic)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-logic.lib)(options "")(descr ""))
5 | (lib (name josh-mechnanical)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-mechnanical.lib)(options "")(descr ""))
6 | (lib (name josh-memory)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-memory.lib)(options "")(descr ""))
7 | (lib (name josh-oscillator)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-oscillator.lib)(options "")(descr ""))
8 | (lib (name josh-passive)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-passive.lib)(options "")(descr ""))
9 | (lib (name josh-power)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-power.lib)(options "")(descr ""))
10 | (lib (name josh-rf)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-rf.lib)(options "")(descr ""))
11 | (lib (name josh-connector)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-connector.lib)(options "")(descr ""))
12 | )
13 |
--------------------------------------------------------------------------------
/Hardware/1.0-hs/Hub16.csv:
--------------------------------------------------------------------------------
1 | Qty,Reference(s),Value,Footprint,MPN,DigiKey,LCSC,Manufacturer,DNP,Notes,Substitue Allowed?
2 | 2,"C1, C12",10u,Capacitor_SMD:C_0603_1608Metric,CL10A106MP8NNNC,1276-1871-1-ND,C85713,Samsung Electro-Mechanics,,,Y - X5R or better
3 | 27,"C10, C11, C13, C14, C15, C16, C21, C23, C24, C25, C26, C27, C28, C29, C30, C31, C32, C33, C34, C35, C36, C37, C38, C6, C7, C8, C9",100n,Capacitor_SMD:C_0603_1608Metric,CL10B104KB8NNNC,1276-1000-1-ND,C1591,Samsung Electro-Mechanics,,,Y - X5R or better
4 | 4,"C17, C18, C2, C3",15p,Capacitor_SMD:C_0603_1608Metric,CL10C150JB8NNNC,1276-1296-2-ND,C1644,Samsung Electro-Mechanics,,,Y - NP0 / C0G
5 | 5,"C19, C20, C22, C4, C5",1u,Capacitor_SMD:C_0603_1608Metric,CL10A105MP8NNNC ,1276-1866-1-ND ,C29936,Samsung Electro-Mechanics,,,Y - X5R or better
6 | 1,D1,LED,LED_SMD:LED_0603_1608Metric,OSK40603C1E,,C268294,OptoSupply,,,Y - Any Pink / Purple
7 | 11,"D10, D16, D2, D22, D23, D29, D3, D30, D31, D32, D4",WS2812B,LED_SMD:LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm,WS2812B,1528-1104-ND,C114586,Worldsemi,,Black only,N
8 | 16,"D11, D12, D13, D14, D17, D18, D19, D20, D24, D25, D26, D27, D5, D6, D7, D8",1N4148,Diode_SMD:D_SOD-123,1N4148W-7-F,1N4148W-FDICT-ND,C83528,Diodes Inc,,,Y - Any 1N4148
9 | 1,F1,1A,josh-passives-smt:Fuse_0805_2012Metric,0805L100WR,F2774CT-ND,C80270,Littelfuse,,,Y - 1A hold / >1.5A trip
10 | 3,"F2, F3, F4",500mA,josh-passives-smt:Fuse_0805_2012Metric,0805L050WR,F2772CT-ND,C207022,Littelfuse,,,Y - 500mA hold / 1A trip
11 | 5,"FB1, FB2, FB3, FB4, FB5",600R,josh-passives-smt:Ferrite_Bead_0603,BLM18KG601SN1D, 490-5258-1-ND ,C85833,Murata,,,"Y - 600R, > 1A current"
12 | 4,"H1, H2, H3, H4",MH-M3,MountingHole:MountingHole_3.2mm_M3_ISO14580,,,,,DNP,,
13 | 4,"J1, J3, J4, J5",USB_C_Receptacle_USB2.0,josh-connectors:USB_C_U262-161N-4BVC11,U262-161N-4BVC11,,C319148,XKB Enterprise,,Cannot source from DigiKey,Y - Footprint / pinout compatiable
14 | 1,J2,AVR-ISP-6,josh-connectors:AVR_PROG_2.54_THT,,,,,DNP,,
15 | 1,JP11,LED_ON,Jumper:SolderJumper-2_P1.3mm_Bridged_RoundedPad1.0x1.5mm,,,,,DNP,,
16 | 16,"K1, K11, K12, K13, K14, K16, K17, K18, K19, K2, K3, K4, K6, K7, K8, K9",Kailh Hotswap Socket,josh-keyboard:Kailh_Hotswap_1U,CPG151101S11,,,Kailh Switch,,Not available from Digikey / LCSC,N
17 | 1,LOGO1,Josh-Logo,josh-logos:josh-johnson-logo-17x3,,,,,DNP,,
18 | 1,LOGO2,Josh-Details,josh-logos:josh-details,,,,,DNP,,
19 | 1,LOGO3,Board-Details,josh-logos:board-title,,,,,DNP,,
20 | 1,LOGO4,Logo_Open_Hardware_Small,josh-logos:OSHW-Logo2_9.8x8mm_Mask,,,,,DNP,,
21 | 3,"R1, R3, R4",5K1,Resistor_SMD:R_0603_1608Metric,CR0603-JW-512ELF ,118-CR0603-JW-512ELFCT-ND ,C14677,Bourns,,LCSC: Substitute PN,Y - Same spec
22 | 7,"R10, R11, R12, R2, R5, R8, R9",10K,Resistor_SMD:R_0603_1608Metric,CR0603-JW-103ELF ,CR0603-JW-103ELFCT-ND ,C144116,Bourns,,LCSC: Substitute PN,Y - Same spec
23 | 1,R14,649R,Resistor_SMD:R_0603_1608Metric,MCR03ERTF6490 ,RHM649CFCT-ND ,C403314,Rohm Semiconductor,,LCSC: Substitute PN,Y - Same spec
24 | 2,"R6, R7",22R,Resistor_SMD:R_0603_1608Metric,CR0603-JW-220ELF ,CR0603-JW-220ELFCT-ND ,C203424,Bourns,,LCSC: Substitute PN,Y - Same spec
25 | 2,"RN1, RN3",10K,Resistor_SMD:R_Array_Convex_4x0603,RAVF164DJT10K0,RAVF164DJT10K0CT-ND,C107374,Bourns,,LCSC: Substitute PN,Y - Same spec
26 | 1,RN5,10K,Resistor_SMD:R_Array_Convex_4x0603,RAVF164DJT10K0,RAVF164DJT10K0CT-ND,C107374,Bourns,,LCSC: Substitute PN,Y - Same spec
27 | 1,SW1,EVQPUL,josh-buttons-switches:Panasonic_EVQPUL_EVQPUC,EVQ-PUL02K,P10853SCT-ND,C397351,Panasonic,,LCSC: Substitute PN,Y - Same footprint
28 | 2,"SW2, SW3",EC11 Encoder,josh-buttons-switches:RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm_CircularMountingHoles,PEC11L-4120F-S0020,PEC11L-4120F-S0020-ND,,Bourns,DNP,,Y - 20 PPR
29 | 4,"U1, U4, U5, U6",USBLC6-2SC6,Package_TO_SOT_SMD:SOT-23-6,USBLC6-2SC6,497-5235-1-ND ,C7519,STMicroelectronics,,,N
30 | 1,U2,ATMEGA32U4,josh-dfn-qfn:QFN-44-1EP_7x7mm_P0.5mm_EP5.2x5.2mm_ThermalVias,ATMEGA32U4-MU,ATMEGA32U4-MU-ND,C45874,Microchip/Atmel,,,N
31 | 1,U3,CY7C65632-28LTXCT,josh-dfn-qfn:QFN-28-1EP_5x5mm_P0.5mm_EP3.35x3.35mm_ThermalVias,CY7C65632-28LTXCT,428-3156-1-ND,C466886,Cypress Semiconductor,,,N
32 | 1,Y1,16MHz,josh-oscillators:Crystal_SMD_3225-4Pin_3.2x2.5mm,ABM8-16.000MHZ-10-1-U-T,535-9675-6-ND,C164044,Abracon LLC,,LCSC: Substitute PN,"Y - 16 MHz, 10/12pF"
33 | 1,Y2,12MHz,josh-oscillators:Crystal_SMD_3225-4Pin_3.2x2.5mm,ABM8-12.000MHZ-12-B1U-T,535-14962-6-ND,C164041,Abracon LLC,,LCSC: Substitute PN,"Y - 12 MHz, 10/12pF"
34 |
--------------------------------------------------------------------------------
/Hardware/1.0-hs/fp-lib-table:
--------------------------------------------------------------------------------
1 | (fp_lib_table
2 | (lib (name josh-buttons-switches)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-buttons-switches.pretty)(options "")(descr ""))
3 | (lib (name josh-connectors)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-connectors.pretty)(options "")(descr ""))
4 | (lib (name josh-dfn-qfn)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-dfn-qfn.pretty)(options "")(descr ""))
5 | (lib (name josh-led)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-led.pretty)(options "")(descr ""))
6 | (lib (name josh-logos)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-logos.pretty)(options "")(descr ""))
7 | (lib (name josh-mechanical)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-mechanical.pretty)(options "")(descr ""))
8 | (lib (name josh-oscillators)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-oscillators.pretty)(options "")(descr ""))
9 | (lib (name josh-passives-smt)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-passives-smt.pretty)(options "")(descr ""))
10 | (lib (name josh-rf)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-rf.pretty)(options "")(descr ""))
11 | (lib (name josh-soic-sot-etc)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-soic-sot-etc.pretty)(options "")(descr ""))
12 | (lib (name josh-test-point)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-test-point.pretty)(options "")(descr ""))
13 | (lib (name josh-keyboard)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-keyboard.pretty)(options "")(descr ""))
14 | )
15 |
--------------------------------------------------------------------------------
/Hardware/1.0-hs/sym-lib-table:
--------------------------------------------------------------------------------
1 | (sym_lib_table
2 | (lib (name josh-ic)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-ic.lib)(options "")(descr ""))
3 | (lib (name josh-led)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-led.lib)(options "")(descr ""))
4 | (lib (name josh-logic)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-logic.lib)(options "")(descr ""))
5 | (lib (name josh-mechnanical)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-mechnanical.lib)(options "")(descr ""))
6 | (lib (name josh-memory)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-memory.lib)(options "")(descr ""))
7 | (lib (name josh-oscillator)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-oscillator.lib)(options "")(descr ""))
8 | (lib (name josh-passive)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-passive.lib)(options "")(descr ""))
9 | (lib (name josh-power)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-power.lib)(options "")(descr ""))
10 | (lib (name josh-rf)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-rf.lib)(options "")(descr ""))
11 | (lib (name josh-connector)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-connector.lib)(options "")(descr ""))
12 | )
13 |
--------------------------------------------------------------------------------
/Hardware/1.0.1-hs/fp-lib-table:
--------------------------------------------------------------------------------
1 | (fp_lib_table
2 | (lib (name josh-buttons-switches)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-buttons-switches.pretty)(options "")(descr ""))
3 | (lib (name josh-connectors)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-connectors.pretty)(options "")(descr ""))
4 | (lib (name josh-dfn-qfn)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-dfn-qfn.pretty)(options "")(descr ""))
5 | (lib (name josh-led)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-led.pretty)(options "")(descr ""))
6 | (lib (name josh-logos)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-logos.pretty)(options "")(descr ""))
7 | (lib (name josh-mechanical)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-mechanical.pretty)(options "")(descr ""))
8 | (lib (name josh-oscillators)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-oscillators.pretty)(options "")(descr ""))
9 | (lib (name josh-passives-smt)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-passives-smt.pretty)(options "")(descr ""))
10 | (lib (name josh-rf)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-rf.pretty)(options "")(descr ""))
11 | (lib (name josh-soic-sot-etc)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-soic-sot-etc.pretty)(options "")(descr ""))
12 | (lib (name josh-test-point)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-test-point.pretty)(options "")(descr ""))
13 | (lib (name josh-keyboard)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-keyboard.pretty)(options "")(descr ""))
14 | )
15 |
--------------------------------------------------------------------------------
/Hardware/1.0.1-hs/sym-lib-table:
--------------------------------------------------------------------------------
1 | (sym_lib_table
2 | (lib (name josh-ic)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-ic.lib)(options "")(descr ""))
3 | (lib (name josh-led)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-led.lib)(options "")(descr ""))
4 | (lib (name josh-logic)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-logic.lib)(options "")(descr ""))
5 | (lib (name josh-mechnanical)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-mechnanical.lib)(options "")(descr ""))
6 | (lib (name josh-memory)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-memory.lib)(options "")(descr ""))
7 | (lib (name josh-oscillator)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-oscillator.lib)(options "")(descr ""))
8 | (lib (name josh-passive)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-passive.lib)(options "")(descr ""))
9 | (lib (name josh-power)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-power.lib)(options "")(descr ""))
10 | (lib (name josh-rf)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-rf.lib)(options "")(descr ""))
11 | (lib (name josh-connector)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-connector.lib)(options "")(descr ""))
12 | )
13 |
--------------------------------------------------------------------------------
/Hardware/1.0/fp-lib-table:
--------------------------------------------------------------------------------
1 | (fp_lib_table
2 | (lib (name josh-buttons-switches)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-buttons-switches.pretty)(options "")(descr ""))
3 | (lib (name josh-connectors)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-connectors.pretty)(options "")(descr ""))
4 | (lib (name josh-dfn-qfn)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-dfn-qfn.pretty)(options "")(descr ""))
5 | (lib (name josh-led)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-led.pretty)(options "")(descr ""))
6 | (lib (name josh-logos)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-logos.pretty)(options "")(descr ""))
7 | (lib (name josh-mechanical)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-mechanical.pretty)(options "")(descr ""))
8 | (lib (name josh-oscillators)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-oscillators.pretty)(options "")(descr ""))
9 | (lib (name josh-passives-smt)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-passives-smt.pretty)(options "")(descr ""))
10 | (lib (name josh-rf)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-rf.pretty)(options "")(descr ""))
11 | (lib (name josh-soic-sot-etc)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-soic-sot-etc.pretty)(options "")(descr ""))
12 | (lib (name josh-test-point)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-test-point.pretty)(options "")(descr ""))
13 | (lib (name josh-keyboard)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-keyboard.pretty)(options "")(descr ""))
14 | )
15 |
--------------------------------------------------------------------------------
/Hardware/1.0/sym-lib-table:
--------------------------------------------------------------------------------
1 | (sym_lib_table
2 | (lib (name josh-ic)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-ic.lib)(options "")(descr ""))
3 | (lib (name josh-led)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-led.lib)(options "")(descr ""))
4 | (lib (name josh-logic)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-logic.lib)(options "")(descr ""))
5 | (lib (name josh-mechnanical)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-mechnanical.lib)(options "")(descr ""))
6 | (lib (name josh-memory)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-memory.lib)(options "")(descr ""))
7 | (lib (name josh-oscillator)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-oscillator.lib)(options "")(descr ""))
8 | (lib (name josh-passive)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-passive.lib)(options "")(descr ""))
9 | (lib (name josh-power)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-power.lib)(options "")(descr ""))
10 | (lib (name josh-rf)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-rf.lib)(options "")(descr ""))
11 | (lib (name josh-connector)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-connector.lib)(options "")(descr ""))
12 | )
13 |
--------------------------------------------------------------------------------
/Mechanicals/plate/fp-lib-table:
--------------------------------------------------------------------------------
1 | (fp_lib_table
2 | (lib (name keyboard)(type KiCad)(uri C:/Users/jonno/Dropbox/Projects/MacroKeyboard/Hardware/Libraries/keyboard.pretty)(options "")(descr ""))
3 | )
4 |
--------------------------------------------------------------------------------
/Mechanicals/plate/plate-gerbers.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Mechanicals/plate/plate-gerbers.zip
--------------------------------------------------------------------------------
/Mechanicals/plate/topCover.pro:
--------------------------------------------------------------------------------
1 | update=22/05/2015 07:44:53
2 | version=1
3 | last_client=kicad
4 | [general]
5 | version=1
6 | RootSch=
7 | BoardNm=
8 | [pcbnew]
9 | version=1
10 | LastNetListRead=
11 | UseCmpFile=1
12 | PadDrill=0.600000000000
13 | PadDrillOvalY=0.600000000000
14 | PadSizeH=1.500000000000
15 | PadSizeV=1.500000000000
16 | PcbTextSizeV=1.500000000000
17 | PcbTextSizeH=1.500000000000
18 | PcbTextThickness=0.300000000000
19 | ModuleTextSizeV=1.000000000000
20 | ModuleTextSizeH=1.000000000000
21 | ModuleTextSizeThickness=0.150000000000
22 | SolderMaskClearance=0.000000000000
23 | SolderMaskMinWidth=0.000000000000
24 | DrawSegmentWidth=0.200000000000
25 | BoardOutlineThickness=0.100000000000
26 | ModuleOutlineThickness=0.150000000000
27 | [cvpcb]
28 | version=1
29 | NetIExt=net
30 | [eeschema]
31 | version=1
32 | LibDir=
33 | [eeschema/libraries]
34 |
--------------------------------------------------------------------------------
/Mechanicals/plate/topCover.sch:
--------------------------------------------------------------------------------
1 | EESchema Schematic File Version 2
2 | EELAYER 25 0
3 | EELAYER END
4 | $EndSCHEMATC
5 |
--------------------------------------------------------------------------------
/Production/1.0-hs/.~lock.bom.csv#:
--------------------------------------------------------------------------------
1 | ,josh,desktop,11.12.2020 22:35,file:///home/josh/snap/libreoffice/196/.config/libreoffice/4;
--------------------------------------------------------------------------------
/Production/1.0-hs/Gerbers.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Production/1.0-hs/Gerbers.zip
--------------------------------------------------------------------------------
/Production/1.0-hs/Hub16-Acrylic.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Production/1.0-hs/Hub16-Acrylic.zip
--------------------------------------------------------------------------------
/Production/1.0-hs/bom.csv:
--------------------------------------------------------------------------------
1 | Qty,Reference(s),Value,Footprint,MPN,DigiKey,LCSC,Manufacturer,DNP,Notes,Substitue Allowed?
2 | 2,"C1, C12",10u,Capacitor_SMD:C_0603_1608Metric,CL10A106MP8NNNC,1276-1871-1-ND,C85713,Samsung Electro-Mechanics,,,Y - X5R or better
3 | 27,"C10, C11, C13, C14, C15, C16, C21, C23, C24, C25, C26, C27, C28, C29, C30, C31, C32, C33, C34, C35, C36, C37, C38, C6, C7, C8, C9",100n,Capacitor_SMD:C_0603_1608Metric,CL10B104KB8NNNC,1276-1000-1-ND,C1591,Samsung Electro-Mechanics,,,Y - X5R or better
4 | 4,"C17, C18, C2, C3",15p,Capacitor_SMD:C_0603_1608Metric,CL10C150JB8NNNC,1276-1296-2-ND,C1644,Samsung Electro-Mechanics,,,Y - NP0 / C0G
5 | 5,"C19, C20, C22, C4, C5",1u,Capacitor_SMD:C_0603_1608Metric,CL10A105MP8NNNC ,1276-1866-1-ND ,C29936,Samsung Electro-Mechanics,,,Y - X5R or better
6 | 1,D1,LED,LED_SMD:LED_0603_1608Metric,OSK40603C1E,,C268294,OptoSupply,,,Y - Any Pink / Purple
7 | 11,"D10, D16, D2, D22, D23, D29, D3, D30, D31, D32, D4",WS2812B,LED_SMD:LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm,WS2812B,1528-1104-ND,C114586,Worldsemi,,Black only,N
8 | 16,"D11, D12, D13, D14, D17, D18, D19, D20, D24, D25, D26, D27, D5, D6, D7, D8",1N4148,Diode_SMD:D_SOD-123,1N4148W-7-F,1N4148W-FDICT-ND,C83528,Diodes Inc,,,Y - Any 1N4148
9 | 1,F1,1A,josh-passives-smt:Fuse_0805_2012Metric,0805L100WR,F2774CT-ND,C80270,Littelfuse,,,Y - 1A hold / >1.5A trip
10 | 3,"F2, F3, F4",500mA,josh-passives-smt:Fuse_0805_2012Metric,0805L050WR,F2772CT-ND,C207022,Littelfuse,,,Y - 500mA hold / 1A trip
11 | 5,"FB1, FB2, FB3, FB4, FB5",600R,josh-passives-smt:Ferrite_Bead_0603,BLM18KG601SN1D, 490-5258-1-ND ,C85833,Murata,,,"Y - 600R, > 1A current"
12 | 4,"H1, H2, H3, H4",MH-M3,MountingHole:MountingHole_3.2mm_M3_ISO14580,,,,,DNP,,
13 | 4,"J1, J3, J4, J5",USB_C_Receptacle_USB2.0,josh-connectors:USB_C_U262-161N-4BVC11,U262-161N-4BVC11,,C319148,XKB Enterprise,,Cannot source from DigiKey,Y - Footprint / pinout compatiable
14 | 1,J2,AVR-ISP-6,josh-connectors:AVR_PROG_2.54_THT,,,,,DNP,,
15 | 1,JP11,LED_ON,Jumper:SolderJumper-2_P1.3mm_Bridged_RoundedPad1.0x1.5mm,,,,,DNP,,
16 | 16,"K1, K11, K12, K13, K14, K16, K17, K18, K19, K2, K3, K4, K6, K7, K8, K9",Kailh Hotswap Socket,josh-keyboard:Kailh_Hotswap_1U,CPG151101S11,,,Kailh Switch,,Not available from Digikey / LCSC,N
17 | 1,LOGO1,Josh-Logo,josh-logos:josh-johnson-logo-17x3,,,,,DNP,,
18 | 1,LOGO2,Josh-Details,josh-logos:josh-details,,,,,DNP,,
19 | 1,LOGO3,Board-Details,josh-logos:board-title,,,,,DNP,,
20 | 1,LOGO4,Logo_Open_Hardware_Small,josh-logos:OSHW-Logo2_9.8x8mm_Mask,,,,,DNP,,
21 | 3,"R1, R3, R4",5K1,Resistor_SMD:R_0603_1608Metric,CR0603-JW-512ELF ,118-CR0603-JW-512ELFCT-ND ,C14677,Bourns,,LCSC: Substitute PN,Y - Same spec
22 | 7,"R10, R11, R12, R2, R5, R8, R9",10K,Resistor_SMD:R_0603_1608Metric,CR0603-JW-103ELF ,CR0603-JW-103ELFCT-ND ,C144116,Bourns,,LCSC: Substitute PN,Y - Same spec
23 | 1,R14,649R,Resistor_SMD:R_0603_1608Metric,MCR03ERTF6490 ,RHM649CFCT-ND ,C403314,Rohm Semiconductor,,LCSC: Substitute PN,Y - Same spec
24 | 2,"R6, R7",22R,Resistor_SMD:R_0603_1608Metric,CR0603-JW-220ELF ,CR0603-JW-220ELFCT-ND ,C203424,Bourns,,LCSC: Substitute PN,Y - Same spec
25 | 2,"RN1, RN3",10K,Resistor_SMD:R_Array_Convex_4x0603,RAVF164DJT10K0,RAVF164DJT10K0CT-ND,C107374,Bourns,,LCSC: Substitute PN,Y - Same spec
26 | 1,RN5,10K,Resistor_SMD:R_Array_Convex_4x0603,RAVF164DJT10K0,RAVF164DJT10K0CT-ND,C107374,Bourns,,LCSC: Substitute PN,Y - Same spec
27 | 1,SW1,EVQPUL,josh-buttons-switches:Panasonic_EVQPUL_EVQPUC,EVQ-PUL02K,P10853SCT-ND,C397351,Panasonic,,LCSC: Substitute PN,Y - Same footprint
28 | 2,"SW2, SW3",EC11 Encoder,josh-buttons-switches:RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm_CircularMountingHoles,PEC11L-4120F-S0020,PEC11L-4120F-S0020-ND,,Bourns,DNP,,Y - 20 PPR
29 | 4,"U1, U4, U5, U6",USBLC6-2SC6,Package_TO_SOT_SMD:SOT-23-6,USBLC6-2SC6,497-5235-1-ND ,C7519,STMicroelectronics,,,N
30 | 1,U2,ATMEGA32U4,josh-dfn-qfn:QFN-44-1EP_7x7mm_P0.5mm_EP5.2x5.2mm_ThermalVias,ATMEGA32U4-MU,ATMEGA32U4-MU-ND,C45874,Microchip/Atmel,,,N
31 | 1,U3,CY7C65632-28LTXCT,josh-dfn-qfn:QFN-28-1EP_5x5mm_P0.5mm_EP3.35x3.35mm_ThermalVias,CY7C65632-28LTXCT,428-3156-1-ND,C466886,Cypress Semiconductor,,,N
32 | 1,Y1,16MHz,josh-oscillators:Crystal_SMD_3225-4Pin_3.2x2.5mm,ABM8-16.000MHZ-10-1-U-T,535-9675-6-ND,C164044,Abracon LLC,,LCSC: Substitute PN,"Y - 16 MHz, 10/12pF"
33 | 1,Y2,12MHz,josh-oscillators:Crystal_SMD_3225-4Pin_3.2x2.5mm,ABM8-12.000MHZ-12-B1U-T,535-14962-6-ND,C164041,Abracon LLC,,LCSC: Substitute PN,"Y - 12 MHz, 10/12pF"
34 |
--------------------------------------------------------------------------------
/Production/1.0-hs/fab-notes.txt:
--------------------------------------------------------------------------------
1 | PCB Fabrication
2 |
3 | PCB is two layers, FR4 material, finished thickness 1.6mm.
4 | Matte black soldermask, white silkscreen. All vias to be tented.
5 | Lead free HASL surface finish.
6 | No manufacturer markings (logo / UL / date code / RoHS etc) are to be placed on the board.
7 | All boards are to be 100% electically tested.
8 | PCB's are to be panelised with mouse bites, in a way which ensures smooth edges on all sides after depanelisation.
9 | Production gerbers are to be approved by Josh before fabrication begins.
10 |
11 | Assembly Instructions
12 |
13 | PCBs are to be assembled using a lead free process.
14 | BOM items with "DNP" are not to be purchased or assembled.
15 | Substutions are allowed where noted on BOM, ensuring parts meet specifications.
16 | Boards are to be depanlised, edges smoothed, and placed individually in resealable ESD bags.
17 |
18 | If there are any discrepancies or questions during the process, please stop work and ask Josh.
--------------------------------------------------------------------------------
/Production/1.0-hs/photo-close.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Production/1.0-hs/photo-close.JPG
--------------------------------------------------------------------------------
/Production/1.0-hs/photo.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Production/1.0-hs/photo.JPG
--------------------------------------------------------------------------------
/Production/1.0-hs/plate-gerbers.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Production/1.0-hs/plate-gerbers.zip
--------------------------------------------------------------------------------
/Production/1.0-hs/render.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Production/1.0-hs/render.png
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Hub16
2 |
3 | 
4 |
5 | Hub16 is a macropad with a bunch of features you never knew you needed. They include:
6 |
7 | - 16 Cherry MX compatible keys, along with switches in each encoder.
8 | - Two rotary encoders, enabling intuitive controls for a wide range of tools including CAD and photo / video editing.
9 | - Inbuilt USB 2.0 Hub with Type-C connectors, allowing connection to other keyboards, memory sticks, wireless receivers and more!
10 | - VIA and QMK compatibility, including a "macro" mode enabling the keys to be dynamically remapped on a host computer.
11 | - 11 addressable RGB LEDs to display state, or just light your desk up.
12 |
13 | ## Project Status
14 |
15 | Project is stable, with assembled boards available at [Tindie](https://www.tindie.com/products/joshajohnson/hub16-programmable-macro-keyboard/).
16 |
17 | 
18 |
19 | ## Getting Started Guide
20 |
21 | - [Keyboard Assembly](Documents/keyboard-assembly.md)
22 | - [VIA Keymap Configuration](Documents/via.md)
23 | - [Macro Configuration](Documents/macro.md)
24 |
25 | ## Detailed Info
26 |
27 | - [Advanced Firmware / Software Configuration](Documents/advanced-config.md)
28 | - [PCB SMT Assembly Guide](Documents/pcba.md)
29 | - [Enclosure Manufacturing](Documents/enclosure.md)
30 |
31 | ### Repo Contents
32 |
33 | - `Documents` contains all documentation and images for the project.
34 | - `Firmware` contains both the source and precompiled binaries for Hub16.
35 | - `Hardware` contains the KiCad design files for the keyboard.
36 | - `josh-kicad-lib` is my personal KiCad parts library which contains many of the parts used.
37 | - `Mechanicals` contain the plate and case design for Hub16.
38 | - `Production` contains all the files required to produce the PCB. It also contains test scripts and jigs.
39 | - `Software` contains all the VIA config, along with template script to use Hub16 as a macropad with software on your computer.
40 |
41 | ### Notes on the USB Hub
42 |
43 | The hub is a four port USB 2.0 Hub with Type-C connectors, aimed at allowing connection of keyboards, mice, memory sticks, wireless receivers, and other small devices (including a second Hub16!) to your computer.
44 |
45 | Due to cost and space constraints, the hub has some limitations. The hub **is not**:
46 |
47 | - USB 3.x, Power Delivery, Thunderbolt, DisplayPort, etc compatible.
48 | - Designed to charge your phone quickly. Only 100mA is guaranteed per port.
49 | - Designed to work with power hungry devices such as spinning hard drives.
50 | - Guaranteed to provide full USB 2.0 speeds and performance on all ports.
51 |
52 | Might you be able to charge your phone whilst copying files at full speed of a spinning hard drive over a long cable? Maybe. However Hub16 is a macropad first, USB hub second, so if you are looking for a high performance device I'd suggest picking up a dedicated USB hub and just using Hub16 as a macropad.
53 |
54 | ### Errata
55 |
56 | - Boards assembled in 2021 will have an issue with VIA where the LED controls are incorrect. [Follow these instructions to resolve](Documents/via.md#install-via)
57 | - Boards purchased between June 12 and June 22 2020 will not go into the bootloader upon resting from software. Workaround: reset board with physical reset button on bottom of PCB. Fix: reflash the bootloader following [these instructions](Documents/advanced-config.md#Bootloader-Flashing).
58 | - Firmware builds prior to 27th June do not continually send characters when the encoders are depressed.
59 | - Firmware builds prior to 9th June have issues with the bottom right key `p` not functioning correctly.
60 | - Some rotary encoders output flipped signals (clockwise instead of counterclockwise), if after assembly your encoders appear to be sending the wrong signals, comment in line 84 in [config.h](Firmware/hub16/config.h), or alter the setting in your [software](Software).
61 |
62 | If you have any questions or comments please get in touch. Asking in the [No Sharp Corners Discord](nosharpcorners.com) Discord or opening an issue / pull request will result in the quickest response.
63 |
--------------------------------------------------------------------------------
/Software/hub16-autokey/.enc1-anticlockwise1.json:
--------------------------------------------------------------------------------
1 | {
2 | "type": "script",
3 | "description": "enc1-anticlockwise",
4 | "store": {},
5 | "modes": [
6 | 3
7 | ],
8 | "usageCount": 38,
9 | "prompt": false,
10 | "omitTrigger": false,
11 | "showInTrayMenu": false,
12 | "abbreviation": {
13 | "abbreviations": [],
14 | "backspace": true,
15 | "ignoreCase": false,
16 | "immediate": false,
17 | "triggerInside": false,
18 | "wordChars": "[\\w]"
19 | },
20 | "hotkey": {
21 | "modifiers": [
22 | ""
23 | ],
24 | "hotKey": "r"
25 | },
26 | "filter": {
27 | "regex": null,
28 | "isRecursive": false
29 | }
30 | }
--------------------------------------------------------------------------------
/Software/hub16-autokey/.enc1-button.json:
--------------------------------------------------------------------------------
1 | {
2 | "type": "script",
3 | "description": "enc1-button",
4 | "store": {},
5 | "modes": [
6 | 3
7 | ],
8 | "usageCount": 6,
9 | "prompt": false,
10 | "omitTrigger": false,
11 | "showInTrayMenu": false,
12 | "abbreviation": {
13 | "abbreviations": [],
14 | "backspace": true,
15 | "ignoreCase": false,
16 | "immediate": false,
17 | "triggerInside": false,
18 | "wordChars": "[\\w]"
19 | },
20 | "hotkey": {
21 | "modifiers": [
22 | ""
23 | ],
24 | "hotKey": "s"
25 | },
26 | "filter": {
27 | "regex": null,
28 | "isRecursive": false
29 | }
30 | }
--------------------------------------------------------------------------------
/Software/hub16-autokey/.enc1-clockwise.json:
--------------------------------------------------------------------------------
1 | {
2 | "type": "script",
3 | "description": "enc1-clockwise",
4 | "store": {},
5 | "modes": [
6 | 3
7 | ],
8 | "usageCount": 18,
9 | "prompt": false,
10 | "omitTrigger": false,
11 | "showInTrayMenu": false,
12 | "abbreviation": {
13 | "abbreviations": [],
14 | "backspace": true,
15 | "ignoreCase": false,
16 | "immediate": false,
17 | "triggerInside": false,
18 | "wordChars": "[\\w]"
19 | },
20 | "hotkey": {
21 | "modifiers": [
22 | ""
23 | ],
24 | "hotKey": "q"
25 | },
26 | "filter": {
27 | "regex": null,
28 | "isRecursive": false
29 | }
30 | }
--------------------------------------------------------------------------------
/Software/hub16-autokey/.enc2-anticlockwise.json:
--------------------------------------------------------------------------------
1 | {
2 | "type": "script",
3 | "description": "enc2-anticlockwise",
4 | "store": {},
5 | "modes": [
6 | 3
7 | ],
8 | "usageCount": 10,
9 | "prompt": false,
10 | "omitTrigger": false,
11 | "showInTrayMenu": false,
12 | "abbreviation": {
13 | "abbreviations": [],
14 | "backspace": true,
15 | "ignoreCase": false,
16 | "immediate": false,
17 | "triggerInside": false,
18 | "wordChars": "[\\w]"
19 | },
20 | "hotkey": {
21 | "modifiers": [
22 | ""
23 | ],
24 | "hotKey": "u"
25 | },
26 | "filter": {
27 | "regex": null,
28 | "isRecursive": false
29 | }
30 | }
--------------------------------------------------------------------------------
/Software/hub16-autokey/.enc2-button1.json:
--------------------------------------------------------------------------------
1 | {
2 | "type": "script",
3 | "description": "enc2-button",
4 | "store": {},
5 | "modes": [
6 | 3
7 | ],
8 | "usageCount": 1,
9 | "prompt": false,
10 | "omitTrigger": false,
11 | "showInTrayMenu": false,
12 | "abbreviation": {
13 | "abbreviations": [],
14 | "backspace": true,
15 | "ignoreCase": false,
16 | "immediate": false,
17 | "triggerInside": false,
18 | "wordChars": "[\\w]"
19 | },
20 | "hotkey": {
21 | "modifiers": [
22 | ""
23 | ],
24 | "hotKey": "v"
25 | },
26 | "filter": {
27 | "regex": null,
28 | "isRecursive": false
29 | }
30 | }
--------------------------------------------------------------------------------
/Software/hub16-autokey/.enc2-clockwise1.json:
--------------------------------------------------------------------------------
1 | {
2 | "type": "script",
3 | "description": "enc2-clockwise",
4 | "store": {},
5 | "modes": [
6 | 3
7 | ],
8 | "usageCount": 6,
9 | "prompt": false,
10 | "omitTrigger": false,
11 | "showInTrayMenu": false,
12 | "abbreviation": {
13 | "abbreviations": [],
14 | "backspace": true,
15 | "ignoreCase": false,
16 | "immediate": false,
17 | "triggerInside": false,
18 | "wordChars": "[\\w]"
19 | },
20 | "hotkey": {
21 | "modifiers": [
22 | ""
23 | ],
24 | "hotKey": "t"
25 | },
26 | "filter": {
27 | "regex": null,
28 | "isRecursive": false
29 | }
30 | }
--------------------------------------------------------------------------------
/Software/hub16-autokey/.folder.json:
--------------------------------------------------------------------------------
1 | {
2 | "usageCount": 0,
3 | "abbreviation": {
4 | "wordChars": "[\\w]",
5 | "abbreviations": [],
6 | "immediate": false,
7 | "ignoreCase": false,
8 | "backspace": true,
9 | "triggerInside": false
10 | },
11 | "modes": [],
12 | "title": "macro-keyboard-autokey",
13 | "hotkey": {
14 | "hotKey": null,
15 | "modifiers": []
16 | },
17 | "filter": {
18 | "regex": null,
19 | "isRecursive": false
20 | },
21 | "type": "folder",
22 | "showInTrayMenu": false
23 | }
--------------------------------------------------------------------------------
/Software/hub16-autokey/.key-1.json:
--------------------------------------------------------------------------------
1 | {
2 | "type": "script",
3 | "description": "key-1",
4 | "store": {},
5 | "modes": [
6 | 3
7 | ],
8 | "usageCount": 21,
9 | "prompt": false,
10 | "omitTrigger": false,
11 | "showInTrayMenu": false,
12 | "abbreviation": {
13 | "abbreviations": [],
14 | "backspace": true,
15 | "ignoreCase": false,
16 | "immediate": false,
17 | "triggerInside": false,
18 | "wordChars": "[\\w]"
19 | },
20 | "hotkey": {
21 | "modifiers": [
22 | ""
23 | ],
24 | "hotKey": "a"
25 | },
26 | "filter": {
27 | "regex": null,
28 | "isRecursive": false
29 | }
30 | }
--------------------------------------------------------------------------------
/Software/hub16-autokey/.key-10.json:
--------------------------------------------------------------------------------
1 | {
2 | "type": "script",
3 | "description": "key-10",
4 | "store": {},
5 | "modes": [
6 | 3
7 | ],
8 | "usageCount": 14,
9 | "prompt": false,
10 | "omitTrigger": false,
11 | "showInTrayMenu": false,
12 | "abbreviation": {
13 | "abbreviations": [],
14 | "backspace": true,
15 | "ignoreCase": false,
16 | "immediate": false,
17 | "triggerInside": false,
18 | "wordChars": "[\\w]"
19 | },
20 | "hotkey": {
21 | "modifiers": [
22 | ""
23 | ],
24 | "hotKey": "j"
25 | },
26 | "filter": {
27 | "regex": null,
28 | "isRecursive": false
29 | }
30 | }
--------------------------------------------------------------------------------
/Software/hub16-autokey/.key-11.json:
--------------------------------------------------------------------------------
1 | {
2 | "type": "script",
3 | "description": "key-11",
4 | "store": {},
5 | "modes": [
6 | 3
7 | ],
8 | "usageCount": 24,
9 | "prompt": false,
10 | "omitTrigger": false,
11 | "showInTrayMenu": false,
12 | "abbreviation": {
13 | "abbreviations": [],
14 | "backspace": true,
15 | "ignoreCase": false,
16 | "immediate": false,
17 | "triggerInside": false,
18 | "wordChars": "[\\w]"
19 | },
20 | "hotkey": {
21 | "modifiers": [
22 | ""
23 | ],
24 | "hotKey": "k"
25 | },
26 | "filter": {
27 | "regex": null,
28 | "isRecursive": false
29 | }
30 | }
--------------------------------------------------------------------------------
/Software/hub16-autokey/.key-12.json:
--------------------------------------------------------------------------------
1 | {
2 | "type": "script",
3 | "description": "key-12",
4 | "store": {},
5 | "modes": [
6 | 3
7 | ],
8 | "usageCount": 65,
9 | "prompt": false,
10 | "omitTrigger": false,
11 | "showInTrayMenu": false,
12 | "abbreviation": {
13 | "abbreviations": [],
14 | "backspace": true,
15 | "ignoreCase": false,
16 | "immediate": false,
17 | "triggerInside": false,
18 | "wordChars": "[\\w]"
19 | },
20 | "hotkey": {
21 | "modifiers": [
22 | ""
23 | ],
24 | "hotKey": "l"
25 | },
26 | "filter": {
27 | "regex": null,
28 | "isRecursive": false
29 | }
30 | }
--------------------------------------------------------------------------------
/Software/hub16-autokey/.key-13.json:
--------------------------------------------------------------------------------
1 | {
2 | "type": "script",
3 | "description": "key-13",
4 | "store": {},
5 | "modes": [
6 | 3
7 | ],
8 | "usageCount": 10,
9 | "prompt": false,
10 | "omitTrigger": false,
11 | "showInTrayMenu": false,
12 | "abbreviation": {
13 | "abbreviations": [],
14 | "backspace": true,
15 | "ignoreCase": false,
16 | "immediate": false,
17 | "triggerInside": false,
18 | "wordChars": "[\\w]"
19 | },
20 | "hotkey": {
21 | "modifiers": [
22 | ""
23 | ],
24 | "hotKey": "m"
25 | },
26 | "filter": {
27 | "regex": null,
28 | "isRecursive": false
29 | }
30 | }
--------------------------------------------------------------------------------
/Software/hub16-autokey/.key-14.json:
--------------------------------------------------------------------------------
1 | {
2 | "type": "script",
3 | "description": "key-14",
4 | "store": {},
5 | "modes": [
6 | 3
7 | ],
8 | "usageCount": 6,
9 | "prompt": false,
10 | "omitTrigger": false,
11 | "showInTrayMenu": false,
12 | "abbreviation": {
13 | "abbreviations": [],
14 | "backspace": true,
15 | "ignoreCase": false,
16 | "immediate": false,
17 | "triggerInside": false,
18 | "wordChars": "[\\w]"
19 | },
20 | "hotkey": {
21 | "modifiers": [
22 | ""
23 | ],
24 | "hotKey": "n"
25 | },
26 | "filter": {
27 | "regex": null,
28 | "isRecursive": false
29 | }
30 | }
--------------------------------------------------------------------------------
/Software/hub16-autokey/.key-151.json:
--------------------------------------------------------------------------------
1 | {
2 | "type": "script",
3 | "description": "key-15",
4 | "store": {},
5 | "modes": [
6 | 3
7 | ],
8 | "usageCount": 6,
9 | "prompt": false,
10 | "omitTrigger": false,
11 | "showInTrayMenu": false,
12 | "abbreviation": {
13 | "abbreviations": [],
14 | "backspace": true,
15 | "ignoreCase": false,
16 | "immediate": false,
17 | "triggerInside": false,
18 | "wordChars": "[\\w]"
19 | },
20 | "hotkey": {
21 | "modifiers": [
22 | ""
23 | ],
24 | "hotKey": "o"
25 | },
26 | "filter": {
27 | "regex": null,
28 | "isRecursive": false
29 | }
30 | }
--------------------------------------------------------------------------------
/Software/hub16-autokey/.key-2.json:
--------------------------------------------------------------------------------
1 | {
2 | "type": "script",
3 | "description": "key-2",
4 | "store": {},
5 | "modes": [
6 | 3
7 | ],
8 | "usageCount": 35,
9 | "prompt": false,
10 | "omitTrigger": false,
11 | "showInTrayMenu": false,
12 | "abbreviation": {
13 | "abbreviations": [],
14 | "backspace": true,
15 | "ignoreCase": false,
16 | "immediate": false,
17 | "triggerInside": false,
18 | "wordChars": "[\\w]"
19 | },
20 | "hotkey": {
21 | "modifiers": [
22 | ""
23 | ],
24 | "hotKey": "b"
25 | },
26 | "filter": {
27 | "regex": null,
28 | "isRecursive": false
29 | }
30 | }
--------------------------------------------------------------------------------
/Software/hub16-autokey/.key-3.json:
--------------------------------------------------------------------------------
1 | {
2 | "type": "script",
3 | "description": "key-3",
4 | "store": {},
5 | "modes": [
6 | 3
7 | ],
8 | "usageCount": 39,
9 | "prompt": false,
10 | "omitTrigger": false,
11 | "showInTrayMenu": false,
12 | "abbreviation": {
13 | "abbreviations": [],
14 | "backspace": true,
15 | "ignoreCase": false,
16 | "immediate": false,
17 | "triggerInside": false,
18 | "wordChars": "[\\w]"
19 | },
20 | "hotkey": {
21 | "modifiers": [
22 | ""
23 | ],
24 | "hotKey": "c"
25 | },
26 | "filter": {
27 | "regex": null,
28 | "isRecursive": false
29 | }
30 | }
--------------------------------------------------------------------------------
/Software/hub16-autokey/.key-4.json:
--------------------------------------------------------------------------------
1 | {
2 | "type": "script",
3 | "description": "key-4",
4 | "store": {},
5 | "modes": [
6 | 3
7 | ],
8 | "usageCount": 56,
9 | "prompt": false,
10 | "omitTrigger": false,
11 | "showInTrayMenu": false,
12 | "abbreviation": {
13 | "abbreviations": [],
14 | "backspace": true,
15 | "ignoreCase": false,
16 | "immediate": false,
17 | "triggerInside": false,
18 | "wordChars": "[\\w]"
19 | },
20 | "hotkey": {
21 | "modifiers": [
22 | ""
23 | ],
24 | "hotKey": "d"
25 | },
26 | "filter": {
27 | "regex": null,
28 | "isRecursive": false
29 | }
30 | }
--------------------------------------------------------------------------------
/Software/hub16-autokey/.key-5.json:
--------------------------------------------------------------------------------
1 | {
2 | "type": "script",
3 | "description": "key-5",
4 | "store": {},
5 | "modes": [
6 | 3
7 | ],
8 | "usageCount": 25,
9 | "prompt": false,
10 | "omitTrigger": false,
11 | "showInTrayMenu": false,
12 | "abbreviation": {
13 | "abbreviations": [],
14 | "backspace": true,
15 | "ignoreCase": false,
16 | "immediate": false,
17 | "triggerInside": false,
18 | "wordChars": "[\\w]"
19 | },
20 | "hotkey": {
21 | "modifiers": [
22 | ""
23 | ],
24 | "hotKey": "e"
25 | },
26 | "filter": {
27 | "regex": null,
28 | "isRecursive": false
29 | }
30 | }
--------------------------------------------------------------------------------
/Software/hub16-autokey/.key-6.json:
--------------------------------------------------------------------------------
1 | {
2 | "type": "script",
3 | "description": "key-6",
4 | "store": {},
5 | "modes": [
6 | 3
7 | ],
8 | "usageCount": 6,
9 | "prompt": false,
10 | "omitTrigger": false,
11 | "showInTrayMenu": false,
12 | "abbreviation": {
13 | "abbreviations": [],
14 | "backspace": true,
15 | "ignoreCase": false,
16 | "immediate": false,
17 | "triggerInside": false,
18 | "wordChars": "[\\w]"
19 | },
20 | "hotkey": {
21 | "modifiers": [
22 | ""
23 | ],
24 | "hotKey": "f"
25 | },
26 | "filter": {
27 | "regex": null,
28 | "isRecursive": false
29 | }
30 | }
--------------------------------------------------------------------------------
/Software/hub16-autokey/.key-7.json:
--------------------------------------------------------------------------------
1 | {
2 | "type": "script",
3 | "description": "key-7",
4 | "store": {},
5 | "modes": [
6 | 3
7 | ],
8 | "usageCount": 7,
9 | "prompt": false,
10 | "omitTrigger": false,
11 | "showInTrayMenu": false,
12 | "abbreviation": {
13 | "abbreviations": [],
14 | "backspace": true,
15 | "ignoreCase": false,
16 | "immediate": false,
17 | "triggerInside": false,
18 | "wordChars": "[\\w]"
19 | },
20 | "hotkey": {
21 | "modifiers": [
22 | ""
23 | ],
24 | "hotKey": "g"
25 | },
26 | "filter": {
27 | "regex": null,
28 | "isRecursive": false
29 | }
30 | }
--------------------------------------------------------------------------------
/Software/hub16-autokey/.key-8.json:
--------------------------------------------------------------------------------
1 | {
2 | "type": "script",
3 | "description": "key-8",
4 | "store": {},
5 | "modes": [
6 | 3
7 | ],
8 | "usageCount": 10,
9 | "prompt": false,
10 | "omitTrigger": false,
11 | "showInTrayMenu": false,
12 | "abbreviation": {
13 | "abbreviations": [],
14 | "backspace": true,
15 | "ignoreCase": false,
16 | "immediate": false,
17 | "triggerInside": false,
18 | "wordChars": "[\\w]"
19 | },
20 | "hotkey": {
21 | "modifiers": [
22 | ""
23 | ],
24 | "hotKey": "h"
25 | },
26 | "filter": {
27 | "regex": null,
28 | "isRecursive": false
29 | }
30 | }
--------------------------------------------------------------------------------
/Software/hub16-autokey/.key-9.json:
--------------------------------------------------------------------------------
1 | {
2 | "type": "script",
3 | "description": "key-9",
4 | "store": {},
5 | "modes": [
6 | 3
7 | ],
8 | "usageCount": 13,
9 | "prompt": false,
10 | "omitTrigger": false,
11 | "showInTrayMenu": false,
12 | "abbreviation": {
13 | "abbreviations": [],
14 | "backspace": true,
15 | "ignoreCase": false,
16 | "immediate": false,
17 | "triggerInside": false,
18 | "wordChars": "[\\w]"
19 | },
20 | "hotkey": {
21 | "modifiers": [
22 | ""
23 | ],
24 | "hotKey": "i"
25 | },
26 | "filter": {
27 | "regex": null,
28 | "isRecursive": false
29 | }
30 | }
--------------------------------------------------------------------------------
/Software/hub16-autokey/enc1-anticlockwise1.py:
--------------------------------------------------------------------------------
1 | winTitle = window.get_active_title()
2 |
3 | if "pcbnew" in winTitle.lower():
4 | keyboard.send_keys("+w") # Previous track width
5 | else:
6 | system.exec_command("amixer -D pulse sset Master unmute 5%-")
--------------------------------------------------------------------------------
/Software/hub16-autokey/enc1-button.py:
--------------------------------------------------------------------------------
1 | winTitle = window.get_active_title()
2 |
3 | if "pcbnew" in winTitle.lower():
4 | # keyboard.send_keys("")
5 | pass
6 | else:
7 | system.exec_command("amixer -D pulse sset Master mute")
--------------------------------------------------------------------------------
/Software/hub16-autokey/enc1-clockwise.py:
--------------------------------------------------------------------------------
1 | winTitle = window.get_active_title()
2 |
3 | if "pcbnew" in winTitle.lower():
4 | keyboard.send_keys("w") # Next track width
5 | else:
6 | system.exec_command("amixer -D pulse sset Master unmute 5%+")
--------------------------------------------------------------------------------
/Software/hub16-autokey/enc2-anticlockwise.py:
--------------------------------------------------------------------------------
1 | winTitle = window.get_active_title()
2 |
3 | if "pcbnew" in winTitle.lower():
4 | keyboard.send_keys("+n") # Previous grid size
5 | else:
6 | system.exec_command("playerctl previous")
--------------------------------------------------------------------------------
/Software/hub16-autokey/enc2-button1.py:
--------------------------------------------------------------------------------
1 | winTitle = window.get_active_title()
2 |
3 | if "pcbnew" in winTitle.lower():
4 | # keyboard.send_keys("")
5 | pass
6 | else:
7 | system.exec_command("playerctl play-pause")
--------------------------------------------------------------------------------
/Software/hub16-autokey/enc2-clockwise1.py:
--------------------------------------------------------------------------------
1 | winTitle = window.get_active_title()
2 |
3 | if "pcbnew" in winTitle.lower():
4 | keyboard.send_keys("n") # Next grid size
5 | else:
6 | system.exec_command("playerctl next")
--------------------------------------------------------------------------------
/Software/hub16-autokey/key-1.py:
--------------------------------------------------------------------------------
1 | winTitle = window.get_active_title()
2 |
3 | if "pcbnew" in winTitle.lower():
4 | pass
5 | else:
6 | keyboard.send_key('')
7 |
8 |
--------------------------------------------------------------------------------
/Software/hub16-autokey/key-10.py:
--------------------------------------------------------------------------------
1 | winTitle = window.get_active_title()
2 |
3 | if "pcbnew" in winTitle.lower():
4 | keyboard.send_keys("+h") # High contrast
5 | if "visual studio code" in winTitle.lower():
6 | keyboard.send_keys("+") # Stop
7 | else:
8 | pass
--------------------------------------------------------------------------------
/Software/hub16-autokey/key-11.py:
--------------------------------------------------------------------------------
1 | winTitle = window.get_active_title()
2 |
3 | if "pcbnew" in winTitle.lower():
4 | keyboard.send_keys("e") # For edit
5 | elif "eeschema" in winTitle.lower():
6 | keyboard.send_keys("e") # For edit
7 | else:
8 | pass
--------------------------------------------------------------------------------
/Software/hub16-autokey/key-12.py:
--------------------------------------------------------------------------------
1 | winTitle = window.get_active_title()
2 |
3 | if "pcbnew" in winTitle.lower():
4 | keyboard.send_keys("+M") # Move item exactly
5 | if "visual studio code" in winTitle.lower():
6 | keyboard.send_keys("miniterm --echo") # init sig gen
7 | time.sleep(0.5)
8 | keyboard.send_keys("2")
9 | else:
10 | pass
--------------------------------------------------------------------------------
/Software/hub16-autokey/key-13.py:
--------------------------------------------------------------------------------
1 | winTitle = window.get_active_title()
2 |
3 | if "pcbnew" in winTitle.lower():
4 | pass
5 | else:
6 | system.exec_command("gnome-screenshot -i")
--------------------------------------------------------------------------------
/Software/hub16-autokey/key-14.py:
--------------------------------------------------------------------------------
1 | winTitle = window.get_active_title()
2 |
3 | if "pcbnew" in winTitle.lower():
4 | pass
5 | else:
6 | pass
--------------------------------------------------------------------------------
/Software/hub16-autokey/key-151.py:
--------------------------------------------------------------------------------
1 | winTitle = window.get_active_title()
2 |
3 | if "pcbnew" in winTitle.lower():
4 | pass
5 | else:
6 | pass
--------------------------------------------------------------------------------
/Software/hub16-autokey/key-2.py:
--------------------------------------------------------------------------------
1 | winTitle = window.get_active_title()
2 |
3 | if "pcbnew" in winTitle.lower():
4 | pass
5 | if "visual studio code" in winTitle.lower():
6 | keyboard.send_keys("++") # Build
7 | else:
8 | keyboard.send_keys("+w")
--------------------------------------------------------------------------------
/Software/hub16-autokey/key-3.py:
--------------------------------------------------------------------------------
1 | winTitle = window.get_active_title()
2 |
3 | if "pcbnew" in winTitle.lower():
4 | keyboard.send_keys("+") # Stop
7 | else:
8 | pass
--------------------------------------------------------------------------------
/Software/hub16-autokey/key-4.py:
--------------------------------------------------------------------------------
1 | winTitle = window.get_active_title()
2 |
3 | if "pcbnew" in winTitle.lower():
4 | keyboard.send_keys("+r") # Redo
5 | elif "eeschema" in winTitle.lower():
6 | keyboard.send_keys("") # Insert
7 | elif "visual studio code" in winTitle.lower():
8 | keyboard.send_keys("") # Debug / Continue
9 | else:
10 | pass
--------------------------------------------------------------------------------
/Software/hub16-autokey/key-5.py:
--------------------------------------------------------------------------------
1 | winTitle = window.get_active_title()
2 |
3 | if "pcbnew" in winTitle.lower():
4 | keyboard.send_keys("\\") # Decrease Via Size
5 | if "visual studio code" in winTitle.lower():
6 | keyboard.send_keys("") # Step Over
7 | else:
8 | pass
--------------------------------------------------------------------------------
/Software/hub16-autokey/key-6.py:
--------------------------------------------------------------------------------
1 | winTitle = window.get_active_title()
2 |
3 | if "pcbnew" in winTitle.lower():
4 | keyboard.send_keys("'") # Increase via size
5 | if "visual studio code" in winTitle.lower():
6 | keyboard.send_keys("") # Step in
7 | else:
8 | pass
--------------------------------------------------------------------------------
/Software/hub16-autokey/key-7.py:
--------------------------------------------------------------------------------
1 | winTitle = window.get_active_title()
2 |
3 | if "pcbnew" in winTitle.lower():
4 | keyboard.send_keys("`") # Highlight net
5 | if "visual studio code" in winTitle.lower():
6 | keyboard.send_keys("+") # Step Out
7 | else:
8 | pass
--------------------------------------------------------------------------------
/Software/hub16-autokey/key-8.py:
--------------------------------------------------------------------------------
1 | winTitle = window.get_active_title()
2 |
3 | if "pcbnew" in winTitle.lower():
4 | keyboard.send_keys("+r") # Position relative
5 | elif "eeschema" in winTitle.lower():
6 | keyboard.send_keys("+y") # Position relative
7 | elif "visual studio code" in winTitle.lower():
8 | keyboard.send_keys("") # Pause
9 | else:
10 | pass
--------------------------------------------------------------------------------
/Software/hub16-autokey/key-9.py:
--------------------------------------------------------------------------------
1 | winTitle = window.get_active_title()
2 |
3 | if "pcbnew" in winTitle.lower():
4 | keyboard.send_keys("++h") # Dimension
5 | else:
6 | pass
--------------------------------------------------------------------------------
/Software/hub16-example.ahk:
--------------------------------------------------------------------------------
1 | #NoEnv
2 | #InstallKeybdHook
3 | #UseHook On
4 | #SingleInstance force ;only one instance of this script may run at a time
5 | #MaxHotkeysPerInterval 2000
6 | SetTitleMatchMode, 2 ; Partial title string matching
7 |
8 | ;Hub16
9 | ;------------------ ENC1:Clockwise: q
10 | ;| ENC1 ENC2 | ENC1:Anticlockwise: r
11 | ;| a b c d | ENC1:Button: s
12 | ;| e f g h | ENC2:Clockwise: t
13 | ;| i j k l | ENC2:Anticlockwise: u
14 | ;| m n o p | ENC2:Button: v
15 | ;------------------
16 |
17 | ; Remember to uncomment lines before using them, and restart the script each time!
18 |
19 | #if (getKeyState("F24", "P"))
20 | F24::return
21 |
22 | ;------------------------------------------------------------------------------
23 | ; Row 0 / Encoders
24 | ;------------------------------------------------------------------------------
25 |
26 | ;q::{}
27 |
28 | ;r::{}
29 |
30 | ;s::{}
31 |
32 | ;t::{}
33 |
34 | ;u::{}
35 |
36 | ;v::{}
37 |
38 | ;------------------------------------------------------------------------------
39 | ; Row 1
40 | ;------------------------------------------------------------------------------
41 |
42 | ;a::{}
43 |
44 | ;b::{}
45 |
46 | ;c::{}
47 |
48 | ;d::{}
49 |
50 | ;------------------------------------------------------------------------------
51 | ; Row 2
52 | ;------------------------------------------------------------------------------
53 |
54 | e::
55 | { ; Update URL, keeping ID number
56 | Send {control down}{l}{control up} ; Get URL Bar
57 | Sleep, 50
58 | Send {right} ; End of URL
59 | Sleep, 50
60 | Send {control down}{left}{control up} ; Move left of number
61 | Send {control down}{shift down}{home}{shift up}{control up} ; Select URL other than ID
62 | Send www.url-before-number.com/number= ; Update with URL
63 | Send {enter}
64 | return
65 |
66 | }
67 |
68 | f::
69 | {
70 |
71 | Send ¯\\\_(ツ)_/¯
72 | return
73 | }
74 |
75 | g::
76 | {
77 | Run C:\Program Files (x86)\Google\Chrome\Application\chrome.exe https://website.com
78 | return
79 | }
80 |
81 | h::
82 | { ; Login into application
83 | if WinActive("application name"){
84 | Send area {enter}
85 | Sleep, 1500
86 | Send team {enter}
87 | Sleep, 1500
88 | Send username {tab}{tab}
89 | }
90 |
91 | ; Activate application
92 | if WinExist("application name")
93 | WinActivate
94 | else if WinExist("launcher name")
95 | WinActivate
96 | else
97 | Run, C:\ProgramData\Microsoft\Windows\path-to-application
98 | return
99 |
100 | }
101 |
102 | ;------------------------------------------------------------------------------
103 | ; Row 3
104 | ;------------------------------------------------------------------------------
105 |
106 | ;i::{}
107 |
108 | ;j::{}
109 |
110 | k::
111 | {
112 | Run C:\Program Files (x86)\Google\Chrome\Application\chrome.exe https://another-website.com
113 | return
114 | }
115 |
116 | l::
117 | {
118 | ; If Excel Active, open sceen
119 | if WinActive("ahk_exe EXCEL.EXE")
120 | Send {control down}{o}{control up}
121 | ; If Excel not active, activate excel
122 | else if WinExist("ahk_exe EXCEL.EXE")
123 | WinActivate
124 | else
125 | Run, EXCEL.EXE
126 | return
127 | }
128 |
129 | ;------------------------------------------------------------------------------
130 | ; Row 4
131 | ;------------------------------------------------------------------------------
132 |
133 | m::
134 | { ; Replace text to fix website 404
135 | Send {control down}{l}{control up}
136 | Send {right}
137 | Send {control down}{left}{left}{left}{left}{left}{control up}
138 | Send {control down}{shift down}{right}{control up}{shift up}
139 | Send new-text/
140 | Send {enter}
141 | return
142 | }
143 |
144 | ;n::{}
145 |
146 | o::
147 | { ; Pull Webex Teams to front / open if closed
148 | if WinActive("Webex Teams")
149 | return
150 | else if WinExist("Webex Teams")
151 | WinActivate
152 | return
153 | }
154 |
155 | p::
156 | {
157 | ; If outlook Active, new email
158 | if WinActive("ahk_exe OUTLOOK.EXE")
159 | Send {control down}{n}{control up}
160 | ; If Outlook not active, activate outlook
161 | else if WinExist("ahk_exe OUTLOOK.EXE")
162 | WinActivate
163 | else
164 | Run, OUTLOOK.EXE
165 | return
166 |
167 | }
--------------------------------------------------------------------------------
/Software/hub16-template.ahk:
--------------------------------------------------------------------------------
1 | #NoEnv
2 | #InstallKeybdHook
3 | #UseHook On
4 | #SingleInstance force ;only one instance of this script may run at a time
5 | #MaxHotkeysPerInterval 2000
6 | SetTitleMatchMode, 2 ; Partial title string matching
7 |
8 | ;Hub16
9 | ;------------------ ENC1:Clockwise: q
10 | ;| ENC1 ENC2 | ENC1:Anticlockwise: r
11 | ;| a b c d | ENC1:Button: s
12 | ;| e f g h | ENC2:Clockwise: t
13 | ;| i j k l | ENC2:Anticlockwise: u
14 | ;| m n o p | ENC2:Button: v
15 | ;------------------
16 |
17 | ; Remember to uncomment lines before using them, and restart the script each time!
18 |
19 | ; Run the below when in KiCad
20 | #if (getKeyState("F24", "P")) and if WinActive("ahk_exe kicad.exe")
21 | F24::return
22 |
23 | ;------------------------------------------------------------------------------
24 | ; Row 0 / Encoders
25 | ;------------------------------------------------------------------------------
26 |
27 | ;q::{}
28 |
29 | ;r::{}
30 |
31 | ;s::{}
32 |
33 | ;t::{}
34 |
35 | ;u::{}
36 |
37 | ;v::{}
38 |
39 | ;------------------------------------------------------------------------------
40 | ; Row 1
41 | ;------------------------------------------------------------------------------
42 |
43 | ;a::{}
44 |
45 | ;b::{}
46 |
47 | ;c::{}
48 |
49 | ;d::{}
50 |
51 | ;------------------------------------------------------------------------------
52 | ; Row 2
53 | ;------------------------------------------------------------------------------
54 |
55 | ;e::{}
56 |
57 | ;f::{}
58 |
59 | ;g::{}
60 |
61 | ;h::{}
62 |
63 | ;------------------------------------------------------------------------------
64 | ; Row 3
65 | ;------------------------------------------------------------------------------
66 |
67 | ;i::{}
68 |
69 | ;j::{}
70 |
71 | ;k::{}
72 |
73 | ;l::{}
74 |
75 |
76 | ;------------------------------------------------------------------------------
77 | ; Row 4
78 | ;------------------------------------------------------------------------------
79 |
80 | ;m::{}
81 |
82 | ;n::{}
83 |
84 | ;o::{}
85 |
86 | ;p::{}
87 |
88 | ; Otherwise, run the below
89 | #if (getKeyState("F23", "P"))
90 | F23::return
91 |
92 | ;------------------------------------------------------------------------------
93 | ; Row 0 / Encoders
94 | ;------------------------------------------------------------------------------
95 |
96 | ;q::{}
97 |
98 | ;r::{}
99 |
100 | ;s::{}
101 |
102 | ;t::{}
103 |
104 | ;u::{}
105 |
106 | ;v::{}
107 |
108 | ;------------------------------------------------------------------------------
109 | ; Row 1
110 | ;------------------------------------------------------------------------------
111 |
112 | ;a::{}
113 |
114 | ;b::{}
115 |
116 | ;c::{}
117 |
118 | ;d::{}
119 |
120 | ;------------------------------------------------------------------------------
121 | ; Row 2
122 | ;------------------------------------------------------------------------------
123 |
124 | ;e::{}
125 |
126 | ;f::{}
127 |
128 | ;g::{}
129 |
130 | ;h::{}
131 |
132 | ;------------------------------------------------------------------------------
133 | ; Row 3
134 | ;------------------------------------------------------------------------------
135 |
136 | ;i::{}
137 |
138 | ;j::{}
139 |
140 | ;k::{}
141 |
142 | ;l::{}
143 |
144 |
145 | ;------------------------------------------------------------------------------
146 | ; Row 4
147 | ;------------------------------------------------------------------------------
148 |
149 | ;m::{}
150 |
151 | ;n::{}
152 |
153 | ;o::{}
154 |
155 | ;p::{}
--------------------------------------------------------------------------------