Initial commit.

master
Tomek Wójcik 2019-01-13 11:16:26 +01:00
commit 824f111ec5
16 changed files with 1854 additions and 0 deletions

9
.gitignore vendored Normal file
View File

@ -0,0 +1,9 @@
.DS_Store
*.bak
*.swp
*.pdf
*.zip
KiCad/*.kicad_pcb-bak
KiCad/*.svg

4
.gitmodules vendored Normal file
View File

@ -0,0 +1,4 @@
[submodule "qmk_firmware"]
path = qmk_firmware
url = https://github.com/tomekwojcik/qmk_firmware.git
branch = bthlabs_geekpad

Binary file not shown.

Binary file not shown.

195
KiCad/GeekPad.cmp Normal file
View File

@ -0,0 +1,195 @@
Cmp-Mod V01 Created by PcbNew date = 2018 December 08, Saturday 11:39:52
BeginCmp
TimeStamp = 5C247A81
Path =
Reference = REF**;
ValeurCmp = RESET;
IdModule = Button_Switch_THT:Reset;
EndCmp
BeginCmp
TimeStamp = 5C081AB8
Path =
Reference = ProMicro;
ValeurCmp = [NoVal];
IdModule = promicro:ProMicro;
EndCmp
BeginCmp
TimeStamp = 5BF02D03
Path =
Reference = D8;
ValeurCmp = [NoVal];
IdModule = Diode_THT:D_5W_P10.16mm_Horizontal;
EndCmp
BeginCmp
TimeStamp = 5BF02CE5
Path =
Reference = D7;
ValeurCmp = [NoVal];
IdModule = Diode_THT:D_5W_P10.16mm_Horizontal;
EndCmp
BeginCmp
TimeStamp = 5BF02CCE
Path =
Reference = SW8;
ValeurCmp = [NoVal];
IdModule = Button_Switch_Keyboard:SW_Cherry_MX1A_1.00u_Plate;
EndCmp
BeginCmp
TimeStamp = 5BF02CB7
Path =
Reference = SW7;
ValeurCmp = [NoVal];
IdModule = Button_Switch_Keyboard:SW_Cherry_MX1A_1.00u_Plate;
EndCmp
BeginCmp
TimeStamp = 5BF02C99
Path =
Reference = D9;
ValeurCmp = [NoVal];
IdModule = Diode_THT:D_5W_P10.16mm_Horizontal;
EndCmp
BeginCmp
TimeStamp = 5BF02C82
Path =
Reference = SW9;
ValeurCmp = [NoVal];
IdModule = Button_Switch_Keyboard:SW_Cherry_MX1A_1.00u_Plate;
EndCmp
BeginCmp
TimeStamp = 5BF02D03
Path =
Reference = D5;
ValeurCmp = [NoVal];
IdModule = Diode_THT:D_5W_P10.16mm_Horizontal;
EndCmp
BeginCmp
TimeStamp = 5BF02CE5
Path =
Reference = D4;
ValeurCmp = [NoVal];
IdModule = Diode_THT:D_5W_P10.16mm_Horizontal;
EndCmp
BeginCmp
TimeStamp = 5BF02CCE
Path =
Reference = SW5;
ValeurCmp = [NoVal];
IdModule = Button_Switch_Keyboard:SW_Cherry_MX1A_1.00u_Plate;
EndCmp
BeginCmp
TimeStamp = 5BF02CB7
Path =
Reference = SW4;
ValeurCmp = [NoVal];
IdModule = Button_Switch_Keyboard:SW_Cherry_MX1A_1.00u_Plate;
EndCmp
BeginCmp
TimeStamp = 5BF02C99
Path =
Reference = D3;
ValeurCmp = [NoVal];
IdModule = Diode_THT:D_5W_P10.16mm_Horizontal;
EndCmp
BeginCmp
TimeStamp = 5BF02C82
Path =
Reference = SW6;
ValeurCmp = [NoVal];
IdModule = Button_Switch_Keyboard:SW_Cherry_MX1A_1.00u_Plate;
EndCmp
BeginCmp
TimeStamp = 5BF029FF
Path =
Reference = D3;
ValeurCmp = [NoVal];
IdModule = Diode_THT:D_5W_P10.16mm_Horizontal;
EndCmp
BeginCmp
TimeStamp = 5BF029E8
Path =
Reference = SW3;
ValeurCmp = [NoVal];
IdModule = Button_Switch_Keyboard:SW_Cherry_MX1A_1.00u_Plate;
EndCmp
BeginCmp
TimeStamp = 5BF029FF
Path =
Reference = D2;
ValeurCmp = [NoVal];
IdModule = Diode_THT:D_5W_P10.16mm_Horizontal;
EndCmp
BeginCmp
TimeStamp = 5BF029E8
Path =
Reference = SW2;
ValeurCmp = [NoVal];
IdModule = Button_Switch_Keyboard:SW_Cherry_MX1A_1.00u_Plate;
EndCmp
BeginCmp
TimeStamp = 5BF02667
Path =
Reference = SW1;
ValeurCmp = [NoVal];
IdModule = Button_Switch_Keyboard:SW_Cherry_MX1A_1.00u_Plate;
EndCmp
BeginCmp
TimeStamp = 5BF028A1
Path =
Reference = D1;
ValeurCmp = [NoVal];
IdModule = Diode_THT:D_5W_P10.16mm_Horizontal;
EndCmp
BeginCmp
TimeStamp = 5BFC8152
Path =
Reference = [NoRef];
ValeurCmp = [NoVal];
IdModule = MountingHole:MountingHole_3.2mm_M3;
EndCmp
BeginCmp
TimeStamp = 5BFC81A4
Path =
Reference = [NoRef];
ValeurCmp = [NoVal];
IdModule = MountingHole:MountingHole_3.2mm_M3;
EndCmp
BeginCmp
TimeStamp = 5BFC8248
Path =
Reference = [NoRef];
ValeurCmp = [NoVal];
IdModule = MountingHole:MountingHole_3.2mm_M3;
EndCmp
BeginCmp
TimeStamp = 5BFC8257
Path =
Reference = [NoRef];
ValeurCmp = [NoVal];
IdModule = MountingHole:MountingHole_3.2mm_M3;
EndCmp
EndListe

1426
KiCad/GeekPad.kicad_pcb Normal file

File diff suppressed because it is too large Load Diff

33
KiCad/GeekPad.pro Normal file
View File

@ -0,0 +1,33 @@
update=22/05/2015 07:44:53
version=1
last_client=kicad
[general]
version=1
RootSch=
BoardNm=
[pcbnew]
version=1
LastNetListRead=
UseCmpFile=1
PadDrill=0.600000000000
PadDrillOvalY=0.600000000000
PadSizeH=1.500000000000
PadSizeV=1.500000000000
PcbTextSizeV=1.500000000000
PcbTextSizeH=1.500000000000
PcbTextThickness=0.300000000000
ModuleTextSizeV=1.000000000000
ModuleTextSizeH=1.000000000000
ModuleTextSizeThickness=0.150000000000
SolderMaskClearance=0.000000000000
SolderMaskMinWidth=0.000000000000
DrawSegmentWidth=0.200000000000
BoardOutlineThickness=0.100000000000
ModuleOutlineThickness=0.150000000000
[cvpcb]
version=1
NetIExt=net
[eeschema]
version=1
LibDir=
[eeschema/libraries]

4
KiCad/GeekPad.sch Normal file
View File

@ -0,0 +1,4 @@
EESchema Schematic File Version 2
EELAYER 25 0
EELAYER END
$EndSCHEMATC

View File

@ -0,0 +1,46 @@
(module ProMicroV1 (layer F.Cu) (tedit 5BEFE7B1)
(descr "Pro Micro footprint")
(tags "promicro ProMicro")
(fp_text reference ProMicro (at 0 -10.16) (layer F.SilkS) hide
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text value "" (at 0 10.16) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_line (start 15.24 -8.89) (end 15.24 8.89) (layer F.SilkS) (width 0.15))
(fp_line (start -15.24 -8.89) (end 15.24 -8.89) (layer F.SilkS) (width 0.15))
(fp_line (start -15.24 -3.81) (end -15.24 -8.89) (layer F.SilkS) (width 0.15))
(fp_line (start -15.24 8.89) (end -15.24 3.81) (layer F.SilkS) (width 0.15))
(fp_line (start -15.24 8.89) (end 15.24 8.89) (layer F.SilkS) (width 0.15))
(fp_line (start -15.24 -8.89) (end 15.24 -8.89) (layer B.SilkS) (width 0.15))
(fp_line (start -15.24 -3.81) (end -15.24 -8.89) (layer B.SilkS) (width 0.15))
(fp_line (start -15.24 8.89) (end -15.24 3.81) (layer B.SilkS) (width 0.15))
(fp_line (start 15.24 8.89) (end -15.24 8.89) (layer B.SilkS) (width 0.15))
(fp_line (start 15.24 -8.89) (end 15.24 8.89) (layer B.SilkS) (width 0.15))
(fp_line (start -15.24 3.81) (end -15.24 -3.81) (layer F.SilkS) (width 0.15))
(fp_line (start -15.24 -3.81) (end -15.24 3.81) (layer B.SilkS) (width 0.15))
(pad 24 thru_hole circle (at -13.97 -7.62) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask F.SilkS))
(pad 23 thru_hole circle (at -11.43 -7.62) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask F.SilkS))
(pad 22 thru_hole circle (at -8.89 -7.62) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask F.SilkS))
(pad 21 thru_hole circle (at -6.35 -7.62) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask F.SilkS))
(pad 20 thru_hole circle (at -3.81 -7.62) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask F.SilkS))
(pad 19 thru_hole circle (at -1.27 -7.62) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask F.SilkS))
(pad 18 thru_hole circle (at 1.27 -7.62) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask F.SilkS))
(pad 17 thru_hole circle (at 3.81 -7.62) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask F.SilkS))
(pad 16 thru_hole circle (at 6.35 -7.62) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask F.SilkS))
(pad 15 thru_hole circle (at 8.89 -7.62) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask F.SilkS))
(pad 14 thru_hole circle (at 11.43 -7.62) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask F.SilkS))
(pad 13 thru_hole circle (at 13.97 -7.62) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask F.SilkS))
(pad 12 thru_hole circle (at 13.97 7.62) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask F.SilkS))
(pad 11 thru_hole circle (at 11.43 7.62) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask F.SilkS))
(pad 10 thru_hole circle (at 8.89 7.62) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask F.SilkS))
(pad 9 thru_hole circle (at 6.35 7.62) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask F.SilkS))
(pad 8 thru_hole circle (at 3.81 7.62) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask F.SilkS))
(pad 7 thru_hole circle (at 1.27 7.62) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask F.SilkS))
(pad 6 thru_hole circle (at -1.27 7.62) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask F.SilkS))
(pad 5 thru_hole circle (at -3.81 7.62) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask F.SilkS))
(pad 4 thru_hole circle (at -6.35 7.62) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask F.SilkS))
(pad 3 thru_hole circle (at -8.89 7.62) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask F.SilkS))
(pad 2 thru_hole circle (at -11.43 7.62) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask F.SilkS))
(pad 1 thru_hole rect (at -13.97 7.62) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask F.SilkS))
)

29
KiCad/Reset.kicad_mod Normal file
View File

@ -0,0 +1,29 @@
(module Button_Switch_THT:Reset (layer F.Cu) (tedit 5C0B9E3E)
(descr https://www.omron.com/ecb/products/pdf/en-b3f.pdf)
(tags "tact sw push 6mm")
(fp_text reference REF** (at -2.30632 1.88976 90) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text value RESET (at 2.413 2.286 270) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_line (start 1.524 -1.25) (end 1.524 5.75) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.5 5.75) (end -1.5 -1.25) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.25 -1.5) (end 1.2954 -1.4986) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.5 6) (end -1.25 6) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.5 5.75) (end -1.5 6) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.5 -1.5) (end -1.25 -1.5) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.5 -1.25) (end -1.5 -1.5) (layer F.CrtYd) (width 0.05))
(fp_line (start 1.524 -1.5) (end 1.524 -1.25) (layer F.CrtYd) (width 0.05))
(fp_line (start 1.27 -1.5) (end 1.52 -1.5) (layer F.CrtYd) (width 0.05))
(fp_line (start 1.524 6) (end 1.524 5.75) (layer F.CrtYd) (width 0.05))
(fp_line (start 1.27 6) (end 1.52 6) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.2446 5.99948) (end 1.26492 5.99948) (layer F.CrtYd) (width 0.05))
(pad 1 thru_hole circle (at 0 0 90) (size 2 2) (drill 1.1) (layers *.Cu *.Mask))
(pad 2 thru_hole circle (at 0 4.5 90) (size 2 2) (drill 1.1) (layers *.Cu *.Mask))
(model ${KISYS3DMOD}/Button_Switch_THT.3dshapes/SW_PUSH_6mm.wrl
(at (xyz 0 0 0))
(scale (xyz 1 1 1))
(rotate (xyz 0 0 0))
)
)

3
KiCad/fp-lib-table Normal file
View File

@ -0,0 +1,3 @@
(fp_lib_table
(lib (name GeekPadV1)(type KiCad)(uri .)(options "")(descr ""))
)

7
LICENSE Normal file
View File

@ -0,0 +1,7 @@
GeekPad (c) by Tomek Wójcik
GeekPad is licensed under a
Creative Commons Attribution-ShareAlike 4.0 International License.
You should have received a copy of the license along with this
work. If not, see <https://creativecommons.org/licenses/by-sa/4.0/>.

17
NOTICE.txt Normal file
View File

@ -0,0 +1,17 @@
GeekPad (c) by Tomek Wójcik
GeekPad is licensed under a
Creative Commons Attribution-ShareAlike 4.0 International License.
You should have received a copy of the license along with this
work. If not, see <https://creativecommons.org/licenses/by-sa/4.0/>.
---
GeekPad includes the follwoing third party software and resources
Pro Micro library for KiCAD
Copyright (c) 2017 Biacco42
Licensed under terms of MIT license
https://opensource.org/licenses/mit-license.php
With modifications

80
README.md Normal file
View File

@ -0,0 +1,80 @@
# GeekPad
A 3x3 custom mechanical macro pad.
![GeekPad](geekpad.jpg)
## Building your own
To build your own GeekPad, you'll need the following:
1. A 3D printer with at least 75x75x20mm of available workspace,
1. Means of making the PCB,
1. A computer capable of building the firmware and uploading it to the
controller,
1. A [SparkFun Pro Micro 5V/16Mhz] controller board (or a compatible clone),
1. 9 plate mounted Cherry MX compatible switches of your choosing,
1. 9 1N148 diodes,
1. A two-pin tactile switch,
1. 4 10mm standoffs,
1. 8 M3 screws,
1. 4 rubber or plastic feet,
1. A soldering iron,
1. Tinkerer's spirit ;).
This repository contains the *PCB Project*, *Case 3D Models* and the customized
*QMK Firmware Code*.
### PCB Project
The *KiCad* directory contains the KiCad project with PCB source. You can use
it to make or order a PCB.
The PCB project was created using KiCad v5.
### Case 3D Models
The *Case 3D Models* directory contains STL files for the case. You can use
them to 3D print case parts.
The *GeekPad - Leg* file contains model of a "leg" - the side part. You'll need
two of them. The *GeekPad - Plate* files contains model of the switch plate.
### QMK Firmware Code
The *qmk_firmware* directory contains source code for GeekPad's firmware. It's
based on [QMK](https://qmk.fm/). Since the directory is actually a submodule,
you'll need to fetch it prior to working with it.
If you're using the command line git client on a compatible OS, use the
following commands to fetch the code:
```
$ git submodule init
$ git submodule update
```
If you're using other git client, please refer to its docs to learn how to
fetch the submodule.
GeekPad specific code lives in the `keyboards/bthlabs/geekpad` directory.
Please refer to [QMK docs](https://docs.qmk.fm/#/) for information on how to
set up QMK, customize the keymap and build the firmware.
## Author
GeekPad is developed by [Tomek Wójcik](https://www.bthlabs.pl/).
## License
GeekPad is licensed under terms of Creative Commons Attribution-ShareAlike 4.0
International (CC BY-SA 4.0) License.
GeekPad's QMK code is licensed under terms of GNU GPL v2 License.
## Credits
GeekPad includes modified version of
[KiCad library of Pro Micro](https://github.com/Biacco42/ProMicroKiCad) by
[Biacco24](https://github.com/Biacco42), licensed under terms of MIT Licese.

BIN
geekpad.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 MiB

1
qmk_firmware Submodule

@ -0,0 +1 @@
Subproject commit 48742539f554ec6219ac68c8abcc2a5185ce5fe7