├── .github └── workflows │ └── build.yml ├── .gitignore ├── .gitmodules ├── .vscode └── settings.json ├── LICENSE ├── README.md ├── boards ├── LICENSE └── arm │ └── numble │ ├── Kconfig │ ├── Kconfig.board │ ├── Kconfig.defconfig │ ├── board.cmake │ ├── numble-pinctrl.dtsi │ ├── numble.conf │ ├── numble.dts │ ├── numble.keymap │ ├── numble.zmk.yml │ └── numble_defconfig ├── build.yaml ├── case ├── Case Bottom.stl ├── Case Top.stl ├── NumBLE.step ├── Plate.dxf └── renders │ ├── Assembly-Bottom.gif │ ├── Assembly-Bumpons.gif │ ├── Assembly-Final.gif │ ├── Assembly-Switches.gif │ ├── Assembly-Top.gif │ ├── Battery.png │ ├── Bottom.png │ ├── NumBLE.png │ └── keyboard-layout.png ├── config └── west.yml ├── pcb ├── .gitignore ├── NumBLE.kicad_pcb ├── NumBLE.kicad_pro ├── NumBLE.kicad_sch ├── NumBLE.kicad_sym ├── NumBLE.pretty │ ├── 3d │ │ ├── E73-2G4M08S1C.step │ │ ├── HRO_TYPE-C-31-M-12.step │ │ ├── JS202011JCQN.stp │ │ ├── KSC701JLFS.stp │ │ ├── S2B-PH-SM4-TB(LF)(SN).STEP │ │ └── TDFN-EP-14.step │ ├── E73-2G4M08S1C-52840.kicad_mod │ ├── E73-2G4M08S1C-52840_TH.kicad_mod │ ├── JST_PH_S2B-PH-SM4-TB_1x02-1MP_P2.00mm_Horizontal.kicad_mod │ ├── LVT08Rxxx0xER.kicad_mod │ ├── MXOnly-1U-2U-Center-ReversedStabilizers.kicad_mod │ ├── MXOnly-1U-2U-Left.kicad_mod │ ├── MXOnly-1U-2U-Right.kicad_mod │ ├── RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm.kicad_mod │ ├── SW_DPDT_CK_JS202011JCQN.kicad_mod │ ├── SW_Push_1P1T_NO_CK_KSC7xxJ.kicad_mod │ ├── Tag-Connect_TC2050-IDC-NL_2x05_P1.27mm_Vertical.kicad_mod │ └── USB_C_Receptacle_HRO_TYPE-C-31-M-12.kicad_mod ├── fp-lib-table └── sym-lib-table └── zephyr └── module.yml /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | on: [push, pull_request, workflow_dispatch] 2 | 3 | jobs: 4 | build: 5 | uses: zmkfirmware/zmk/.github/workflows/build-user-config.yml@main 6 | with: 7 | config_path: config 8 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.code-workspace -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "MX_Alps_Hybrid"] 2 | path = pcb/MX_Alps_Hybrid 3 | url = https://github.com/ai03-2725/MX_Alps_Hybrid.git 4 | [submodule "Type-C.pretty"] 5 | path = pcb/Type-C.pretty 6 | url = https://github.com/ai03-2725/Type-C.pretty.git 7 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "editor.formatOnSave": true, 3 | "files.associations": { 4 | "*.h": "c", 5 | "*_defconfig": "kconfig" 6 | }, 7 | "[markdown]": { 8 | "editor.defaultFormatter": "esbenp.prettier-vscode" 9 | }, 10 | "[json]": { 11 | "editor.defaultFormatter": "esbenp.prettier-vscode" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | CERN Open Hardware Licence Version 2 - Permissive 2 | 3 | 4 | Preamble 5 | 6 | CERN has developed this licence to promote collaboration among 7 | hardware designers and to provide a legal tool which supports the 8 | freedom to use, study, modify, share and distribute hardware designs 9 | and products based on those designs. Version 2 of the CERN Open 10 | Hardware Licence comes in three variants: this licence, CERN-OHL-P 11 | (permissive); and two reciprocal licences: CERN-OHL-W (weakly 12 | reciprocal) and CERN-OHL-S (strongly reciprocal). 13 | 14 | The CERN-OHL-P is copyright CERN 2020. Anyone is welcome to use it, in 15 | unmodified form only. 16 | 17 | Use of this Licence does not imply any endorsement by CERN of any 18 | Licensor or their designs nor does it imply any involvement by CERN in 19 | their development. 20 | 21 | 22 | 1 Definitions 23 | 24 | 1.1 'Licence' means this CERN-OHL-P. 25 | 26 | 1.2 'Source' means information such as design materials or digital 27 | code which can be applied to Make or test a Product or to 28 | prepare a Product for use, Conveyance or sale, regardless of its 29 | medium or how it is expressed. It may include Notices. 30 | 31 | 1.3 'Covered Source' means Source that is explicitly made available 32 | under this Licence. 33 | 34 | 1.4 'Product' means any device, component, work or physical object, 35 | whether in finished or intermediate form, arising from the use, 36 | application or processing of Covered Source. 37 | 38 | 1.5 'Make' means to create or configure something, whether by 39 | manufacture, assembly, compiling, loading or applying Covered 40 | Source or another Product or otherwise. 41 | 42 | 1.6 'Notice' means copyright, acknowledgement and trademark notices, 43 | references to the location of any Notices, modification notices 44 | (subsection 3.3(b)) and all notices that refer to this Licence 45 | and to the disclaimer of warranties that are included in the 46 | Covered Source. 47 | 48 | 1.7 'Licensee' or 'You' means any person exercising rights under 49 | this Licence. 50 | 51 | 1.8 'Licensor' means a person who creates Source or modifies Covered 52 | Source and subsequently Conveys the resulting Covered Source 53 | under the terms and conditions of this Licence. A person may be 54 | a Licensee and a Licensor at the same time. 55 | 56 | 1.9 'Convey' means to communicate to the public or distribute. 57 | 58 | 59 | 2 Applicability 60 | 61 | 2.1 This Licence governs the use, copying, modification, Conveying 62 | of Covered Source and Products, and the Making of Products. By 63 | exercising any right granted under this Licence, You irrevocably 64 | accept these terms and conditions. 65 | 66 | 2.2 This Licence is granted by the Licensor directly to You, and 67 | shall apply worldwide and without limitation in time. 68 | 69 | 2.3 You shall not attempt to restrict by contract or otherwise the 70 | rights granted under this Licence to other Licensees. 71 | 72 | 2.4 This Licence is not intended to restrict fair use, fair dealing, 73 | or any other similar right. 74 | 75 | 76 | 3 Copying, Modifying and Conveying Covered Source 77 | 78 | 3.1 You may copy and Convey verbatim copies of Covered Source, in 79 | any medium, provided You retain all Notices. 80 | 81 | 3.2 You may modify Covered Source, other than Notices. 82 | 83 | You may only delete Notices if they are no longer applicable to 84 | the corresponding Covered Source as modified by You and You may 85 | add additional Notices applicable to Your modifications. 86 | 87 | 3.3 You may Convey modified Covered Source (with the effect that You 88 | shall also become a Licensor) provided that You: 89 | 90 | a) retain Notices as required in subsection 3.2; and 91 | 92 | b) add a Notice to the modified Covered Source stating that You 93 | have modified it, with the date and brief description of how 94 | You have modified it. 95 | 96 | 3.4 You may Convey Covered Source or modified Covered Source under 97 | licence terms which differ from the terms of this Licence 98 | provided that You: 99 | 100 | a) comply at all times with subsection 3.3; and 101 | 102 | b) provide a copy of this Licence to anyone to whom You 103 | Convey Covered Source or modified Covered Source. 104 | 105 | 106 | 4 Making and Conveying Products 107 | 108 | You may Make Products, and/or Convey them, provided that You ensure 109 | that the recipient of the Product has access to any Notices applicable 110 | to the Product. 111 | 112 | 113 | 5 DISCLAIMER AND LIABILITY 114 | 115 | 5.1 DISCLAIMER OF WARRANTY -- The Covered Source and any Products 116 | are provided 'as is' and any express or implied warranties, 117 | including, but not limited to, implied warranties of 118 | merchantability, of satisfactory quality, non-infringement of 119 | third party rights, and fitness for a particular purpose or use 120 | are disclaimed in respect of any Source or Product to the 121 | maximum extent permitted by law. The Licensor makes no 122 | representation that any Source or Product does not or will not 123 | infringe any patent, copyright, trade secret or other 124 | proprietary right. The entire risk as to the use, quality, and 125 | performance of any Source or Product shall be with You and not 126 | the Licensor. This disclaimer of warranty is an essential part 127 | of this Licence and a condition for the grant of any rights 128 | granted under this Licence. 129 | 130 | 5.2 EXCLUSION AND LIMITATION OF LIABILITY -- The Licensor shall, to 131 | the maximum extent permitted by law, have no liability for 132 | direct, indirect, special, incidental, consequential, exemplary, 133 | punitive or other damages of any character including, without 134 | limitation, procurement of substitute goods or services, loss of 135 | use, data or profits, or business interruption, however caused 136 | and on any theory of contract, warranty, tort (including 137 | negligence), product liability or otherwise, arising in any way 138 | in relation to the Covered Source, modified Covered Source 139 | and/or the Making or Conveyance of a Product, even if advised of 140 | the possibility of such damages, and You shall hold the 141 | Licensor(s) free and harmless from any liability, costs, 142 | damages, fees and expenses, including claims by third parties, 143 | in relation to such use. 144 | 145 | 146 | 6 Patents 147 | 148 | 6.1 Subject to the terms and conditions of this Licence, each 149 | Licensor hereby grants to You a perpetual, worldwide, 150 | non-exclusive, no-charge, royalty-free, irrevocable (except as 151 | stated in this section 6, or where terminated by the Licensor 152 | for cause) patent licence to Make, have Made, use, offer to 153 | sell, sell, import, and otherwise transfer the Covered Source 154 | and Products, where such licence applies only to those patent 155 | claims licensable by such Licensor that are necessarily 156 | infringed by exercising rights under the Covered Source as 157 | Conveyed by that Licensor. 158 | 159 | 6.2 If You institute patent litigation against any entity (including 160 | a cross-claim or counterclaim in a lawsuit) alleging that the 161 | Covered Source or a Product constitutes direct or contributory 162 | patent infringement, or You seek any declaration that a patent 163 | licensed to You under this Licence is invalid or unenforceable 164 | then any rights granted to You under this Licence shall 165 | terminate as of the date such process is initiated. 166 | 167 | 168 | 7 General 169 | 170 | 7.1 If any provisions of this Licence are or subsequently become 171 | invalid or unenforceable for any reason, the remaining 172 | provisions shall remain effective. 173 | 174 | 7.2 You shall not use any of the name (including acronyms and 175 | abbreviations), image, or logo by which the Licensor or CERN is 176 | known, except where needed to comply with section 3, or where 177 | the use is otherwise allowed by law. Any such permitted use 178 | shall be factual and shall not be made so as to suggest any kind 179 | of endorsement or implication of involvement by the Licensor or 180 | its personnel. 181 | 182 | 7.3 CERN may publish updated versions and variants of this Licence 183 | which it considers to be in the spirit of this version, but may 184 | differ in detail to address new problems or concerns. New 185 | versions will be published with a unique version number and a 186 | variant identifier specifying the variant. If the Licensor has 187 | specified that a given variant applies to the Covered Source 188 | without specifying a version, You may treat that Covered Source 189 | as being released under any version of the CERN-OHL with that 190 | variant. If no variant is specified, the Covered Source shall be 191 | treated as being released under CERN-OHL-S. The Licensor may 192 | also specify that the Covered Source is subject to a specific 193 | version of the CERN-OHL or any later version in which case You 194 | may apply this or any later version of CERN-OHL with the same 195 | variant identifier published by CERN. 196 | 197 | 7.4 This Licence shall not be enforceable except by a Licensor 198 | acting as such, and third party beneficiary rights are 199 | specifically excluded. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # NumBLE Wireless Numpad 2 | 3 | NumBLE is a Bluetooth numpad with 3D printed case, based on the 4 | [Nordic nNRF52840 SoC](https://www.nordicsemi.com/Products/Low-power-short-range-wireless/nRF52840). 5 | It supports 21-key, 22-key, and 24-key layouts, and the top-left key can be 6 | replaced with a rotary encoder. It is powered by up to an 1200 mAh Li-Po battery 7 | with a 2-pin JST Ph connector (such as those sold by [Adafruit](https://www.adafruit.com/category/574)) 8 | and supports USB-C for charging and wired operation. 9 | 10 | This is a DIY project and is not sold anywhere. 11 | [Check the wiki](https://github.com/joelspadin/NumBLE/wiki) for instructions on 12 | how to build one. 13 | 14 | ![Numpad render](case/renders/NumBLE.png) 15 | 16 | ## Hardware 17 | 18 | The PCB is hand-solderable, though it uses many small parts which are difficult 19 | to solder by hand. It supports an optional fuel gauge IC, which provides more 20 | accurate battery status but requires reflow soldering. The [pcb folder](pcb) 21 | contains a [KiCad](https://www.kicad.org/) project (requires KiCad 5.99 nightly 22 | builds). 23 | 24 | The [case folder](case) contains the design files for the case and plate. The 25 | case is 3D printed in two parts, and the plate is attached to the bottom with 26 | four bolts into threaded inserts. The top attaches to the bottom with magnets 27 | glued into both halves. 28 | 29 | Removing the top of the case exposes power and reset switches. The power switch 30 | only affects the numpad when in wireless mode. When wired, it is always powered 31 | and will charge the battery regardless of the position of the power switch. 32 | 33 | ## Software 34 | 35 | NumBLE runs [ZMK Firmware](https://zmkfirmware.dev/). The [config folder](config) 36 | holds the source files for the firmware. To customize the keymap, create a new 37 | repo using the [ZMK Config Template](https://github.com/zmkfirmware/unified-zmk-config-template), 38 | then edit the `config/west.yml` file to include this repo as an additional module. 39 | 40 | Next, edit the `build.yaml` file and add 41 | 42 | ```ymal 43 | include: 44 | - board: numble 45 | - board: numble 46 | shield: settings_reset 47 | ``` 48 | 49 | Commit and push the changes to GitHub, and it will automatically build the new 50 | firmware for you. Check the "Actions" tab above for the build results. 51 | 52 | The bootloader is built with [my fork of Adafruit's nRF52 bootloader](https://github.com/joelspadin/Adafruit_nRF52_Bootloader). 53 | 54 | There are other firmwares that can run on an nRF52, and I will be happy to 55 | answer questions on setting them up for NumBLE, but I do not plan to personally 56 | support them. 57 | 58 | The bootloader included in the releases does not contain the SoftDevice, as 59 | Zephyr does not need it. If you'd like to run firmware that requires the 60 | SoftDevice, you can either compile the bootloader yourself, or let me know and I 61 | can include multiple versions of the bootloader in releases. 62 | 63 | ## Status 64 | 65 | Some parts of the hardware have not yet been fully tested. 66 | 67 | | Feature | Status | 68 | | --------------------------------- | ------------------------------------------------------- | 69 | | 21-key layout | Working | 70 | | 22-key layout | Untested | 71 | | 24-key layout | Untested | 72 | | Encoder | Untested | 73 | | Battery reporting with fuel gauge | Partially tested, requires driver updates in Zephyr 2.6 | 74 | | Voltage-based battery reporting | Working | 75 | 76 | ## More Renders 77 | 78 | ![Battery compartment](case/renders/Battery.png) 79 | 80 | ![Bottom half](case/renders/Bottom.png) 81 | 82 | ## Credits 83 | 84 | The case was designed with [Fusion 360](https://www.autodesk.com/products/fusion-360). 85 | Renders use the [Interior HDRI free pack](https://www.maximeroz.com/hdri-free-pack) 86 | by Maxime Roz. 87 | 88 | The KiCAD project uses symbols and footprints from: 89 | 90 | - [ai03-2725/MX_Alps_Hybrid](https://github.com/ai03-2725/MX_Alps_Hybrid) 91 | - [ai03-2725/Type-C.pretty](https://github.com/ai03-2725/Type-C.pretty) 92 | - [joric/nrfmicro](https://github.com/joric/nrfmicro) 93 | -------------------------------------------------------------------------------- /boards/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Joel Spadin 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /boards/arm/numble/Kconfig: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: MIT 2 | 3 | if BOARD_NUMBLE 4 | 5 | config BOARD_ENABLE_DCDC 6 | bool "DCDC mode" 7 | select SOC_DCDC_NRF52X 8 | default y 9 | 10 | config BOARD_ENABLE_DCDC_HV 11 | bool "High Voltage DCDC converter" 12 | select SOC_DCDC_NRF52X_HV 13 | default y 14 | 15 | endif -------------------------------------------------------------------------------- /boards/arm/numble/Kconfig.board: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: MIT 2 | 3 | config BOARD_NUMBLE 4 | bool "NumBLE" 5 | depends on SOC_NRF52840_QIAA 6 | -------------------------------------------------------------------------------- /boards/arm/numble/Kconfig.defconfig: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: MIT 2 | 3 | if BOARD_NUMBLE 4 | 5 | config ZMK_KEYBOARD_NAME 6 | default "NumBLE" 7 | 8 | if USB 9 | 10 | config USB_NRFX 11 | default y 12 | 13 | config USB_DEVICE_STACK 14 | default y 15 | 16 | endif # USB 17 | 18 | config BT_CTLR 19 | default BT 20 | 21 | config ZMK_BATTERY_NRF_VDDH 22 | default y 23 | 24 | endif # BOARD_NUMBLE -------------------------------------------------------------------------------- /boards/arm/numble/board.cmake: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: MIT 2 | 3 | board_runner_args(nrfjprog "--nrf-family=NRF52" "--softreset") 4 | include(${ZEPHYR_BASE}/boards/common/uf2.board.cmake) 5 | include(${ZEPHYR_BASE}/boards/common/nrfjprog.board.cmake) 6 | -------------------------------------------------------------------------------- /boards/arm/numble/numble-pinctrl.dtsi: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2023 Joel Spadin 3 | * 4 | * SPDX-License-Identifier: MIT 5 | */ 6 | 7 | #include 8 | 9 | &pinctrl { 10 | uart0_default: uart0_default { 11 | group1 { 12 | psels = ; 13 | bias-pull-up; 14 | }; 15 | group2 { 16 | psels = ; 17 | }; 18 | }; 19 | 20 | uart0_sleep: uart0_sleep { 21 | group1 { 22 | psels = , 23 | ; 24 | low-power-enable; 25 | }; 26 | }; 27 | 28 | i2c0_default: i2c0_default { 29 | group1 { 30 | psels = , 31 | ; 32 | }; 33 | }; 34 | 35 | i2c0_sleep: i2c0_sleep { 36 | group1 { 37 | psels = , 38 | ; 39 | low-power-enable; 40 | }; 41 | }; 42 | }; 43 | -------------------------------------------------------------------------------- /boards/arm/numble/numble.conf: -------------------------------------------------------------------------------- 1 | # Uncomment to enable encoder 2 | # CONFIG_EC11=y 3 | # CONFIG_EC11_TRIGGER_GLOBAL_THREAD=y 4 | 5 | # Uncomment to enable fuel gauge sensor 6 | # CONFIG_I2C=y 7 | # CONFIG_MAX17055=y 8 | 9 | # Uncomment to enable logging 10 | # CONFIG_ZMK_USB_LOGGING=y -------------------------------------------------------------------------------- /boards/arm/numble/numble.dts: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2021 Joel Spadin 3 | * 4 | * SPDX-License-Identifier: MIT 5 | */ 6 | 7 | /dts-v1/; 8 | #include 9 | #include 10 | 11 | #include "numble-pinctrl.dtsi" 12 | 13 | / { 14 | model = "NumBLE"; 15 | compatible = "spadin,numble"; 16 | 17 | chosen { 18 | zephyr,code-partition = &code_partition; 19 | zephyr,console = &cdc_acm_uart; 20 | zephyr,sram = &sram0; 21 | zephyr,flash = &flash0; 22 | zmk,battery = &vbatt; 23 | zmk,kscan = &kscan0; 24 | zmk,matrix_transform = &transform_numpad_21; 25 | }; 26 | 27 | kscan0: kscan { 28 | compatible = "zmk,kscan-gpio-matrix"; 29 | 30 | diode-direction = "col2row"; 31 | col-gpios 32 | = <&gpio0 29 GPIO_ACTIVE_HIGH> 33 | , <&gpio0 31 GPIO_ACTIVE_HIGH> 34 | , <&gpio0 30 GPIO_ACTIVE_HIGH> 35 | , <&gpio0 28 GPIO_ACTIVE_HIGH> 36 | ; 37 | row-gpios 38 | = <&gpio0 13 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> 39 | , <&gpio0 2 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> 40 | , <&gpio1 13 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> 41 | , <&gpio0 3 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> 42 | , <&gpio1 10 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> 43 | , <&gpio1 11 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> 44 | ; 45 | }; 46 | 47 | // 21-key numpad 48 | transform_numpad_21: keymap_transform_0 { 49 | compatible = "zmk,matrix-transform"; 50 | columns = <4>; 51 | rows = <6>; 52 | map = < 53 | RC(0,0) RC(0,1) RC(0,2) RC(0,3) 54 | RC(1,0) RC(1,1) RC(1,2) RC(1,3) 55 | RC(2,0) RC(2,1) RC(2,2) RC(2,3) 56 | RC(3,0) RC(3,1) RC(3,2) 57 | RC(4,0) RC(4,1) RC(4,2) RC(4,3) 58 | RC(5,0) RC(5,2) 59 | >; 60 | }; 61 | 62 | // 22-key numpad 63 | transform_numpad_22: keymap_transform_1 { 64 | compatible = "zmk,matrix-transform"; 65 | columns = <4>; 66 | rows = <6>; 67 | map = < 68 | RC(0,0) RC(0,1) RC(0,2) RC(0,3) 69 | RC(1,0) RC(1,1) RC(1,2) RC(1,3) 70 | RC(2,0) RC(2,1) RC(2,2) RC(2,3) 71 | RC(3,0) RC(3,1) RC(3,2) 72 | RC(4,0) RC(4,1) RC(4,2) RC(4,3) 73 | RC(5,0) RC(5,1) RC(5,2) 74 | >; 75 | }; 76 | 77 | // 24-key macropad 78 | transform_macropad: keymap_transform_2 { 79 | compatible = "zmk,matrix-transform"; 80 | columns = <4>; 81 | rows = <6>; 82 | map = < 83 | RC(0,0) RC(0,1) RC(0,2) RC(0,3) 84 | RC(1,0) RC(1,1) RC(1,2) RC(1,3) 85 | RC(2,0) RC(2,1) RC(2,2) RC(2,3) 86 | RC(3,0) RC(3,1) RC(3,2) RC(3,3) 87 | RC(4,0) RC(4,1) RC(4,2) RC(4,3) 88 | RC(5,0) RC(5,1) RC(5,2) RC(5,3) 89 | >; 90 | }; 91 | 92 | encoder: encoder { 93 | compatible = "alps,ec11"; 94 | a-gpios = <&gpio0 10 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; 95 | b-gpios = <&gpio0 24 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; 96 | resolution = <2>; 97 | status = "disabled"; 98 | }; 99 | 100 | leds { 101 | compatible = "gpio-leds"; 102 | 103 | status_led: led_0 { 104 | gpios = <&gpio0 9 GPIO_ACTIVE_HIGH>; 105 | }; 106 | }; 107 | 108 | vbatt: vbatt { 109 | compatible = "zmk,battery-nrf-vddh"; 110 | }; 111 | }; 112 | 113 | &adc { 114 | status = "okay"; 115 | }; 116 | 117 | &gpiote { 118 | status = "okay"; 119 | }; 120 | 121 | &gpio0 { 122 | status = "okay"; 123 | }; 124 | 125 | &gpio1 { 126 | status = "okay"; 127 | }; 128 | 129 | &i2c0 { 130 | compatible = "nordic,nrf-twi"; 131 | status = "okay"; 132 | 133 | pinctrl-0 = <&i2c0_default>; 134 | pinctrl-1 = <&i2c0_sleep>; 135 | pinctrl-names = "default", "sleep"; 136 | 137 | fuel_gauge: max17055@36 { 138 | compatible = "maxim,max17055"; 139 | reg = <0x36>; 140 | 141 | design-capacity = <1200>; 142 | design-voltage = <3700>; 143 | desired-voltage = <4200>; 144 | desired-charging-current = <400>; 145 | i-chg-term = <30>; 146 | rsense-mohms = <5>; 147 | v-empty = <3000>; 148 | }; 149 | }; 150 | 151 | &usbd { 152 | status = "okay"; 153 | 154 | cdc_acm_uart: cdc_acm_uart { 155 | compatible = "zephyr,cdc-acm-uart"; 156 | }; 157 | }; 158 | 159 | &flash0 { 160 | // For more information, see 161 | // https://docs.zephyrproject.org/latest/reference/storage/flash_map/flash_map.html 162 | partitions { 163 | compatible = "fixed-partitions"; 164 | #address-cells = <1>; 165 | #size-cells = <1>; 166 | 167 | code_partition: partition@1000 { 168 | reg = <0x00001000 0x000d3000>; 169 | }; 170 | 171 | // The flash starting at 0x000d4000 and ending at 172 | // 0x000f3fff is reserved for use by the application. 173 | 174 | // Storage partition will be used by FCB/LittleFS/NVS if enabled. 175 | storage_partition: partition@d4000 { 176 | reg = <0x000d4000 0x00020000>; 177 | }; 178 | 179 | boot_partition: partition@f4000 { 180 | reg = <0x000f4000 0x0000c000>; 181 | }; 182 | }; 183 | }; 184 | -------------------------------------------------------------------------------- /boards/arm/numble/numble.keymap: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | 6 | // Key code aliases (for better keymap alignment) 7 | #define KP_DIV KP_DIVIDE 8 | #define KP_MULT KP_MULTIPLY 9 | 10 | // Layers 11 | #define DEFAULT 0 12 | #define FN 1 13 | 14 | / { 15 | chosen { 16 | // Change this to match your selected layout: 17 | // &transform_numpad_21 - 21-key numpad 18 | // &transform_numpad_22 - 22-key numpad 19 | // &transform_macropad - 24-key (4x6) macropad 20 | zmk,matrix_transform = &transform_numpad_21; 21 | // Uncomment to enable fuel gauge 22 | // zmk,battery = &fuel_gauge; 23 | }; 24 | 25 | keymap { 26 | compatible = "zmk,keymap"; 27 | 28 | default_layer { 29 | bindings = < 30 | &kp ESC &kp TAB &kp BSPC &mo FN 31 | &kp KP_NUM &kp KP_DIV &kp KP_MULT &kp KP_MINUS 32 | &kp KP_N7 &kp KP_N8 &kp KP_N9 &kp KP_PLUS 33 | &kp KP_N4 &kp KP_N5 &kp KP_N6 34 | &kp KP_N1 &kp KP_N2 &kp KP_N3 &kp KP_ENTER 35 | &kp KP_N0 &kp KP_DOT 36 | >; 37 | 38 | // Uncomment to enable the encoder. 39 | // sensor-bindings = < 40 | // &inc_dec_kp C_VOL_UP C_VOL_DN 41 | // >; 42 | }; 43 | 44 | fn_layer { 45 | bindings = < 46 | &bootloader &trans &trans &trans 47 | &trans &trans &trans &bt BT_CLR 48 | &bt BT_SEL 6 &bt BT_SEL 7 &bt BT_SEL 8 &trans 49 | &bt BT_SEL 3 &bt BT_SEL 4 &bt BT_SEL 5 50 | &bt BT_SEL 0 &bt BT_SEL 1 &bt BT_SEL 2 &trans 51 | &out OUT_USB &out OUT_BLE 52 | >; 53 | }; 54 | }; 55 | 56 | // Uncomment to enable the encoder. 57 | // sensors { 58 | // compatible = "zmk,keymap-sensors"; 59 | // sensors = <&encoder>; 60 | // }; 61 | }; 62 | 63 | // Uncomment to enable the encoder. 64 | // &encoder { 65 | // status = "okay"; 66 | // }; 67 | 68 | &fuel_gauge { 69 | // Your battery capacity in mAh 70 | design-capacity = <1200>; 71 | }; 72 | -------------------------------------------------------------------------------- /boards/arm/numble/numble.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: numble 3 | name: NumBLE 4 | type: board 5 | arch: arm 6 | features: 7 | - keys 8 | - encoder 9 | outputs: 10 | - usb 11 | - ble 12 | url: https://github.com/joelspadin/NumBLE 13 | description: Bluetooth wireless numpad 14 | -------------------------------------------------------------------------------- /boards/arm/numble/numble_defconfig: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: MIT 2 | 3 | CONFIG_SOC_SERIES_NRF52X=y 4 | CONFIG_SOC_NRF52840_QIAA=y 5 | CONFIG_BOARD_NUMBLE=y 6 | CONFIG_BUILD_OUTPUT_UF2=y 7 | 8 | CONFIG_ARM_MPU=y 9 | CONFIG_GPIO=y 10 | CONFIG_PINCTRL=y 11 | 12 | # Place application at &code_partition address 13 | CONFIG_USE_DT_CODE_PARTITION=y 14 | 15 | # Enable NVS for settings 16 | CONFIG_MPU_ALLOW_FLASH_WRITE=y 17 | CONFIG_NVS=y 18 | CONFIG_SETTINGS_NVS=y 19 | CONFIG_FLASH=y 20 | CONFIG_FLASH_PAGE_LAYOUT=y 21 | CONFIG_FLASH_MAP=y 22 | 23 | CONFIG_ZMK_BLE=y 24 | CONFIG_ZMK_USB=y 25 | -------------------------------------------------------------------------------- /build.yaml: -------------------------------------------------------------------------------- 1 | include: 2 | - board: numble 3 | - board: numble 4 | shield: settings_reset 5 | -------------------------------------------------------------------------------- /case/Case Bottom.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joelspadin/NumBLE/1c3cc4c68529ac05006e888e3062a3e412759cdc/case/Case Bottom.stl -------------------------------------------------------------------------------- /case/Case Top.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joelspadin/NumBLE/1c3cc4c68529ac05006e888e3062a3e412759cdc/case/Case Top.stl -------------------------------------------------------------------------------- /case/Plate.dxf: -------------------------------------------------------------------------------- 1 | 0 2 | SECTION 3 | 2 4 | HEADER 5 | 9 6 | $INSUNITS 7 | 70 8 | 4 9 | 9 10 | $ACADVER 11 | 1 12 | AC1014 13 | 9 14 | $HANDSEED 15 | 5 16 | FFFF 17 | 0 18 | ENDSEC 19 | 0 20 | SECTION 21 | 2 22 | TABLES 23 | 0 24 | TABLE 25 | 2 26 | VPORT 27 | 5 28 | 8 29 | 100 30 | AcDbSymbolTable 31 | 0 32 | ENDTAB 33 | 0 34 | TABLE 35 | 2 36 | LTYPE 37 | 5 38 | 5 39 | 100 40 | AcDbSymbolTable 41 | 0 42 | LTYPE 43 | 5 44 | 14 45 | 100 46 | AcDbSymbolTableRecord 47 | 100 48 | AcDbLinetypeTableRecord 49 | 2 50 | BYBLOCK 51 | 70 52 | 0 53 | 0 54 | LTYPE 55 | 5 56 | 15 57 | 100 58 | AcDbSymbolTableRecord 59 | 100 60 | AcDbLinetypeTableRecord 61 | 2 62 | BYLAYER 63 | 70 64 | 0 65 | 0 66 | ENDTAB 67 | 0 68 | TABLE 69 | 2 70 | LAYER 71 | 5 72 | 2 73 | 100 74 | AcDbSymbolTable 75 | 70 76 | 2 77 | 0 78 | LAYER 79 | 5 80 | 50 81 | 100 82 | AcDbSymbolTableRecord 83 | 100 84 | AcDbLayerTableRecord 85 | 2 86 | 0 87 | 70 88 | 0 89 | 6 90 | CONTINUOUS 91 | 0 92 | ENDTAB 93 | 0 94 | TABLE 95 | 2 96 | STYLE 97 | 5 98 | 3 99 | 100 100 | AcDbSymbolTable 101 | 70 102 | 1 103 | 0 104 | STYLE 105 | 5 106 | 11 107 | 100 108 | AcDbSymbolTableRecord 109 | 100 110 | AcDbTextStyleTableRecord 111 | 2 112 | STANDARD 113 | 70 114 | 0 115 | 0 116 | ENDTAB 117 | 0 118 | TABLE 119 | 2 120 | VIEW 121 | 5 122 | 6 123 | 100 124 | AcDbSymbolTable 125 | 70 126 | 0 127 | 0 128 | ENDTAB 129 | 0 130 | TABLE 131 | 2 132 | UCS 133 | 5 134 | 7 135 | 100 136 | AcDbSymbolTable 137 | 70 138 | 0 139 | 0 140 | ENDTAB 141 | 0 142 | TABLE 143 | 2 144 | APPID 145 | 5 146 | 9 147 | 100 148 | AcDbSymbolTable 149 | 70 150 | 2 151 | 0 152 | APPID 153 | 5 154 | 12 155 | 100 156 | AcDbSymbolTableRecord 157 | 100 158 | AcDbRegAppTableRecord 159 | 2 160 | ACAD 161 | 70 162 | 0 163 | 0 164 | ENDTAB 165 | 0 166 | TABLE 167 | 2 168 | DIMSTYLE 169 | 5 170 | A 171 | 100 172 | AcDbSymbolTable 173 | 70 174 | 1 175 | 0 176 | ENDTAB 177 | 0 178 | TABLE 179 | 2 180 | BLOCK_RECORD 181 | 5 182 | 1 183 | 100 184 | AcDbSymbolTable 185 | 70 186 | 1 187 | 0 188 | BLOCK_RECORD 189 | 5 190 | 1F 191 | 100 192 | AcDbSymbolTableRecord 193 | 100 194 | AcDbBlockTableRecord 195 | 2 196 | *MODEL_SPACE 197 | 0 198 | BLOCK_RECORD 199 | 5 200 | 1B 201 | 100 202 | AcDbSymbolTableRecord 203 | 100 204 | AcDbBlockTableRecord 205 | 2 206 | *PAPER_SPACE 207 | 0 208 | ENDTAB 209 | 0 210 | ENDSEC 211 | 0 212 | SECTION 213 | 2 214 | BLOCKS 215 | 0 216 | BLOCK 217 | 5 218 | 20 219 | 100 220 | AcDbEntity 221 | 100 222 | AcDbBlockBegin 223 | 2 224 | *MODEL_SPACE 225 | 0 226 | ENDBLK 227 | 5 228 | 21 229 | 100 230 | AcDbEntity 231 | 100 232 | AcDbBlockEnd 233 | 0 234 | BLOCK 235 | 5 236 | 1C 237 | 100 238 | AcDbEntity 239 | 100 240 | AcDbBlockBegin 241 | 2 242 | *PAPER_SPACE 243 | 0 244 | ENDBLK 245 | 5 246 | 1D 247 | 100 248 | AcDbEntity 249 | 100 250 | AcDbBlockEnd 251 | 0 252 | ENDSEC 253 | 0 254 | SECTION 255 | 2 256 | ENTITIES 257 | 0 258 | LWPOLYLINE 259 | 5 260 | 100 261 | 100 262 | AcDbEntity 263 | 8 264 | 0 265 | 100 266 | AcDbPolyline 267 | 90 268 | 8 269 | 70 270 | 1 271 | 43 272 | 0.0 273 | 10 274 | 39.174999999999997 275 | 20 276 | 9.8000000000000007 277 | 42 278 | -0.41421356237309243 279 | 10 280 | 41.174999999999997 281 | 20 282 | 7.7999999999999936 283 | 10 284 | 41.17499999999999 285 | 20 286 | -126.57500000000002 287 | 42 288 | -0.41421356237309176 289 | 10 290 | 39.174999999999983 291 | 20 292 | -128.57500000000002 293 | 10 294 | -39.17499999999999 295 | 20 296 | -128.57500000000002 297 | 42 298 | -0.41421356237309631 299 | 10 300 | -41.174999999999997 301 | 20 302 | -126.57500000000002 303 | 10 304 | -41.17499999999999 305 | 20 306 | 7.7999999999999936 307 | 42 308 | -0.41421356237309342 309 | 10 310 | -39.174999999999997 311 | 20 312 | 9.7999999999999847 313 | 0 314 | LWPOLYLINE 315 | 5 316 | 101 317 | 100 318 | AcDbEntity 319 | 8 320 | 0 321 | 100 322 | AcDbPolyline 323 | 90 324 | 24 325 | 70 326 | 1 327 | 43 328 | 0.0 329 | 10 330 | -21.575000000000006 331 | 20 332 | -70.125 333 | 42 334 | -0.41421356237307422 335 | 10 336 | -21.325000000000003 337 | 20 338 | -69.875 339 | 10 340 | -21.074999999999999 341 | 20 342 | -69.875 343 | 42 344 | 0.41421356237309503 345 | 10 346 | -20.575000000000003 347 | 20 348 | -69.375 349 | 10 350 | -20.575000000000003 351 | 20 352 | -63.625 353 | 42 354 | 0.41421356237309503 355 | 10 356 | -21.074999999999999 357 | 20 358 | -63.125 359 | 10 360 | -21.325000000000003 361 | 20 362 | -63.125 363 | 42 364 | -0.41421356237310542 365 | 10 366 | -21.575000000000003 367 | 20 368 | -62.875 369 | 10 370 | -21.574999999999996 371 | 20 372 | -46.375000000000014 373 | 42 374 | -0.41421356237310542 375 | 10 376 | -21.325000000000003 377 | 20 378 | -46.125000000000007 379 | 10 380 | -21.074999999999999 381 | 20 382 | -46.125 383 | 42 384 | 0.41421356237309503 385 | 10 386 | -20.575000000000003 387 | 20 388 | -45.625 389 | 10 390 | -20.575000000000003 391 | 20 392 | -39.875000000000007 393 | 42 394 | 0.41421356237309503 395 | 10 396 | -21.074999999999999 397 | 20 398 | -39.375000000000007 399 | 10 400 | -21.325000000000003 401 | 20 402 | -39.375000000000007 403 | 42 404 | -0.41421356237310542 405 | 10 406 | -21.575000000000003 407 | 20 408 | -39.125000000000007 409 | 10 410 | -21.575000000000003 411 | 20 412 | -38.600000000000001 413 | 42 414 | 0.41421356237309503 415 | 10 416 | -22.074999999999999 417 | 20 418 | -38.100000000000009 419 | 10 420 | -35.07500000000001 421 | 20 422 | -38.100000000000009 423 | 42 424 | 0.41421356237309503 425 | 10 426 | -35.575000000000003 427 | 20 428 | -38.600000000000001 429 | 10 430 | -35.575000000000003 431 | 20 432 | -70.650000000000006 433 | 42 434 | 0.41421356237309503 435 | 10 436 | -35.07500000000001 437 | 20 438 | -71.150000000000006 439 | 10 440 | -22.074999999999999 441 | 20 442 | -71.150000000000006 443 | 42 444 | 0.41421356237309503 445 | 10 446 | -21.575000000000003 447 | 20 448 | -70.650000000000006 449 | 0 450 | LWPOLYLINE 451 | 5 452 | 102 453 | 100 454 | AcDbEntity 455 | 8 456 | 0 457 | 100 458 | AcDbPolyline 459 | 90 460 | 24 461 | 70 462 | 1 463 | 43 464 | 0.0 465 | 10 466 | -21.575000000000003 467 | 20 468 | -32.025000000000006 469 | 42 470 | -0.41421356237310542 471 | 10 472 | -21.325000000000003 473 | 20 474 | -31.775000000000006 475 | 10 476 | -21.074999999999999 477 | 20 478 | -31.775000000000006 479 | 42 480 | 0.41421356237309503 481 | 10 482 | -20.575000000000003 483 | 20 484 | -31.275000000000009 485 | 10 486 | -20.575000000000003 487 | 20 488 | -25.525000000000002 489 | 42 490 | 0.41421356237309503 491 | 10 492 | -21.074999999999999 493 | 20 494 | -25.025000000000006 495 | 10 496 | -21.325000000000003 497 | 20 498 | -25.024999999999999 499 | 42 500 | -0.41421356237310542 501 | 10 502 | -21.575000000000003 503 | 20 504 | -24.774999999999999 505 | 10 506 | -21.575000000000003 507 | 20 508 | -8.2750000000000021 509 | 42 510 | -0.41421356237309631 511 | 10 512 | -21.325000000000003 513 | 20 514 | -8.0250000000000021 515 | 10 516 | -21.074999999999999 517 | 20 518 | -8.0250000000000021 519 | 42 520 | 0.41421356237309503 521 | 10 522 | -20.575000000000003 523 | 20 524 | -7.5250000000000021 525 | 10 526 | -20.575000000000006 527 | 20 528 | -1.6250000000000009 529 | 42 530 | 0.4142135623730947 531 | 10 532 | -21.075000000000003 533 | 20 534 | -1.1250000000000016 535 | 10 536 | -21.325000000000003 537 | 20 538 | -1.1250000000000022 539 | 42 540 | -0.41421356237309664 541 | 10 542 | -21.575000000000003 543 | 20 544 | -0.87500000000000155 545 | 10 546 | -21.575000000000003 547 | 20 548 | -0.50000000000000011 549 | 42 550 | 0.41421356237309509 551 | 10 552 | -22.074999999999999 553 | 20 554 | 0 555 | 10 556 | -35.07500000000001 557 | 20 558 | 0 559 | 42 560 | 0.41421356237309398 561 | 10 562 | -35.575000000000003 563 | 20 564 | -0.49999999999999822 565 | 10 566 | -35.575000000000003 567 | 20 568 | -32.550000000000011 569 | 42 570 | 0.41421356237309503 571 | 10 572 | -35.07500000000001 573 | 20 574 | -33.050000000000004 575 | 10 576 | -22.074999999999999 577 | 20 578 | -33.050000000000004 579 | 42 580 | 0.41421356237309503 581 | 10 582 | -21.575000000000003 583 | 20 584 | -32.550000000000011 585 | 0 586 | LWPOLYLINE 587 | 5 588 | 103 589 | 100 590 | AcDbEntity 591 | 8 592 | 0 593 | 100 594 | AcDbPolyline 595 | 90 596 | 24 597 | 70 598 | 1 599 | 43 600 | 0.0 601 | 10 602 | 3.400000000000003 603 | 20 604 | -14.000000000000002 605 | 42 606 | -0.41421356237309959 607 | 10 608 | 3.6500000000000044 609 | 20 610 | -14.249999999999998 611 | 10 612 | 3.6500000000000039 613 | 20 614 | -14.500000000000002 615 | 42 616 | 0.41421356237309631 617 | 10 618 | 4.1500000000000039 619 | 20 620 | -15.000000000000004 621 | 10 622 | 10.050000000000001 623 | 20 624 | -15.000000000000004 625 | 42 626 | 0.41421356237309503 627 | 10 628 | 10.550000000000001 629 | 20 630 | -14.500000000000004 631 | 10 632 | 10.550000000000001 633 | 20 634 | -14.25 635 | 42 636 | -0.41421356237309503 637 | 10 638 | 10.800000000000001 639 | 20 640 | -14.000000000000002 641 | 10 642 | 27.300000000000004 643 | 20 644 | -14 645 | 42 646 | -0.41421356237309764 647 | 10 648 | 27.550000000000004 649 | 20 650 | -14.25 651 | 10 652 | 27.550000000000004 653 | 20 654 | -14.500000000000002 655 | 42 656 | 0.41421356237309503 657 | 10 658 | 28.050000000000001 659 | 20 660 | -15.000000000000002 661 | 10 662 | 33.950000000000003 663 | 20 664 | -15.000000000000002 665 | 42 666 | 0.41421356237309503 667 | 10 668 | 34.450000000000003 669 | 20 670 | -14.500000000000002 671 | 10 672 | 34.45000000000001 673 | 20 674 | -14.25 675 | 42 676 | -0.41421356237309764 677 | 10 678 | 34.700000000000003 679 | 20 680 | -14.000000000000002 681 | 10 682 | 35.07500000000001 683 | 20 684 | -14.000000000000002 685 | 42 686 | 0.41421356237309503 687 | 10 688 | 35.575000000000003 689 | 20 690 | -13.5 691 | 10 692 | 35.575000000000003 693 | 20 694 | -0.50000000000000056 695 | 42 696 | 0.41421356237309248 697 | 10 698 | 35.07500000000001 699 | 20 700 | 0 701 | 10 702 | 3.0249999999999999 703 | 20 704 | 0 705 | 42 706 | 0.41421356237309531 707 | 10 708 | 2.5249999999999995 709 | 20 710 | -0.50000000000000044 711 | 10 712 | 2.5249999999999999 713 | 20 714 | -13.5 715 | 42 716 | 0.41421356237309503 717 | 10 718 | 3.0249999999999999 719 | 20 720 | -14.000000000000002 721 | 0 722 | LWPOLYLINE 723 | 5 724 | 104 725 | 100 726 | AcDbEntity 727 | 8 728 | 0 729 | 100 730 | AcDbPolyline 731 | 90 732 | 8 733 | 70 734 | 1 735 | 43 736 | 0.0 737 | 10 738 | -22.074999999999999 739 | 20 740 | -104.77500000000001 741 | 10 742 | -35.07500000000001 743 | 20 744 | -104.77500000000001 745 | 42 746 | 0.41421356237309503 747 | 10 748 | -35.575000000000003 749 | 20 750 | -105.27500000000002 751 | 10 752 | -35.575000000000003 753 | 20 754 | -118.27500000000001 755 | 42 756 | 0.41421356237309503 757 | 10 758 | -35.07500000000001 759 | 20 760 | -118.77500000000001 761 | 10 762 | -22.074999999999999 763 | 20 764 | -118.77500000000001 765 | 42 766 | 0.41421356237309503 767 | 10 768 | -21.575000000000003 769 | 20 770 | -118.27500000000001 771 | 10 772 | -21.575000000000003 773 | 20 774 | -105.27500000000002 775 | 42 776 | 0.41421356237309503 777 | 0 778 | LWPOLYLINE 779 | 5 780 | 105 781 | 100 782 | AcDbEntity 783 | 8 784 | 0 785 | 100 786 | AcDbPolyline 787 | 90 788 | 8 789 | 70 790 | 1 791 | 43 792 | 0.0 793 | 10 794 | -2.5249999999999995 795 | 20 796 | -118.27500000000001 797 | 10 798 | -2.5249999999999995 799 | 20 800 | -105.27500000000002 801 | 42 802 | 0.41421356237309503 803 | 10 804 | -3.0249999999999999 805 | 20 806 | -104.77500000000001 807 | 10 808 | -16.025000000000002 809 | 20 810 | -104.77500000000001 811 | 42 812 | 0.41421356237309503 813 | 10 814 | -16.525000000000002 815 | 20 816 | -105.27500000000002 817 | 10 818 | -16.525000000000006 819 | 20 820 | -118.27500000000001 821 | 42 822 | 0.41421356237309503 823 | 10 824 | -16.025000000000006 825 | 20 826 | -118.77500000000001 827 | 10 828 | -3.0249999999999986 829 | 20 830 | -118.77500000000001 831 | 42 832 | 0.41421356237309503 833 | 0 834 | LWPOLYLINE 835 | 5 836 | 106 837 | 100 838 | AcDbEntity 839 | 8 840 | 0 841 | 100 842 | AcDbPolyline 843 | 90 844 | 8 845 | 70 846 | 1 847 | 43 848 | 0.0 849 | 10 850 | 3.0249999999999999 851 | 20 852 | -118.77500000000001 853 | 10 854 | 16.025000000000002 855 | 20 856 | -118.77500000000001 857 | 42 858 | 0.41421356237309503 859 | 10 860 | 16.525000000000002 861 | 20 862 | -118.27500000000001 863 | 10 864 | 16.525000000000006 865 | 20 866 | -105.27500000000002 867 | 42 868 | 0.41421356237309503 869 | 10 870 | 16.025000000000006 871 | 20 872 | -104.77500000000001 873 | 10 874 | 3.0249999999999986 875 | 20 876 | -104.77500000000001 877 | 42 878 | 0.41421356237309503 879 | 10 880 | 2.5249999999999995 881 | 20 882 | -105.27500000000002 883 | 10 884 | 2.5250000000000004 885 | 20 886 | -118.27500000000001 887 | 42 888 | 0.4142135623730947 889 | 0 890 | LWPOLYLINE 891 | 5 892 | 107 893 | 100 894 | AcDbEntity 895 | 8 896 | 0 897 | 100 898 | AcDbPolyline 899 | 90 900 | 8 901 | 70 902 | 1 903 | 43 904 | 0.0 905 | 10 906 | 21.575000000000003 907 | 20 908 | -105.27500000000002 909 | 10 910 | 21.575000000000003 911 | 20 912 | -118.27500000000001 913 | 42 914 | 0.41421356237309503 915 | 10 916 | 22.074999999999999 917 | 20 918 | -118.77500000000001 919 | 10 920 | 35.07500000000001 921 | 20 922 | -118.77500000000001 923 | 42 924 | 0.41421356237309503 925 | 10 926 | 35.575000000000003 927 | 20 928 | -118.27500000000001 929 | 10 930 | 35.575000000000003 931 | 20 932 | -105.27500000000002 933 | 42 934 | 0.41421356237309503 935 | 10 936 | 35.07500000000001 937 | 20 938 | -104.77500000000001 939 | 10 940 | 22.074999999999999 941 | 20 942 | -104.77500000000001 943 | 42 944 | 0.41421356237309503 945 | 0 946 | LWPOLYLINE 947 | 5 948 | 108 949 | 100 950 | AcDbEntity 951 | 8 952 | 0 953 | 100 954 | AcDbPolyline 955 | 90 956 | 8 957 | 70 958 | 1 959 | 43 960 | 0.0 961 | 10 962 | -35.575000000000003 963 | 20 964 | -76.700000000000017 965 | 10 966 | -35.575000000000003 967 | 20 968 | -89.700000000000003 969 | 42 970 | 0.41421356237309503 971 | 10 972 | -35.07500000000001 973 | 20 974 | -90.200000000000017 975 | 10 976 | -22.074999999999999 977 | 20 978 | -90.200000000000017 979 | 42 980 | 0.41421356237309503 981 | 10 982 | -21.575000000000003 983 | 20 984 | -89.700000000000003 985 | 10 986 | -21.575000000000003 987 | 20 988 | -76.700000000000003 989 | 42 990 | 0.41421356237309503 991 | 10 992 | -22.074999999999999 993 | 20 994 | -76.200000000000017 995 | 10 996 | -35.07500000000001 997 | 20 998 | -76.200000000000017 999 | 42 1000 | 0.41421356237309503 1001 | 0 1002 | CIRCLE 1003 | 5 1004 | 109 1005 | 100 1006 | AcDbEntity 1007 | 8 1008 | 0 1009 | 100 1010 | AcDbCircle 1011 | 10 1012 | -19.050000000000011 1013 | 20 1014 | 6.7499999999999938 1015 | 30 1016 | 0 1017 | 40 1018 | 1.5500000000000003 1019 | 210 1020 | 0 1021 | 220 1022 | -0 1023 | 230 1024 | 1 1025 | 0 1026 | LWPOLYLINE 1027 | 5 1028 | 110 1029 | 100 1030 | AcDbEntity 1031 | 8 1032 | 0 1033 | 100 1034 | AcDbPolyline 1035 | 90 1036 | 8 1037 | 70 1038 | 1 1039 | 43 1040 | 0.0 1041 | 10 1042 | -16.525000000000002 1043 | 20 1044 | -76.700000000000017 1045 | 10 1046 | -16.525000000000002 1047 | 20 1048 | -89.700000000000003 1049 | 42 1050 | 0.41421356237309503 1051 | 10 1052 | -16.025000000000006 1053 | 20 1054 | -90.200000000000017 1055 | 10 1056 | -3.0249999999999986 1057 | 20 1058 | -90.200000000000017 1059 | 42 1060 | 0.41421356237309503 1061 | 10 1062 | -2.5249999999999995 1063 | 20 1064 | -89.700000000000003 1065 | 10 1066 | -2.5249999999999999 1067 | 20 1068 | -76.700000000000003 1069 | 42 1070 | 0.41421356237309503 1071 | 10 1072 | -3.0249999999999999 1073 | 20 1074 | -76.200000000000017 1075 | 10 1076 | -16.025000000000002 1077 | 20 1078 | -76.200000000000017 1079 | 42 1080 | 0.41421356237309503 1081 | 0 1082 | CIRCLE 1083 | 5 1084 | 111 1085 | 100 1086 | AcDbEntity 1087 | 8 1088 | 0 1089 | 100 1090 | AcDbCircle 1091 | 10 1092 | -19.049999999999866 1093 | 20 1094 | -125.52500000000002 1095 | 30 1096 | 0 1097 | 40 1098 | 1.5500000000000025 1099 | 210 1100 | 0 1101 | 220 1102 | -0 1103 | 230 1104 | 1 1105 | 0 1106 | LWPOLYLINE 1107 | 5 1108 | 112 1109 | 100 1110 | AcDbEntity 1111 | 8 1112 | 0 1113 | 100 1114 | AcDbPolyline 1115 | 90 1116 | 8 1117 | 70 1118 | 1 1119 | 43 1120 | 0.0 1121 | 10 1122 | 21.575000000000003 1123 | 20 1124 | -38.600000000000001 1125 | 10 1126 | 21.575000000000003 1127 | 20 1128 | -51.600000000000009 1129 | 42 1130 | 0.41421356237309503 1131 | 10 1132 | 22.074999999999999 1133 | 20 1134 | -52.100000000000009 1135 | 10 1136 | 35.07500000000001 1137 | 20 1138 | -52.100000000000001 1139 | 42 1140 | 0.41421356237309503 1141 | 10 1142 | 35.575000000000003 1143 | 20 1144 | -51.600000000000001 1145 | 10 1146 | 35.575000000000003 1147 | 20 1148 | -38.600000000000001 1149 | 42 1150 | 0.41421356237309503 1151 | 10 1152 | 35.07500000000001 1153 | 20 1154 | -38.100000000000009 1155 | 10 1156 | 22.074999999999999 1157 | 20 1158 | -38.100000000000009 1159 | 42 1160 | 0.41421356237309503 1161 | 0 1162 | LWPOLYLINE 1163 | 5 1164 | 113 1165 | 100 1166 | AcDbEntity 1167 | 8 1168 | 0 1169 | 100 1170 | AcDbPolyline 1171 | 90 1172 | 8 1173 | 70 1174 | 1 1175 | 43 1176 | 0.0 1177 | 10 1178 | -16.525000000000002 1179 | 20 1180 | -19.550000000000001 1181 | 10 1182 | -16.525000000000002 1183 | 20 1184 | -32.550000000000011 1185 | 42 1186 | 0.41421356237309503 1187 | 10 1188 | -16.025000000000006 1189 | 20 1190 | -33.050000000000004 1191 | 10 1192 | -3.0249999999999986 1193 | 20 1194 | -33.050000000000004 1195 | 42 1196 | 0.41421356237309503 1197 | 10 1198 | -2.5249999999999995 1199 | 20 1200 | -32.550000000000011 1201 | 10 1202 | -2.5249999999999999 1203 | 20 1204 | -19.550000000000004 1205 | 42 1206 | 0.41421356237309503 1207 | 10 1208 | -3.0249999999999999 1209 | 20 1210 | -19.050000000000004 1211 | 10 1212 | -16.025000000000002 1213 | 20 1214 | -19.050000000000001 1215 | 42 1216 | 0.41421356237309503 1217 | 0 1218 | LWPOLYLINE 1219 | 5 1220 | 114 1221 | 100 1222 | AcDbEntity 1223 | 8 1224 | 0 1225 | 100 1226 | AcDbPolyline 1227 | 90 1228 | 8 1229 | 70 1230 | 1 1231 | 43 1232 | 0.0 1233 | 10 1234 | 2.5249999999999995 1235 | 20 1236 | -19.550000000000001 1237 | 10 1238 | 2.5249999999999995 1239 | 20 1240 | -32.550000000000011 1241 | 42 1242 | 0.41421356237309503 1243 | 10 1244 | 3.0249999999999999 1245 | 20 1246 | -33.050000000000004 1247 | 10 1248 | 16.025000000000002 1249 | 20 1250 | -33.050000000000004 1251 | 42 1252 | 0.41421356237309503 1253 | 10 1254 | 16.525000000000002 1255 | 20 1256 | -32.550000000000011 1257 | 10 1258 | 16.525000000000006 1259 | 20 1260 | -19.550000000000004 1261 | 42 1262 | 0.41421356237309503 1263 | 10 1264 | 16.025000000000006 1265 | 20 1266 | -19.050000000000004 1267 | 10 1268 | 3.0249999999999986 1269 | 20 1270 | -19.050000000000001 1271 | 42 1272 | 0.41421356237309503 1273 | 0 1274 | LWPOLYLINE 1275 | 5 1276 | 115 1277 | 100 1278 | AcDbEntity 1279 | 8 1280 | 0 1281 | 100 1282 | AcDbPolyline 1283 | 90 1284 | 7 1285 | 70 1286 | 1 1287 | 43 1288 | 0.0 1289 | 10 1290 | 21.575000000000003 1291 | 20 1292 | -19.050000000000004 1293 | 10 1294 | 21.575000000000003 1295 | 20 1296 | -32.550000000000011 1297 | 42 1298 | 0.41421356237309503 1299 | 10 1300 | 22.074999999999999 1301 | 20 1302 | -33.050000000000004 1303 | 10 1304 | 35.07500000000001 1305 | 20 1306 | -33.050000000000004 1307 | 42 1308 | 0.41421356237309503 1309 | 10 1310 | 35.575000000000003 1311 | 20 1312 | -32.550000000000011 1313 | 10 1314 | 35.575000000000003 1315 | 20 1316 | -19.550000000000004 1317 | 42 1318 | 0.41421356237309503 1319 | 10 1320 | 35.07500000000001 1321 | 20 1322 | -19.050000000000004 1323 | 0 1324 | LWPOLYLINE 1325 | 5 1326 | 116 1327 | 100 1328 | AcDbEntity 1329 | 8 1330 | 0 1331 | 100 1332 | AcDbPolyline 1333 | 90 1334 | 8 1335 | 70 1336 | 1 1337 | 43 1338 | 0.0 1339 | 10 1340 | -16.525000000000002 1341 | 20 1342 | -0.50000000000000044 1343 | 10 1344 | -16.525000000000002 1345 | 20 1346 | -13.5 1347 | 42 1348 | 0.41421356237309503 1349 | 10 1350 | -16.025000000000006 1351 | 20 1352 | -14.000000000000002 1353 | 10 1354 | -3.0249999999999986 1355 | 20 1356 | -14.000000000000002 1357 | 42 1358 | 0.41421356237309503 1359 | 10 1360 | -2.5249999999999995 1361 | 20 1362 | -13.5 1363 | 10 1364 | -2.5249999999999999 1365 | 20 1366 | -0.50000000000000056 1367 | 42 1368 | 0.41421356237309509 1369 | 10 1370 | -3.0249999999999999 1371 | 20 1372 | 0 1373 | 10 1374 | -16.025000000000002 1375 | 20 1376 | -1.3877787807814457e-16 1377 | 42 1378 | 0.41421356237309531 1379 | 0 1380 | CIRCLE 1381 | 5 1382 | 117 1383 | 100 1384 | AcDbEntity 1385 | 8 1386 | 0 1387 | 100 1388 | AcDbCircle 1389 | 10 1390 | 19.04999999999999 1391 | 20 1392 | 6.7499999999999964 1393 | 30 1394 | 0 1395 | 40 1396 | 1.5500000000000003 1397 | 210 1398 | 0 1399 | 220 1400 | -0 1401 | 230 1402 | 1 1403 | 0 1404 | CIRCLE 1405 | 5 1406 | 118 1407 | 100 1408 | AcDbEntity 1409 | 8 1410 | 0 1411 | 100 1412 | AcDbCircle 1413 | 10 1414 | 19.050000000000104 1415 | 20 1416 | -125.52500000000002 1417 | 30 1418 | 0 1419 | 40 1420 | 1.5250000000000008 1421 | 210 1422 | 0 1423 | 220 1424 | -0 1425 | 230 1426 | 1 1427 | 0 1428 | LWPOLYLINE 1429 | 5 1430 | 119 1431 | 100 1432 | AcDbEntity 1433 | 8 1434 | 0 1435 | 100 1436 | AcDbPolyline 1437 | 90 1438 | 8 1439 | 70 1440 | 1 1441 | 43 1442 | 0.0 1443 | 10 1444 | 2.5249999999999995 1445 | 20 1446 | -76.700000000000017 1447 | 10 1448 | 2.5249999999999995 1449 | 20 1450 | -89.700000000000003 1451 | 42 1452 | 0.41421356237309503 1453 | 10 1454 | 3.0249999999999999 1455 | 20 1456 | -90.200000000000017 1457 | 10 1458 | 16.025000000000002 1459 | 20 1460 | -90.200000000000017 1461 | 42 1462 | 0.41421356237309503 1463 | 10 1464 | 16.525000000000002 1465 | 20 1466 | -89.700000000000003 1467 | 10 1468 | 16.525000000000006 1469 | 20 1470 | -76.700000000000003 1471 | 42 1472 | 0.41421356237309503 1473 | 10 1474 | 16.025000000000006 1475 | 20 1476 | -76.200000000000017 1477 | 10 1478 | 3.0249999999999986 1479 | 20 1480 | -76.200000000000017 1481 | 42 1482 | 0.41421356237309503 1483 | 0 1484 | LWPOLYLINE 1485 | 5 1486 | 120 1487 | 100 1488 | AcDbEntity 1489 | 8 1490 | 0 1491 | 100 1492 | AcDbPolyline 1493 | 90 1494 | 8 1495 | 70 1496 | 1 1497 | 43 1498 | 0.0 1499 | 10 1500 | 35.07500000000001 1501 | 20 1502 | -94.487500000000026 1503 | 10 1504 | -35.075000000000003 1505 | 20 1506 | -94.487500000000026 1507 | 42 1508 | 0.41421356237309503 1509 | 10 1510 | -35.575000000000003 1511 | 20 1512 | -94.987500000000026 1513 | 10 1514 | -35.575000000000003 1515 | 20 1516 | -99.987500000000011 1517 | 42 1518 | 0.41421356237309503 1519 | 10 1520 | -35.07500000000001 1521 | 20 1522 | -100.48750000000001 1523 | 10 1524 | 35.07500000000001 1525 | 20 1526 | -100.48750000000001 1527 | 42 1528 | 0.41421356237309503 1529 | 10 1530 | 35.575000000000003 1531 | 20 1532 | -99.987500000000011 1533 | 10 1534 | 35.57500000000001 1535 | 20 1536 | -94.987500000000026 1537 | 42 1538 | 0.41421356237309503 1539 | 0 1540 | LWPOLYLINE 1541 | 5 1542 | 121 1543 | 100 1544 | AcDbEntity 1545 | 8 1546 | 0 1547 | 100 1548 | AcDbPolyline 1549 | 90 1550 | 8 1551 | 70 1552 | 1 1553 | 43 1554 | 0.0 1555 | 10 1556 | 21.575000000000003 1557 | 20 1558 | -76.700000000000017 1559 | 10 1560 | 21.575000000000003 1561 | 20 1562 | -89.700000000000003 1563 | 42 1564 | 0.41421356237309503 1565 | 10 1566 | 22.074999999999999 1567 | 20 1568 | -90.200000000000017 1569 | 10 1570 | 35.07500000000001 1571 | 20 1572 | -90.200000000000017 1573 | 42 1574 | 0.41421356237309503 1575 | 10 1576 | 35.575000000000003 1577 | 20 1578 | -89.700000000000003 1579 | 10 1580 | 35.575000000000003 1581 | 20 1582 | -76.700000000000003 1583 | 42 1584 | 0.41421356237309503 1585 | 10 1586 | 35.07500000000001 1587 | 20 1588 | -76.200000000000017 1589 | 10 1590 | 22.074999999999999 1591 | 20 1592 | -76.200000000000017 1593 | 42 1594 | 0.41421356237309503 1595 | 0 1596 | LWPOLYLINE 1597 | 5 1598 | 122 1599 | 100 1600 | AcDbEntity 1601 | 8 1602 | 0 1603 | 100 1604 | AcDbPolyline 1605 | 90 1606 | 8 1607 | 70 1608 | 1 1609 | 43 1610 | 0.0 1611 | 10 1612 | -16.525000000000002 1613 | 20 1614 | -57.650000000000006 1615 | 10 1616 | -16.525000000000002 1617 | 20 1618 | -70.650000000000006 1619 | 42 1620 | 0.41421356237309503 1621 | 10 1622 | -16.025000000000006 1623 | 20 1624 | -71.150000000000006 1625 | 10 1626 | -3.0249999999999986 1627 | 20 1628 | -71.150000000000006 1629 | 42 1630 | 0.41421356237309503 1631 | 10 1632 | -2.5249999999999995 1633 | 20 1634 | -70.650000000000006 1635 | 10 1636 | -2.5249999999999999 1637 | 20 1638 | -57.650000000000006 1639 | 42 1640 | 0.41421356237309503 1641 | 10 1642 | -3.0249999999999999 1643 | 20 1644 | -57.150000000000006 1645 | 10 1646 | -16.025000000000002 1647 | 20 1648 | -57.150000000000006 1649 | 42 1650 | 0.41421356237309503 1651 | 0 1652 | LWPOLYLINE 1653 | 5 1654 | 123 1655 | 100 1656 | AcDbEntity 1657 | 8 1658 | 0 1659 | 100 1660 | AcDbPolyline 1661 | 90 1662 | 8 1663 | 70 1664 | 1 1665 | 43 1666 | 0.0 1667 | 10 1668 | 2.5249999999999995 1669 | 20 1670 | -57.650000000000006 1671 | 10 1672 | 2.5249999999999995 1673 | 20 1674 | -70.650000000000006 1675 | 42 1676 | 0.41421356237309503 1677 | 10 1678 | 3.0249999999999999 1679 | 20 1680 | -71.150000000000006 1681 | 10 1682 | 16.025000000000002 1683 | 20 1684 | -71.150000000000006 1685 | 42 1686 | 0.41421356237309503 1687 | 10 1688 | 16.525000000000002 1689 | 20 1690 | -70.650000000000006 1691 | 10 1692 | 16.525000000000006 1693 | 20 1694 | -57.650000000000006 1695 | 42 1696 | 0.41421356237309503 1697 | 10 1698 | 16.025000000000006 1699 | 20 1700 | -57.150000000000006 1701 | 10 1702 | 3.0249999999999986 1703 | 20 1704 | -57.150000000000006 1705 | 42 1706 | 0.41421356237309503 1707 | 0 1708 | LWPOLYLINE 1709 | 5 1710 | 124 1711 | 100 1712 | AcDbEntity 1713 | 8 1714 | 0 1715 | 100 1716 | AcDbPolyline 1717 | 90 1718 | 8 1719 | 70 1720 | 1 1721 | 43 1722 | 0.0 1723 | 10 1724 | 21.575000000000003 1725 | 20 1726 | -57.650000000000006 1727 | 10 1728 | 21.575000000000003 1729 | 20 1730 | -70.650000000000006 1731 | 42 1732 | 0.41421356237309503 1733 | 10 1734 | 22.074999999999999 1735 | 20 1736 | -71.150000000000006 1737 | 10 1738 | 35.07500000000001 1739 | 20 1740 | -71.150000000000006 1741 | 42 1742 | 0.41421356237309503 1743 | 10 1744 | 35.575000000000003 1745 | 20 1746 | -70.650000000000006 1747 | 10 1748 | 35.575000000000003 1749 | 20 1750 | -57.650000000000006 1751 | 42 1752 | 0.41421356237309503 1753 | 10 1754 | 35.07500000000001 1755 | 20 1756 | -57.150000000000006 1757 | 10 1758 | 22.074999999999999 1759 | 20 1760 | -57.150000000000006 1761 | 42 1762 | 0.41421356237309503 1763 | 0 1764 | LWPOLYLINE 1765 | 5 1766 | 125 1767 | 100 1768 | AcDbEntity 1769 | 8 1770 | 0 1771 | 100 1772 | AcDbPolyline 1773 | 90 1774 | 8 1775 | 70 1776 | 1 1777 | 43 1778 | 0.0 1779 | 10 1780 | -16.525000000000002 1781 | 20 1782 | -38.600000000000001 1783 | 10 1784 | -16.525000000000002 1785 | 20 1786 | -51.600000000000009 1787 | 42 1788 | 0.41421356237309503 1789 | 10 1790 | -16.025000000000006 1791 | 20 1792 | -52.100000000000009 1793 | 10 1794 | -3.0249999999999986 1795 | 20 1796 | -52.100000000000001 1797 | 42 1798 | 0.41421356237309503 1799 | 10 1800 | -2.5249999999999995 1801 | 20 1802 | -51.600000000000001 1803 | 10 1804 | -2.5249999999999999 1805 | 20 1806 | -38.600000000000001 1807 | 42 1808 | 0.41421356237309503 1809 | 10 1810 | -3.0249999999999999 1811 | 20 1812 | -38.100000000000009 1813 | 10 1814 | -16.025000000000002 1815 | 20 1816 | -38.100000000000009 1817 | 42 1818 | 0.41421356237309503 1819 | 0 1820 | LWPOLYLINE 1821 | 5 1822 | 126 1823 | 100 1824 | AcDbEntity 1825 | 8 1826 | 0 1827 | 100 1828 | AcDbPolyline 1829 | 90 1830 | 8 1831 | 70 1832 | 1 1833 | 43 1834 | 0.0 1835 | 10 1836 | 2.5249999999999995 1837 | 20 1838 | -38.600000000000001 1839 | 10 1840 | 2.5249999999999995 1841 | 20 1842 | -51.600000000000009 1843 | 42 1844 | 0.41421356237309503 1845 | 10 1846 | 3.0249999999999999 1847 | 20 1848 | -52.100000000000009 1849 | 10 1850 | 16.025000000000002 1851 | 20 1852 | -52.100000000000001 1853 | 42 1854 | 0.41421356237309503 1855 | 10 1856 | 16.525000000000002 1857 | 20 1858 | -51.600000000000001 1859 | 10 1860 | 16.525000000000006 1861 | 20 1862 | -38.600000000000001 1863 | 42 1864 | 0.41421356237309503 1865 | 10 1866 | 16.025000000000006 1867 | 20 1868 | -38.100000000000009 1869 | 10 1870 | 3.0249999999999986 1871 | 20 1872 | -38.100000000000009 1873 | 42 1874 | 0.41421356237309503 1875 | 0 1876 | ENDSEC 1877 | 0 1878 | SECTION 1879 | 2 1880 | OBJECTS 1881 | 0 1882 | DICTIONARY 1883 | 5 1884 | C 1885 | 100 1886 | AcDbDictionary 1887 | 3 1888 | ACAD_GROUP 1889 | 350 1890 | D 1891 | 3 1892 | ACAD_MLINESTYLE 1893 | 350 1894 | 17 1895 | 0 1896 | DICTIONARY 1897 | 5 1898 | D 1899 | 100 1900 | AcDbDictionary 1901 | 0 1902 | DICTIONARY 1903 | 5 1904 | 1A 1905 | 330 1906 | C 1907 | 100 1908 | AcDbDictionary 1909 | 0 1910 | DICTIONARY 1911 | 5 1912 | 17 1913 | 100 1914 | AcDbDictionary 1915 | 0 1916 | ENDSEC 1917 | 0 1918 | EOF 1919 | -------------------------------------------------------------------------------- /case/renders/Assembly-Bottom.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joelspadin/NumBLE/1c3cc4c68529ac05006e888e3062a3e412759cdc/case/renders/Assembly-Bottom.gif -------------------------------------------------------------------------------- /case/renders/Assembly-Bumpons.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joelspadin/NumBLE/1c3cc4c68529ac05006e888e3062a3e412759cdc/case/renders/Assembly-Bumpons.gif -------------------------------------------------------------------------------- /case/renders/Assembly-Final.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joelspadin/NumBLE/1c3cc4c68529ac05006e888e3062a3e412759cdc/case/renders/Assembly-Final.gif -------------------------------------------------------------------------------- /case/renders/Assembly-Switches.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joelspadin/NumBLE/1c3cc4c68529ac05006e888e3062a3e412759cdc/case/renders/Assembly-Switches.gif -------------------------------------------------------------------------------- /case/renders/Assembly-Top.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joelspadin/NumBLE/1c3cc4c68529ac05006e888e3062a3e412759cdc/case/renders/Assembly-Top.gif -------------------------------------------------------------------------------- /case/renders/Battery.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joelspadin/NumBLE/1c3cc4c68529ac05006e888e3062a3e412759cdc/case/renders/Battery.png -------------------------------------------------------------------------------- /case/renders/Bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joelspadin/NumBLE/1c3cc4c68529ac05006e888e3062a3e412759cdc/case/renders/Bottom.png -------------------------------------------------------------------------------- /case/renders/NumBLE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joelspadin/NumBLE/1c3cc4c68529ac05006e888e3062a3e412759cdc/case/renders/NumBLE.png -------------------------------------------------------------------------------- /case/renders/keyboard-layout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joelspadin/NumBLE/1c3cc4c68529ac05006e888e3062a3e412759cdc/case/renders/keyboard-layout.png -------------------------------------------------------------------------------- /config/west.yml: -------------------------------------------------------------------------------- 1 | manifest: 2 | remotes: 3 | - name: zmkfirmware 4 | url-base: https://github.com/zmkfirmware 5 | # Additional modules containing boards/shields/custom code can be listed here as well 6 | # See https://docs.zephyrproject.org/3.2.0/develop/west/manifest.html#projects 7 | projects: 8 | - name: zmk 9 | remote: zmkfirmware 10 | revision: main 11 | import: app/west.yml 12 | self: 13 | path: config 14 | -------------------------------------------------------------------------------- /pcb/.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 | *.kicad_sch-bak 10 | *.kicad_prl 11 | *.sch-bak 12 | *~ 13 | _autosave-* 14 | *.tmp 15 | *-save.pro 16 | *-save.kicad_pcb 17 | fp-info-cache 18 | *-backups/ 19 | 20 | # Netlist files (exported from Eeschema) 21 | *.net 22 | 23 | # Autorouter files (exported from Pcbnew) 24 | *.dsn 25 | *.ses 26 | 27 | # Exported BOM files 28 | /bom 29 | *.xml 30 | *.csv 31 | 32 | # Exported 3D files 33 | /*.step 34 | 35 | # Exported manufacture files 36 | /gerber 37 | /*.zip -------------------------------------------------------------------------------- /pcb/NumBLE.kicad_pro: -------------------------------------------------------------------------------- 1 | { 2 | "board": { 3 | "design_settings": { 4 | "defaults": { 5 | "board_outline_line_width": 0.15, 6 | "copper_line_width": 0.19999999999999998, 7 | "copper_text_italic": false, 8 | "copper_text_size_h": 1.5, 9 | "copper_text_size_v": 1.5, 10 | "copper_text_thickness": 0.3, 11 | "copper_text_upright": true, 12 | "courtyard_line_width": 0.049999999999999996, 13 | "dimension_precision": 4, 14 | "dimension_units": 3, 15 | "dimensions": { 16 | "arrow_length": 1270000, 17 | "extension_offset": 500000, 18 | "keep_text_aligned": true, 19 | "suppress_zeroes": false, 20 | "text_position": 0, 21 | "units_format": 1 22 | }, 23 | "fab_line_width": 0.09999999999999999, 24 | "fab_text_italic": false, 25 | "fab_text_size_h": 1.0, 26 | "fab_text_size_v": 1.0, 27 | "fab_text_thickness": 0.15, 28 | "fab_text_upright": false, 29 | "other_line_width": 0.15, 30 | "other_text_italic": false, 31 | "other_text_size_h": 1.0, 32 | "other_text_size_v": 1.0, 33 | "other_text_thickness": 0.15, 34 | "other_text_upright": true, 35 | "pads": { 36 | "drill": 0.762, 37 | "height": 1.524, 38 | "width": 1.524 39 | }, 40 | "silk_line_width": 0.15, 41 | "silk_text_italic": false, 42 | "silk_text_size_h": 1.0, 43 | "silk_text_size_v": 1.0, 44 | "silk_text_thickness": 0.15, 45 | "silk_text_upright": true, 46 | "zones": { 47 | "45_degree_only": false, 48 | "min_clearance": 0.5 49 | } 50 | }, 51 | "diff_pair_dimensions": [ 52 | { 53 | "gap": 0.0, 54 | "via_gap": 0.0, 55 | "width": 0.0 56 | } 57 | ], 58 | "drc_exclusions": [ 59 | "clearance|105000000|45225000|abc5d34a-9179-427f-b7d2-e6c32cce30eb|ac3b288d-63c7-4b29-99c6-4709604971a7", 60 | "clearance|121510625|143332500|824b3939-78e3-4739-9c02-b3859fab742c|c0cd8ad8-6a77-437b-8fad-31a30bc29ab9", 61 | "clearance|95000000|45225000|710be827-bad0-49b1-b670-d1aeeb2c6c20|bae2659f-ce48-4ade-96ab-d8585d52e45d", 62 | "hole_clearance|102540000|40145000|f6d4a108-fd64-4508-b83e-1df75c7ab715|e5e24e42-8162-4a86-bc07-00fd840e4a4d", 63 | "hole_clearance|105080000|45225000|abc5d34a-9179-427f-b7d2-e6c32cce30eb|ac3b288d-63c7-4b29-99c6-4709604971a7", 64 | "hole_clearance|105600000|45225000|abc5d34a-9179-427f-b7d2-e6c32cce30eb|ac3b288d-63c7-4b29-99c6-4709604971a7", 65 | "hole_clearance|121431250|141745000|824b3939-78e3-4739-9c02-b3859fab742c|c0cd8ad8-6a77-437b-8fad-31a30bc29ab9", 66 | "hole_clearance|94400000|45225000|710be827-bad0-49b1-b670-d1aeeb2c6c20|bae2659f-ce48-4ade-96ab-d8585d52e45d", 67 | "hole_clearance|94920000|45225000|710be827-bad0-49b1-b670-d1aeeb2c6c20|bae2659f-ce48-4ade-96ab-d8585d52e45d" 68 | ], 69 | "meta": { 70 | "version": 2 71 | }, 72 | "rule_severities": { 73 | "annular_width": "error", 74 | "clearance": "error", 75 | "copper_edge_clearance": "error", 76 | "courtyards_overlap": "error", 77 | "diff_pair_gap_out_of_range": "error", 78 | "diff_pair_uncoupled_length_too_long": "error", 79 | "drill_out_of_range": "error", 80 | "duplicate_footprints": "warning", 81 | "extra_footprint": "warning", 82 | "hole_clearance": "error", 83 | "hole_near_hole": "error", 84 | "invalid_outline": "error", 85 | "item_on_disabled_layer": "error", 86 | "items_not_allowed": "error", 87 | "length_out_of_range": "error", 88 | "malformed_courtyard": "error", 89 | "microvia_drill_out_of_range": "error", 90 | "missing_courtyard": "ignore", 91 | "missing_footprint": "warning", 92 | "net_conflict": "warning", 93 | "npth_inside_courtyard": "ignore", 94 | "padstack": "error", 95 | "pth_inside_courtyard": "ignore", 96 | "shorting_items": "error", 97 | "silk_over_copper": "error", 98 | "silk_overlap": "error", 99 | "skew_out_of_range": "error", 100 | "too_many_vias": "error", 101 | "track_dangling": "warning", 102 | "track_width": "error", 103 | "tracks_crossing": "error", 104 | "unconnected_items": "error", 105 | "unresolved_variable": "error", 106 | "via_dangling": "warning", 107 | "zone_has_empty_net": "error", 108 | "zones_intersect": "error" 109 | }, 110 | "rule_severitieslegacy_courtyards_overlap": true, 111 | "rule_severitieslegacy_no_courtyard_defined": false, 112 | "rules": { 113 | "allow_blind_buried_vias": false, 114 | "allow_microvias": false, 115 | "max_error": 0.005, 116 | "min_clearance": 0.15, 117 | "min_copper_edge_clearance": 0.19999999999999998, 118 | "min_hole_clearance": 0.19999999999999998, 119 | "min_hole_to_hole": 0.25, 120 | "min_microvia_diameter": 0.19999999999999998, 121 | "min_microvia_drill": 0.09999999999999999, 122 | "min_silk_clearance": 0.0, 123 | "min_through_hole_diameter": 0.3, 124 | "min_track_width": 0.15, 125 | "min_via_annular_width": 0.049999999999999996, 126 | "min_via_diameter": 0.39999999999999997, 127 | "use_height_for_length_calcs": true 128 | }, 129 | "track_widths": [ 130 | 0.0, 131 | 0.15, 132 | 0.2, 133 | 0.25, 134 | 0.4 135 | ], 136 | "via_dimensions": [ 137 | { 138 | "diameter": 0.0, 139 | "drill": 0.0 140 | }, 141 | { 142 | "diameter": 0.6, 143 | "drill": 0.33 144 | }, 145 | { 146 | "diameter": 0.8, 147 | "drill": 0.4 148 | } 149 | ], 150 | "zones_allow_external_fillets": false, 151 | "zones_use_no_outline": true 152 | }, 153 | "layer_presets": [] 154 | }, 155 | "boards": [], 156 | "cvpcb": { 157 | "equivalence_files": [] 158 | }, 159 | "erc": { 160 | "erc_exclusions": [], 161 | "meta": { 162 | "version": 0 163 | }, 164 | "pin_map": [ 165 | [ 166 | 0, 167 | 0, 168 | 0, 169 | 0, 170 | 0, 171 | 0, 172 | 1, 173 | 0, 174 | 0, 175 | 0, 176 | 0, 177 | 2 178 | ], 179 | [ 180 | 0, 181 | 2, 182 | 0, 183 | 1, 184 | 0, 185 | 0, 186 | 1, 187 | 0, 188 | 2, 189 | 2, 190 | 2, 191 | 2 192 | ], 193 | [ 194 | 0, 195 | 0, 196 | 0, 197 | 0, 198 | 0, 199 | 0, 200 | 1, 201 | 0, 202 | 1, 203 | 0, 204 | 1, 205 | 2 206 | ], 207 | [ 208 | 0, 209 | 1, 210 | 0, 211 | 0, 212 | 0, 213 | 0, 214 | 1, 215 | 1, 216 | 2, 217 | 1, 218 | 1, 219 | 2 220 | ], 221 | [ 222 | 0, 223 | 0, 224 | 0, 225 | 0, 226 | 0, 227 | 0, 228 | 1, 229 | 0, 230 | 0, 231 | 0, 232 | 0, 233 | 2 234 | ], 235 | [ 236 | 0, 237 | 0, 238 | 0, 239 | 0, 240 | 0, 241 | 0, 242 | 0, 243 | 0, 244 | 0, 245 | 0, 246 | 0, 247 | 2 248 | ], 249 | [ 250 | 1, 251 | 1, 252 | 1, 253 | 1, 254 | 1, 255 | 0, 256 | 1, 257 | 1, 258 | 1, 259 | 1, 260 | 1, 261 | 2 262 | ], 263 | [ 264 | 0, 265 | 0, 266 | 0, 267 | 1, 268 | 0, 269 | 0, 270 | 1, 271 | 0, 272 | 0, 273 | 0, 274 | 0, 275 | 2 276 | ], 277 | [ 278 | 0, 279 | 2, 280 | 1, 281 | 2, 282 | 0, 283 | 0, 284 | 1, 285 | 0, 286 | 2, 287 | 2, 288 | 2, 289 | 2 290 | ], 291 | [ 292 | 0, 293 | 2, 294 | 0, 295 | 1, 296 | 0, 297 | 0, 298 | 1, 299 | 0, 300 | 2, 301 | 0, 302 | 0, 303 | 2 304 | ], 305 | [ 306 | 0, 307 | 2, 308 | 1, 309 | 1, 310 | 0, 311 | 0, 312 | 1, 313 | 0, 314 | 2, 315 | 0, 316 | 0, 317 | 2 318 | ], 319 | [ 320 | 2, 321 | 2, 322 | 2, 323 | 2, 324 | 2, 325 | 2, 326 | 2, 327 | 2, 328 | 2, 329 | 2, 330 | 2, 331 | 2 332 | ] 333 | ], 334 | "rule_severities": { 335 | "bus_definition_conflict": "error", 336 | "bus_label_syntax": "error", 337 | "bus_to_bus_conflict": "error", 338 | "bus_to_net_conflict": "error", 339 | "different_unit_footprint": "error", 340 | "different_unit_net": "error", 341 | "duplicate_reference": "error", 342 | "duplicate_sheet_names": "error", 343 | "extra_units": "error", 344 | "global_label_dangling": "warning", 345 | "hier_label_mismatch": "error", 346 | "label_dangling": "error", 347 | "lib_symbol_issues": "warning", 348 | "multiple_net_names": "warning", 349 | "net_not_bus_member": "warning", 350 | "no_connect_connected": "warning", 351 | "no_connect_dangling": "warning", 352 | "pin_not_connected": "error", 353 | "pin_not_driven": "error", 354 | "pin_to_pin": "warning", 355 | "power_pin_not_driven": "error", 356 | "similar_labels": "warning", 357 | "unannotated": "error", 358 | "unit_value_mismatch": "error", 359 | "unresolved_variable": "error", 360 | "wire_dangling": "error" 361 | } 362 | }, 363 | "libraries": { 364 | "pinned_footprint_libs": [ 365 | "numpad" 366 | ], 367 | "pinned_symbol_libs": [] 368 | }, 369 | "meta": { 370 | "filename": "NumBLE.kicad_pro", 371 | "version": 1 372 | }, 373 | "net_settings": { 374 | "classes": [ 375 | { 376 | "bus_width": 12.0, 377 | "clearance": 0.18, 378 | "diff_pair_gap": 0.25, 379 | "diff_pair_via_gap": 0.25, 380 | "diff_pair_width": 0.2, 381 | "line_style": 0, 382 | "microvia_diameter": 0.3, 383 | "microvia_drill": 0.1, 384 | "name": "Default", 385 | "pcb_color": "rgba(0, 0, 0, 0.000)", 386 | "schematic_color": "rgba(0, 0, 0, 0.000)", 387 | "track_width": 0.25, 388 | "via_diameter": 0.8, 389 | "via_drill": 0.4, 390 | "wire_width": 6.0 391 | }, 392 | { 393 | "bus_width": 12.0, 394 | "clearance": 0.18, 395 | "diff_pair_gap": 0.18, 396 | "diff_pair_via_gap": 0.25, 397 | "diff_pair_width": 0.2, 398 | "line_style": 0, 399 | "microvia_diameter": 0.3, 400 | "microvia_drill": 0.1, 401 | "name": "Battery Pack", 402 | "nets": [ 403 | "/PACK+", 404 | "/PACK-" 405 | ], 406 | "pcb_color": "rgba(0, 0, 0, 0.000)", 407 | "schematic_color": "rgba(0, 0, 0, 0.000)", 408 | "track_width": 0.4, 409 | "via_diameter": 0.8, 410 | "via_drill": 0.4, 411 | "wire_width": 6.0 412 | }, 413 | { 414 | "bus_width": 12.0, 415 | "clearance": 0.18, 416 | "diff_pair_gap": 0.25, 417 | "diff_pair_via_gap": 0.25, 418 | "diff_pair_width": 0.2, 419 | "line_style": 0, 420 | "microvia_diameter": 0.3, 421 | "microvia_drill": 0.1, 422 | "name": "Power", 423 | "nets": [ 424 | "+BATT", 425 | "/VBUS_PRE", 426 | "/VDD", 427 | "/VDD_HV", 428 | "GND", 429 | "VBUS" 430 | ], 431 | "pcb_color": "rgba(0, 0, 0, 0.000)", 432 | "schematic_color": "rgba(0, 0, 0, 0.000)", 433 | "track_width": 0.4, 434 | "via_diameter": 0.8, 435 | "via_drill": 0.4, 436 | "wire_width": 6.0 437 | }, 438 | { 439 | "bus_width": 12.0, 440 | "clearance": 0.18, 441 | "diff_pair_gap": 0.18, 442 | "diff_pair_via_gap": 0.25, 443 | "diff_pair_width": 0.6, 444 | "line_style": 0, 445 | "microvia_diameter": 0.3, 446 | "microvia_drill": 0.1, 447 | "name": "USB", 448 | "nets": [ 449 | "/DATA+", 450 | "/DATA-" 451 | ], 452 | "pcb_color": "rgba(0, 0, 0, 0.000)", 453 | "schematic_color": "rgba(0, 0, 0, 0.000)", 454 | "track_width": 0.25, 455 | "via_diameter": 0.8, 456 | "via_drill": 0.4, 457 | "wire_width": 6.0 458 | }, 459 | { 460 | "bus_width": 12.0, 461 | "clearance": 0.18, 462 | "diff_pair_gap": 0.18, 463 | "diff_pair_via_gap": 0.25, 464 | "diff_pair_width": 0.3, 465 | "line_style": 0, 466 | "microvia_diameter": 0.3, 467 | "microvia_drill": 0.1, 468 | "name": "USB Connector", 469 | "nets": [ 470 | "/CONN+", 471 | "/CONN-" 472 | ], 473 | "pcb_color": "rgba(0, 0, 0, 0.000)", 474 | "schematic_color": "rgba(0, 0, 0, 0.000)", 475 | "track_width": 0.3, 476 | "via_diameter": 0.8, 477 | "via_drill": 0.4, 478 | "wire_width": 6.0 479 | } 480 | ], 481 | "meta": { 482 | "version": 0 483 | }, 484 | "net_colors": null 485 | }, 486 | "pcbnew": { 487 | "last_paths": { 488 | "gencad": "", 489 | "idf": "", 490 | "netlist": "", 491 | "specctra_dsn": "", 492 | "step": "NumBLE.step", 493 | "vrml": "" 494 | }, 495 | "page_layout_descr_file": "" 496 | }, 497 | "schematic": { 498 | "drawing": { 499 | "default_bus_thickness": 12.0, 500 | "default_junction_size": 40.0, 501 | "default_line_thickness": 6.0, 502 | "default_text_size": 50.0, 503 | "default_wire_thickness": 6.0, 504 | "field_names": [], 505 | "intersheets_ref_own_page": false, 506 | "intersheets_ref_prefix": "", 507 | "intersheets_ref_short": false, 508 | "intersheets_ref_show": false, 509 | "intersheets_ref_suffix": "", 510 | "junction_size_choice": 3, 511 | "pin_symbol_size": 25.0, 512 | "text_offset_ratio": 0.3 513 | }, 514 | "legacy_lib_dir": "", 515 | "legacy_lib_list": [], 516 | "meta": { 517 | "version": 0 518 | }, 519 | "net_format_name": "", 520 | "ngspice": { 521 | "meta": { 522 | "version": 0 523 | }, 524 | "model_mode": 0, 525 | "workbook_filename": "" 526 | }, 527 | "page_layout_descr_file": "", 528 | "plot_directory": "", 529 | "spice_adjust_passive_values": false, 530 | "spice_external_command": "spice \"%I\"", 531 | "subpart_first_id": 65, 532 | "subpart_id_separator": 0 533 | }, 534 | "sheets": [ 535 | [ 536 | "58621afc-4d24-454f-85cd-a221db4b9a50", 537 | "" 538 | ] 539 | ], 540 | "text_variables": {} 541 | } 542 | -------------------------------------------------------------------------------- /pcb/NumBLE.kicad_sym: -------------------------------------------------------------------------------- 1 | (kicad_symbol_lib (version 20201005) (generator kicad_symbol_editor) 2 | (symbol "numpad:Conn_ARM_JTAG_SWD_6" (pin_names (offset 1.016)) (in_bom yes) (on_board yes) 3 | (property "Reference" "J" (id 0) (at -2.54 13.97 0) 4 | (effects (font (size 1.27 1.27)) (justify right)) 5 | ) 6 | (property "Value" "Conn_ARM_JTAG_SWD_6" (id 1) (at -2.54 11.43 0) 7 | (effects (font (size 1.27 1.27)) (justify right bottom)) 8 | ) 9 | (property "Footprint" "" (id 2) (at 0 -2.54 0) 10 | (effects (font (size 1.27 1.27)) hide) 11 | ) 12 | (property "Datasheet" "https://www.segger.com/products/debug-probes/j-link/accessories/adapters/6-pin-needle-adapter/" (id 3) (at -8.89 -31.75 90) 13 | (effects (font (size 1.27 1.27)) hide) 14 | ) 15 | (property "ki_keywords" "Cortex Debug Connector ARM SWD JTAG" (id 4) (at 0 0 0) 16 | (effects (font (size 1.27 1.27)) hide) 17 | ) 18 | (property "ki_description" "Cortex Debug Connector, standard ARM Cortex-M SWD and JTAG interface" (id 5) (at 0 0 0) 19 | (effects (font (size 1.27 1.27)) hide) 20 | ) 21 | (property "ki_fp_filters" "PinHeader?2x05?P1.27mm*" (id 6) (at 0 0 0) 22 | (effects (font (size 1.27 1.27)) hide) 23 | ) 24 | (symbol "Conn_ARM_JTAG_SWD_6_0_1" 25 | (rectangle (start -10.16 10.16) (end 10.16 -10.16) 26 | (stroke (width 0.254)) (fill (type background)) 27 | ) 28 | ) 29 | (symbol "Conn_ARM_JTAG_SWD_6_1_1" 30 | (pin power_in line (at 0 12.7 270) (length 2.54) 31 | (name "VTref" (effects (font (size 1.27 1.27)))) 32 | (number "1" (effects (font (size 1.27 1.27)))) 33 | ) 34 | (pin bidirectional line (at 12.7 -2.54 180) (length 2.54) 35 | (name "SWDIO" (effects (font (size 1.27 1.27)))) 36 | (number "2" (effects (font (size 1.27 1.27)))) 37 | ) 38 | (pin open_collector line (at 12.7 5.08 180) (length 2.54) 39 | (name "~RESET~" (effects (font (size 1.27 1.27)))) 40 | (number "3" (effects (font (size 1.27 1.27)))) 41 | ) 42 | (pin output line (at 12.7 0 180) (length 2.54) 43 | (name "SWDCLK" (effects (font (size 1.27 1.27)))) 44 | (number "4" (effects (font (size 1.27 1.27)))) 45 | ) 46 | (pin power_in line (at 0 -12.7 90) (length 2.54) 47 | (name "GND" (effects (font (size 1.27 1.27)))) 48 | (number "5" (effects (font (size 1.27 1.27)))) 49 | ) 50 | (pin input line (at 12.7 -5.08 180) (length 2.54) 51 | (name "SWO" (effects (font (size 1.27 1.27)))) 52 | (number "6" (effects (font (size 1.27 1.27)))) 53 | ) 54 | ) 55 | ) 56 | (symbol "numpad:E73-2G4M08S1C-52840" (pin_names (offset 1.016)) (in_bom yes) (on_board yes) 57 | (property "Reference" "U" (id 0) (at 0 38.1 0) 58 | (effects (font (size 1.27 1.27))) 59 | ) 60 | (property "Value" "E73-2G4M08S1C-52840" (id 1) (at 0 35.56 0) 61 | (effects (font (size 1.27 1.27))) 62 | ) 63 | (property "Footprint" "" (id 2) (at 0 0 0) 64 | (effects (font (size 1.27 1.27)) hide) 65 | ) 66 | (property "Datasheet" "" (id 3) (at 0 0 0) 67 | (effects (font (size 1.27 1.27)) hide) 68 | ) 69 | (symbol "E73-2G4M08S1C-52840_0_0" 70 | (text "Bottom IO" (at 0 11.43 0) 71 | (effects (font (size 1.27 1.27))) 72 | ) 73 | (text "Side IO" (at 0 8.89 0) 74 | (effects (font (size 1.27 1.27))) 75 | ) 76 | (polyline 77 | (pts 78 | (xy -15.24 10.16) 79 | (xy 13.97 10.16) 80 | ) 81 | (stroke (width 0)) (fill (type none)) 82 | ) 83 | ) 84 | (symbol "E73-2G4M08S1C-52840_0_1" 85 | (rectangle (start -15.24 34.29) (end 13.97 -30.48) 86 | (stroke (width 0)) (fill (type background)) 87 | ) 88 | ) 89 | (symbol "E73-2G4M08S1C-52840_1_1" 90 | (pin input line (at -17.78 6.35 0) (length 2.54) 91 | (name "P1.11" (effects (font (size 1.27 1.27)))) 92 | (number "1" (effects (font (size 1.27 1.27)))) 93 | ) 94 | (pin input line (at -17.78 -16.51 0) (length 2.54) 95 | (name "P0.30/AIN6" (effects (font (size 1.27 1.27)))) 96 | (number "10" (effects (font (size 1.27 1.27)))) 97 | ) 98 | (pin input line (at -8.89 -33.02 90) (length 2.54) 99 | (name "P0.00/XL1" (effects (font (size 1.27 1.27)))) 100 | (number "11" (effects (font (size 1.27 1.27)))) 101 | ) 102 | (pin input line (at -17.78 13.97 0) (length 2.54) 103 | (name "P0.26" (effects (font (size 1.27 1.27)))) 104 | (number "12" (effects (font (size 1.27 1.27)))) 105 | ) 106 | (pin input line (at -6.35 -33.02 90) (length 2.54) 107 | (name "P0.01/XL2" (effects (font (size 1.27 1.27)))) 108 | (number "13" (effects (font (size 1.27 1.27)))) 109 | ) 110 | (pin input line (at -17.78 16.51 0) (length 2.54) 111 | (name "P0.06" (effects (font (size 1.27 1.27)))) 112 | (number "14" (effects (font (size 1.27 1.27)))) 113 | ) 114 | (pin input line (at -3.81 -33.02 90) (length 2.54) 115 | (name "P0.05/AIN3" (effects (font (size 1.27 1.27)))) 116 | (number "15" (effects (font (size 1.27 1.27)))) 117 | ) 118 | (pin input line (at -17.78 19.05 0) (length 2.54) 119 | (name "P0.08" (effects (font (size 1.27 1.27)))) 120 | (number "16" (effects (font (size 1.27 1.27)))) 121 | ) 122 | (pin input line (at -1.27 -33.02 90) (length 2.54) 123 | (name "P1.09" (effects (font (size 1.27 1.27)))) 124 | (number "17" (effects (font (size 1.27 1.27)))) 125 | ) 126 | (pin input line (at -17.78 21.59 0) (length 2.54) 127 | (name "P0.04/AIN2" (effects (font (size 1.27 1.27)))) 128 | (number "18" (effects (font (size 1.27 1.27)))) 129 | ) 130 | (pin power_in line (at 1.27 -33.02 90) (length 2.54) 131 | (name "VDD" (effects (font (size 1.27 1.27)))) 132 | (number "19" (effects (font (size 1.27 1.27)))) 133 | ) 134 | (pin input line (at -17.78 3.81 0) (length 2.54) 135 | (name "P1.10" (effects (font (size 1.27 1.27)))) 136 | (number "2" (effects (font (size 1.27 1.27)))) 137 | ) 138 | (pin input line (at -17.78 24.13 0) (length 2.54) 139 | (name "P0.12" (effects (font (size 1.27 1.27)))) 140 | (number "20" (effects (font (size 1.27 1.27)))) 141 | ) 142 | (pin power_in line (at 3.81 -33.02 90) (length 2.54) 143 | (name "GND" (effects (font (size 1.27 1.27)))) 144 | (number "21" (effects (font (size 1.27 1.27)))) 145 | ) 146 | (pin input line (at -17.78 26.67 0) (length 2.54) 147 | (name "P0.07" (effects (font (size 1.27 1.27)))) 148 | (number "22" (effects (font (size 1.27 1.27)))) 149 | ) 150 | (pin power_in line (at 6.35 -33.02 90) (length 2.54) 151 | (name "VDDH" (effects (font (size 1.27 1.27)))) 152 | (number "23" (effects (font (size 1.27 1.27)))) 153 | ) 154 | (pin power_in line (at -17.78 29.21 0) (length 2.54) 155 | (name "GND" (effects (font (size 1.27 1.27)))) 156 | (number "24" (effects (font (size 1.27 1.27)))) 157 | ) 158 | (pin power_out line (at 8.89 -33.02 90) (length 2.54) 159 | (name "DCCH" (effects (font (size 1.27 1.27)))) 160 | (number "25" (effects (font (size 1.27 1.27)))) 161 | ) 162 | (pin input line (at 16.51 -16.51 180) (length 2.54) 163 | (name "P0.18/RESET" (effects (font (size 1.27 1.27)))) 164 | (number "26" (effects (font (size 1.27 1.27)))) 165 | ) 166 | (pin power_in line (at 16.51 -13.97 180) (length 2.54) 167 | (name "VBUS" (effects (font (size 1.27 1.27)))) 168 | (number "27" (effects (font (size 1.27 1.27)))) 169 | ) 170 | (pin power_in line (at 16.51 13.97 180) (length 2.54) 171 | (name "P0.15" (effects (font (size 1.27 1.27)))) 172 | (number "28" (effects (font (size 1.27 1.27)))) 173 | ) 174 | (pin input line (at 16.51 -11.43 180) (length 2.54) 175 | (name "USB_D-" (effects (font (size 1.27 1.27)))) 176 | (number "29" (effects (font (size 1.27 1.27)))) 177 | ) 178 | (pin input line (at -17.78 1.27 0) (length 2.54) 179 | (name "P0.03/AIN1" (effects (font (size 1.27 1.27)))) 180 | (number "3" (effects (font (size 1.27 1.27)))) 181 | ) 182 | (pin input line (at 16.51 16.51 180) (length 2.54) 183 | (name "P0.17" (effects (font (size 1.27 1.27)))) 184 | (number "30" (effects (font (size 1.27 1.27)))) 185 | ) 186 | (pin input line (at 16.51 -8.89 180) (length 2.54) 187 | (name "USB_D+" (effects (font (size 1.27 1.27)))) 188 | (number "31" (effects (font (size 1.27 1.27)))) 189 | ) 190 | (pin input line (at 16.51 19.05 180) (length 2.54) 191 | (name "P0.20" (effects (font (size 1.27 1.27)))) 192 | (number "32" (effects (font (size 1.27 1.27)))) 193 | ) 194 | (pin input line (at 16.51 -6.35 180) (length 2.54) 195 | (name "P0.13" (effects (font (size 1.27 1.27)))) 196 | (number "33" (effects (font (size 1.27 1.27)))) 197 | ) 198 | (pin input line (at 16.51 21.59 180) (length 2.54) 199 | (name "P0.22" (effects (font (size 1.27 1.27)))) 200 | (number "34" (effects (font (size 1.27 1.27)))) 201 | ) 202 | (pin input line (at 16.51 -3.81 180) (length 2.54) 203 | (name "P0.24" (effects (font (size 1.27 1.27)))) 204 | (number "35" (effects (font (size 1.27 1.27)))) 205 | ) 206 | (pin output line (at 16.51 24.13 180) (length 2.54) 207 | (name "P1.00/SWO" (effects (font (size 1.27 1.27)))) 208 | (number "36" (effects (font (size 1.27 1.27)))) 209 | ) 210 | (pin input line (at 16.51 -1.27 180) (length 2.54) 211 | (name "SWDIO" (effects (font (size 1.27 1.27)))) 212 | (number "37" (effects (font (size 1.27 1.27)))) 213 | ) 214 | (pin input line (at 16.51 26.67 180) (length 2.54) 215 | (name "P1.02" (effects (font (size 1.27 1.27)))) 216 | (number "38" (effects (font (size 1.27 1.27)))) 217 | ) 218 | (pin input line (at 16.51 1.27 180) (length 2.54) 219 | (name "SWDCLK" (effects (font (size 1.27 1.27)))) 220 | (number "39" (effects (font (size 1.27 1.27)))) 221 | ) 222 | (pin input line (at -17.78 -1.27 0) (length 2.54) 223 | (name "P0.28/AIN4" (effects (font (size 1.27 1.27)))) 224 | (number "4" (effects (font (size 1.27 1.27)))) 225 | ) 226 | (pin input line (at 16.51 29.21 180) (length 2.54) 227 | (name "P1.04" (effects (font (size 1.27 1.27)))) 228 | (number "40" (effects (font (size 1.27 1.27)))) 229 | ) 230 | (pin input line (at 16.51 3.81 180) (length 2.54) 231 | (name "P0.09/NFC1" (effects (font (size 1.27 1.27)))) 232 | (number "41" (effects (font (size 1.27 1.27)))) 233 | ) 234 | (pin input line (at 16.51 31.75 180) (length 2.54) 235 | (name "P1.06" (effects (font (size 1.27 1.27)))) 236 | (number "42" (effects (font (size 1.27 1.27)))) 237 | ) 238 | (pin input line (at 16.51 6.35 180) (length 2.54) 239 | (name "P0.10/NFC2" (effects (font (size 1.27 1.27)))) 240 | (number "43" (effects (font (size 1.27 1.27)))) 241 | ) 242 | (pin power_in line (at -17.78 -3.81 0) (length 2.54) 243 | (name "GND" (effects (font (size 1.27 1.27)))) 244 | (number "5" (effects (font (size 1.27 1.27)))) 245 | ) 246 | (pin input line (at -17.78 -6.35 0) (length 2.54) 247 | (name "P1.13" (effects (font (size 1.27 1.27)))) 248 | (number "6" (effects (font (size 1.27 1.27)))) 249 | ) 250 | (pin input line (at -17.78 -8.89 0) (length 2.54) 251 | (name "P0.02/AIN0" (effects (font (size 1.27 1.27)))) 252 | (number "7" (effects (font (size 1.27 1.27)))) 253 | ) 254 | (pin input line (at -17.78 -11.43 0) (length 2.54) 255 | (name "P0.29/AIN5" (effects (font (size 1.27 1.27)))) 256 | (number "8" (effects (font (size 1.27 1.27)))) 257 | ) 258 | (pin input line (at -17.78 -13.97 0) (length 2.54) 259 | (name "P0.31/AIN7" (effects (font (size 1.27 1.27)))) 260 | (number "9" (effects (font (size 1.27 1.27)))) 261 | ) 262 | ) 263 | ) 264 | (symbol "numpad:MAX17260xxTD" (in_bom yes) (on_board yes) 265 | (property "Reference" "U" (id 0) (at -6.985 11.43 0) 266 | (effects (font (size 1.27 1.27))) 267 | ) 268 | (property "Value" "MAX17260xxTD" (id 1) (at 8.255 11.43 0) 269 | (effects (font (size 1.27 1.27))) 270 | ) 271 | (property "Footprint" "Package_DFN_QFN:TDFN-14-1EP_3x3mm_P0.4mm_EP1.78x2.35mm" (id 2) (at 0 -30.48 0) 272 | (effects (font (size 1.27 1.27)) hide) 273 | ) 274 | (property "Datasheet" "https://datasheets.maximintegrated.com/en/ds/MAX17260.pdf" (id 3) (at 15.24 2.54 0) 275 | (effects (font (size 1.27 1.27)) hide) 276 | ) 277 | (property "ki_keywords" "Charge pump, battery" (id 4) (at 0 0 0) 278 | (effects (font (size 1.27 1.27)) hide) 279 | ) 280 | (property "ki_description" "5.1μA 1-Cell Fuel Gauge with ModelGauge m5 EZ and Optional High-Side Current Sensing" (id 5) (at 0 0 0) 281 | (effects (font (size 1.27 1.27)) hide) 282 | ) 283 | (property "ki_fp_filters" "TDFN*1EP*3x3mm*P0.4mm*" (id 6) (at 0 0 0) 284 | (effects (font (size 1.27 1.27)) hide) 285 | ) 286 | (symbol "MAX17260xxTD_0_1" 287 | (rectangle (start -7.62 7.62) (end 7.62 -7.62) 288 | (stroke (width 0.254)) (fill (type background)) 289 | ) 290 | ) 291 | (symbol "MAX17260xxTD_1_1" 292 | (pin passive line (at -10.16 5.08 0) (length 2.54) 293 | (name "TH" (effects (font (size 1.27 1.27)))) 294 | (number "1" (effects (font (size 1.27 1.27)))) 295 | ) 296 | (pin passive line (at -10.16 0 0) (length 2.54) 297 | (name "CSPH" (effects (font (size 1.27 1.27)))) 298 | (number "10" (effects (font (size 1.27 1.27)))) 299 | ) 300 | (pin power_out line (at 10.16 -5.08 180) (length 2.54) 301 | (name "REG" (effects (font (size 1.27 1.27)))) 302 | (number "11" (effects (font (size 1.27 1.27)))) 303 | ) 304 | (pin output line (at 10.16 0 180) (length 2.54) 305 | (name "ALRT" (effects (font (size 1.27 1.27)))) 306 | (number "12" (effects (font (size 1.27 1.27)))) 307 | ) 308 | (pin bidirectional line (at 10.16 2.54 180) (length 2.54) 309 | (name "SDA" (effects (font (size 1.27 1.27)))) 310 | (number "13" (effects (font (size 1.27 1.27)))) 311 | ) 312 | (pin input line (at 10.16 5.08 180) (length 2.54) 313 | (name "SCL" (effects (font (size 1.27 1.27)))) 314 | (number "14" (effects (font (size 1.27 1.27)))) 315 | ) 316 | (pin passive line (at 0 -10.16 90) (length 2.54) hide 317 | (name "GND" (effects (font (size 1.27 1.27)))) 318 | (number "15" (effects (font (size 1.27 1.27)))) 319 | ) 320 | (pin no_connect line (at 2.54 -7.62 90) (length 2.54) hide 321 | (name "NC" (effects (font (size 1.27 1.27)))) 322 | (number "2" (effects (font (size 1.27 1.27)))) 323 | ) 324 | (pin no_connect line (at -5.08 -7.62 90) (length 2.54) hide 325 | (name "NC" (effects (font (size 1.27 1.27)))) 326 | (number "3" (effects (font (size 1.27 1.27)))) 327 | ) 328 | (pin no_connect line (at -2.54 -7.62 90) (length 2.54) hide 329 | (name "NC" (effects (font (size 1.27 1.27)))) 330 | (number "4" (effects (font (size 1.27 1.27)))) 331 | ) 332 | (pin no_connect line (at 5.08 -7.62 90) (length 2.54) hide 333 | (name "NC" (effects (font (size 1.27 1.27)))) 334 | (number "5" (effects (font (size 1.27 1.27)))) 335 | ) 336 | (pin power_in line (at 0 10.16 270) (length 2.54) 337 | (name "BATT" (effects (font (size 1.27 1.27)))) 338 | (number "6" (effects (font (size 1.27 1.27)))) 339 | ) 340 | (pin passive line (at -10.16 -2.54 0) (length 2.54) 341 | (name "CSN" (effects (font (size 1.27 1.27)))) 342 | (number "7" (effects (font (size 1.27 1.27)))) 343 | ) 344 | (pin power_in line (at 0 -10.16 90) (length 2.54) 345 | (name "GND" (effects (font (size 1.27 1.27)))) 346 | (number "8" (effects (font (size 1.27 1.27)))) 347 | ) 348 | (pin passive line (at -10.16 -5.08 0) (length 2.54) 349 | (name "CSPL" (effects (font (size 1.27 1.27)))) 350 | (number "9" (effects (font (size 1.27 1.27)))) 351 | ) 352 | ) 353 | ) 354 | ) 355 | -------------------------------------------------------------------------------- /pcb/NumBLE.pretty/E73-2G4M08S1C-52840.kicad_mod: -------------------------------------------------------------------------------- 1 | (footprint "E73-2G4M08S1C-52840" (version 20201116) (generator pcbnew) (layer "F.Cu") 2 | (tedit 5FDBC6FB) 3 | (fp_text reference "U5" (at 7.746775 -0.000467 270) (layer "F.SilkS") 4 | (effects (font (size 1 1) (thickness 0.15))) 5 | (tstamp 6f7d1573-6097-4ce0-a47d-62a2bd2add11) 6 | ) 7 | (fp_text value "E73-2G4M08S1C-52840" (at 9.778775 -0.635467 270) (layer "F.Fab") 8 | (effects (font (size 1 1) (thickness 0.15))) 9 | (tstamp 3c09fb5b-6867-4c3b-8164-f65e07d37408) 10 | ) 11 | (fp_text user "E73-2G4M08S1C" (at 15.875 0 90) (layer "F.SilkS") 12 | (effects (font (size 1 1) (thickness 0.15))) 13 | (tstamp a2f31ae1-d30f-4b0d-a5bb-9489307895b5) 14 | ) 15 | (fp_line (start -0.127 -6.604) (end -0.127 6.604) (layer "F.CrtYd") (width 0.15) (tstamp 35d9f3b3-5054-41fe-96a3-349e6b5d4dbe)) 16 | (fp_line (start 18.034 -6.604) (end -0.127 -6.604) (layer "F.CrtYd") (width 0.15) (tstamp 868b385e-9e1f-4ad1-936c-9dcb069e6f4a)) 17 | (fp_line (start 18.034 6.604) (end 18.034 -6.604) (layer "F.CrtYd") (width 0.15) (tstamp d6ee51f4-bc5c-4ef7-a2c3-d193aae510dc)) 18 | (fp_line (start -0.127 6.604) (end 18.034 6.604) (layer "F.CrtYd") (width 0.15) (tstamp e95462ee-5f40-4709-8f91-177922f9969f)) 19 | (pad "1" smd rect (at 14.03 -6.119) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 4ebdbc4f-add4-4284-898d-db31813a0ec4)) 20 | (pad "2" smd rect (at 12.76 -6.119) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 41205751-2417-43f5-95f3-e368bb74d1c3)) 21 | (pad "3" smd rect (at 11.49 -6.119) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp acd46ceb-f221-450b-b6ed-d9e83c23ac48)) 22 | (pad "4" smd rect (at 10.22 -6.119) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 4e568aaa-539c-42d1-aee0-9a4a22ee8f80)) 23 | (pad "5" smd rect (at 8.95 -6.119) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp b6268350-82b0-4002-ac94-64c3e54c23c7)) 24 | (pad "6" smd rect (at 7.68 -6.119) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 51175390-548b-4b9c-ad55-f71956973157)) 25 | (pad "7" smd rect (at 6.41 -6.119) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp c14cd5bb-f64e-4ae4-bb57-ba24cb24efec)) 26 | (pad "8" smd rect (at 5.14 -6.119) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 595a0702-a664-426d-8632-2ee3f1c9a3dd)) 27 | (pad "9" smd rect (at 3.87 -6.119) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp ed199378-0291-4dbe-a7c5-08753ce481a9)) 28 | (pad "10" smd rect (at 2.6 -6.119) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 047cea23-97a1-447e-8752-09bff2b31a19)) 29 | (pad "11" smd rect (at 0.381 -4.47 90) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 85a92935-bcf4-4f54-9ec9-ddda2f53a8ab)) 30 | (pad "12" smd rect (at 2.092 -3.833 90) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 95059ae2-6651-4d88-999c-78dac9f2938a)) 31 | (pad "13" smd rect (at 0.381 -3.2 90) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 984f4de1-d584-4102-8743-fa75dc63f419)) 32 | (pad "14" smd rect (at 2.092 -2.563 90) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp bf6cfc5f-c7cc-4c9c-b268-4438f0195929)) 33 | (pad "15" smd rect (at 0.381 -1.93 90) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp a49067ae-62f4-4c0b-8682-cfef73ef62fc)) 34 | (pad "16" smd rect (at 2.092 -1.293 90) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 70a37eb1-38c0-457a-a3dd-b0428418cb69)) 35 | (pad "17" smd rect (at 0.381 -0.66 90) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 8050e4bf-d840-472b-b32b-3ad6b6b0b819)) 36 | (pad "18" smd rect (at 2.092 -0.023 90) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 09c97852-60c8-4e45-990c-085d2debef48)) 37 | (pad "19" smd rect (at 0.381 0.61 90) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 02e5fee1-5cb0-472c-9d7b-93c19119404e)) 38 | (pad "20" smd rect (at 2.092 1.247 90) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 605dba44-1523-4655-b119-57d37bd832d3)) 39 | (pad "21" smd rect (at 0.381 1.88 90) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp b2fc00c5-2f6f-4622-b166-022bcfb0b08d)) 40 | (pad "22" smd rect (at 2.092 2.517 90) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 2ec39bf9-f258-4e1d-8db8-2e26d0420b76)) 41 | (pad "23" smd rect (at 0.381 3.15 90) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp b919bd16-a8e7-4c94-bc7d-09cd1f7cfd6a)) 42 | (pad "24" smd rect (at 2.092 3.787 90) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp e69f149e-0c36-46ae-b2ff-925d3bff0946)) 43 | (pad "25" smd rect (at 0.381 4.42 90) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 1b2ba799-0d64-4429-b0f9-4792edb4725f)) 44 | (pad "26" smd rect (at 2.6 6.119) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 8643eae0-de16-49b2-84df-3f5d1b8212e4)) 45 | (pad "27" smd rect (at 3.87 6.119) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 3e2b322a-e0a6-4d00-b34a-809a13ad6e86)) 46 | (pad "28" smd rect (at 4.632 4.041) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 54350610-3f35-4dd4-9d55-0f1c588f4e6c)) 47 | (pad "29" smd rect (at 5.14 6.119) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 4825aaaf-1fa3-422c-b7ef-aa8d3162a51e)) 48 | (pad "30" smd rect (at 5.902 4.041) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp ef35201f-b8e1-434c-af1e-9a7cf49f937e)) 49 | (pad "31" smd rect (at 6.41 6.119) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 325d1811-b03a-4339-9fd8-ae61cdf38025)) 50 | (pad "32" smd rect (at 7.172 4.041) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 0da50811-5d39-4a84-a911-60dff6d2bceb)) 51 | (pad "33" smd rect (at 7.68 6.119) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 88346f62-0923-452a-b7d9-833d16954e08)) 52 | (pad "34" smd rect (at 8.442 4.041) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 7bb6b11a-98fb-4380-82bf-8aa395c61543)) 53 | (pad "35" smd rect (at 8.95 6.119) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 694f819d-c582-4d8d-aa90-f4da21d640ba)) 54 | (pad "36" smd rect (at 9.712 4.041) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 4927d828-5e06-4e22-94d0-86fa6e5262d5)) 55 | (pad "37" smd rect (at 10.22 6.119) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 4370f0cb-71d4-4a60-bbd7-615ff3de5917)) 56 | (pad "38" smd rect (at 10.982 4.041) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp b1931798-56cb-4253-b9e6-1ae2243befd6)) 57 | (pad "39" smd rect (at 11.49 6.119) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp cc13aa06-589e-4431-a1a7-38c38761d6ff)) 58 | (pad "40" smd rect (at 12.252 4.041) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp bf33968c-6113-469e-b14c-4a813f4c8209)) 59 | (pad "41" smd rect (at 12.76 6.119) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 7ad5a950-d9de-4406-ab34-115cd589fcfa)) 60 | (pad "42" smd rect (at 13.522 4.041) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 5abb08e3-dc42-41cc-94ef-e46ee2cb9005)) 61 | (pad "43" smd rect (at 14.03 6.119) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 7cb7b3f0-69a2-4d19-ba89-3d114ec05d51)) 62 | (model "${KIPRJMOD}/NumBLE.pretty/3d/E73-2G4M08S1C.step" 63 | (offset (xyz 0 0 0)) 64 | (scale (xyz 1 1 1)) 65 | (rotate (xyz 0 0 0)) 66 | ) 67 | ) 68 | -------------------------------------------------------------------------------- /pcb/NumBLE.pretty/E73-2G4M08S1C-52840_TH.kicad_mod: -------------------------------------------------------------------------------- 1 | (footprint "E73-2G4M08S1C-52840_TH" (version 20201116) (generator pcbnew) (layer "F.Cu") 2 | (tedit 5FDBC6F1) 3 | (fp_text reference "U5" (at 7.746775 -0.000467 270) (layer "F.SilkS") 4 | (effects (font (size 1 1) (thickness 0.15))) 5 | (tstamp f557036a-c948-47c5-8ea1-5d6d0d17a275) 6 | ) 7 | (fp_text value "E73-2G4M08S1C-52840" (at 9.778775 -0.635467 270) (layer "F.Fab") 8 | (effects (font (size 1 1) (thickness 0.15))) 9 | (tstamp 601730ea-3517-42ad-9f4c-68bd4f3a4215) 10 | ) 11 | (fp_text user "E73-2G4M08S1C" (at 15.875 0 90) (layer "F.SilkS") 12 | (effects (font (size 1 1) (thickness 0.15))) 13 | (tstamp a8dd3534-dd25-41a9-9f1a-41ded3d208f4) 14 | ) 15 | (fp_line (start -0.127 -6.604) (end -0.127 6.604) (layer "F.CrtYd") (width 0.15) (tstamp 3bafcca6-c410-4297-9777-cbf9ea0d0145)) 16 | (fp_line (start 18.034 -6.604) (end -0.127 -6.604) (layer "F.CrtYd") (width 0.15) (tstamp 5f90b5d0-f372-42df-86ce-8fb7c743580c)) 17 | (fp_line (start -0.127 6.604) (end 18.034 6.604) (layer "F.CrtYd") (width 0.15) (tstamp c751eaab-b9a4-402f-a474-c09a8499b43d)) 18 | (fp_line (start 18.034 6.604) (end 18.034 -6.604) (layer "F.CrtYd") (width 0.15) (tstamp f1368cda-d166-4923-9503-56a2b7555a43)) 19 | (pad "1" smd rect (at 14.03 -6.119) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 797c1bf3-445e-4f5c-a0ef-8895720ac0a3)) 20 | (pad "2" smd rect (at 12.76 -6.119) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 97ab748c-2e1c-4a23-aa04-93a351533170)) 21 | (pad "3" smd rect (at 11.49 -6.119) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 16560db1-391a-4381-adb4-a683f5431070)) 22 | (pad "4" smd rect (at 10.22 -6.119) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 85e22368-c650-421a-98f5-d9ce692e4cd0)) 23 | (pad "5" smd rect (at 8.95 -6.119) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 1d37c998-5fe9-4042-9956-08458508d995)) 24 | (pad "6" smd rect (at 7.68 -6.119) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 56df5f45-8d07-40e1-b65d-65ed64966f98)) 25 | (pad "7" smd rect (at 6.41 -6.119) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 2652cedc-c024-43d3-912f-6f1d3e50f5b0)) 26 | (pad "8" smd rect (at 5.14 -6.119) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 1722e2c0-ca6d-452f-ac0f-6fb9a5ed9f46)) 27 | (pad "9" smd rect (at 3.87 -6.119) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 415fa97a-86dd-4474-9d51-6fcf172d830b)) 28 | (pad "10" smd rect (at 2.6 -6.119) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 88b3cc6b-d70f-46c6-8eb3-38e33d433445)) 29 | (pad "11" smd rect (at 0.381 -4.47 90) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp a2d42060-0e55-4ced-ba70-08df966ed1cb)) 30 | (pad "12" thru_hole rect (at 2.092 -3.833 90) (size 0.65 1) (drill 0.3) (layers *.Cu *.Mask) (tstamp 942b8387-3254-4a3a-acc6-50e99ae85a7d)) 31 | (pad "13" smd rect (at 0.381 -3.2 90) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 21d4ba69-161e-48bb-bc11-03664e0281dd)) 32 | (pad "14" thru_hole rect (at 2.092 -2.563 90) (size 0.65 1) (drill 0.3) (layers *.Cu *.Mask) (tstamp e6e2bba9-c6ba-4443-ac6d-70fcf53fd653)) 33 | (pad "15" smd rect (at 0.381 -1.93 90) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp aa03c7cf-f774-4e0e-8573-a5b2118c2e7d)) 34 | (pad "16" thru_hole rect (at 2.092 -1.293 90) (size 0.65 1) (drill 0.3) (layers *.Cu *.Mask) (tstamp cad6fc85-d8b3-4ab6-9e90-3533245e104b)) 35 | (pad "17" smd rect (at 0.381 -0.66 90) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 5d2cadf8-6b9f-4ae8-a9ea-47e85c6a341b)) 36 | (pad "18" thru_hole rect (at 2.092 -0.023 90) (size 0.65 1) (drill 0.3) (layers *.Cu *.Mask) (tstamp afa99436-4408-4233-8ca1-e0d43a395ed4)) 37 | (pad "19" smd rect (at 0.381 0.61 90) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp df699034-3ea3-44b5-b149-7129bcaa0027)) 38 | (pad "20" thru_hole rect (at 2.092 1.247 90) (size 0.65 1) (drill 0.3) (layers *.Cu *.Mask) (tstamp 52a57ddc-4b08-4dfd-b753-86c4e08c4942)) 39 | (pad "21" smd rect (at 0.381 1.88 90) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 73767cc2-c19f-4b2e-9a1d-25c7d47731b9)) 40 | (pad "22" thru_hole rect (at 2.092 2.517 90) (size 0.65 1) (drill 0.3) (layers *.Cu *.Mask) (tstamp 374f3ab6-8dda-44c2-b956-71444b7433d9)) 41 | (pad "23" smd rect (at 0.381 3.15 90) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 8e95bc3a-9bac-454d-ab4c-adcd05939b67)) 42 | (pad "24" thru_hole rect (at 2.092 3.787 90) (size 0.65 1) (drill 0.3) (layers *.Cu *.Mask) (tstamp 61b1bcad-e8a7-417e-bcee-2f1f3d6c8f84)) 43 | (pad "25" smd rect (at 0.381 4.42 90) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 344dbf0f-375c-4d18-8aac-c898c3f303f6)) 44 | (pad "26" smd rect (at 2.6 6.119) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 99b1c616-43c8-4235-a3c0-1c353bb06324)) 45 | (pad "27" smd rect (at 3.87 6.119) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp c384378e-0282-4b23-830d-5f171ddea0be)) 46 | (pad "28" thru_hole rect (at 4.632 4.041) (size 0.65 1) (drill 0.3) (layers *.Cu *.Mask) (tstamp 2da5f3b5-09e3-4080-82b0-cd45e8ae916c)) 47 | (pad "29" smd rect (at 5.14 6.119) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 2a04a1fd-ffc6-4163-97ad-0612b1c32ef7)) 48 | (pad "30" thru_hole rect (at 5.902 4.041) (size 0.65 1) (drill 0.3) (layers *.Cu *.Mask) (tstamp 2786c32f-920f-4b63-90b7-e390a530be10)) 49 | (pad "31" smd rect (at 6.41 6.119) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp dbadfb90-ecd2-43b2-a0a4-7356ae347eab)) 50 | (pad "32" thru_hole rect (at 7.172 4.041) (size 0.65 1) (drill 0.3) (layers *.Cu *.Mask) (tstamp aaecbec6-dd7f-4eb5-9356-f34c1f9079e2)) 51 | (pad "33" smd rect (at 7.68 6.119) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp f9097e7e-de5a-42e4-b65e-eda5381198e7)) 52 | (pad "34" thru_hole rect (at 8.442 4.041) (size 0.65 1) (drill 0.3) (layers *.Cu *.Mask) (tstamp 04d1692e-f0f8-4b6d-9674-de74f955d3cf)) 53 | (pad "35" smd rect (at 8.95 6.119) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 05ccbbf8-e1b1-4264-9d21-a6f3424467a4)) 54 | (pad "36" thru_hole rect (at 9.712 4.041) (size 0.65 1) (drill 0.3) (layers *.Cu *.Mask) (tstamp 36b9f1a4-0c19-4c62-b83c-8106ef43ac0c)) 55 | (pad "37" smd rect (at 10.22 6.119) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 49230ca5-4a19-4016-a57e-421a271b9c10)) 56 | (pad "38" thru_hole rect (at 10.982 4.041) (size 0.65 1) (drill 0.3) (layers *.Cu *.Mask) (tstamp 25f54bcd-366e-4a6b-85ca-696ebe9c1894)) 57 | (pad "39" smd rect (at 11.49 6.119) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp eb8f9832-1b89-4eaa-a4fc-3a341c4ed072)) 58 | (pad "40" thru_hole rect (at 12.252 4.041) (size 0.65 1) (drill 0.3) (layers *.Cu *.Mask) (tstamp 2995a9cc-9952-4928-b457-c6ea325d657a)) 59 | (pad "41" smd rect (at 12.76 6.119) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 4cd1297e-63ea-43db-8e06-3ba4fe917799)) 60 | (pad "42" thru_hole rect (at 13.522 4.041) (size 0.65 1) (drill 0.3) (layers *.Cu *.Mask) (tstamp f30c5bbd-b3fa-445e-a500-b560f463b083)) 61 | (pad "43" smd rect (at 14.03 6.119) (size 0.65 1) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 3b290d69-a827-41eb-b3a0-fafb3f454f1b)) 62 | (model "${KIPRJMOD}/NumBLE.pretty/3d/E73-2G4M08S1C.step" 63 | (offset (xyz 0 0 0)) 64 | (scale (xyz 1 1 1)) 65 | (rotate (xyz 0 0 0)) 66 | ) 67 | ) 68 | -------------------------------------------------------------------------------- /pcb/NumBLE.pretty/JST_PH_S2B-PH-SM4-TB_1x02-1MP_P2.00mm_Horizontal.kicad_mod: -------------------------------------------------------------------------------- 1 | (module JST_PH_S2B-PH-SM4-TB_1x02-1MP_P2.00mm_Horizontal (layer F.Cu) (tedit 5F8B1D25) 2 | (descr "JST PH series connector, S2B-PH-SM4-TB (http://www.jst-mfg.com/product/pdf/eng/ePH.pdf), generated with kicad-footprint-generator") 3 | (tags "connector JST PH top entry") 4 | (attr smd) 5 | (fp_text reference REF** (at 0 -5.8) (layer F.SilkS) 6 | (effects (font (size 1 1) (thickness 0.15))) 7 | ) 8 | (fp_text value JST_PH_S2B-PH-SM4-TB_1x02-1MP_P2.00mm_Horizontal (at 0 5.8) (layer F.Fab) 9 | (effects (font (size 1 1) (thickness 0.15))) 10 | ) 11 | (fp_line (start -1 -0.892893) (end -0.5 -1.6) (layer F.Fab) (width 0.1)) 12 | (fp_line (start -1.5 -1.6) (end -1 -0.892893) (layer F.Fab) (width 0.1)) 13 | (fp_line (start 4.6 -5.1) (end -4.6 -5.1) (layer F.CrtYd) (width 0.05)) 14 | (fp_line (start 4.6 5.1) (end 4.6 -5.1) (layer F.CrtYd) (width 0.05)) 15 | (fp_line (start -4.6 5.1) (end 4.6 5.1) (layer F.CrtYd) (width 0.05)) 16 | (fp_line (start -4.6 -5.1) (end -4.6 5.1) (layer F.CrtYd) (width 0.05)) 17 | (fp_line (start 3.95 -3.2) (end 3.95 4.4) (layer F.Fab) (width 0.1)) 18 | (fp_line (start -3.95 -3.2) (end -3.95 4.4) (layer F.Fab) (width 0.1)) 19 | (fp_line (start -3.95 4.4) (end 3.95 4.4) (layer F.Fab) (width 0.1)) 20 | (fp_line (start -2.34 4.51) (end 2.34 4.51) (layer F.SilkS) (width 0.12)) 21 | (fp_line (start 3.04 -1.71) (end 1.76 -1.71) (layer F.SilkS) (width 0.12)) 22 | (fp_line (start 3.04 -3.31) (end 3.04 -1.71) (layer F.SilkS) (width 0.12)) 23 | (fp_line (start 4.06 -3.31) (end 3.04 -3.31) (layer F.SilkS) (width 0.12)) 24 | (fp_line (start 4.06 0.94) (end 4.06 -3.31) (layer F.SilkS) (width 0.12)) 25 | (fp_line (start -1.76 -1.71) (end -1.76 -4.6) (layer F.SilkS) (width 0.12)) 26 | (fp_line (start -3.04 -1.71) (end -1.76 -1.71) (layer F.SilkS) (width 0.12)) 27 | (fp_line (start -3.04 -3.31) (end -3.04 -1.71) (layer F.SilkS) (width 0.12)) 28 | (fp_line (start -4.06 -3.31) (end -3.04 -3.31) (layer F.SilkS) (width 0.12)) 29 | (fp_line (start -4.06 0.94) (end -4.06 -3.31) (layer F.SilkS) (width 0.12)) 30 | (fp_line (start 3.15 -3.2) (end 3.95 -3.2) (layer F.Fab) (width 0.1)) 31 | (fp_line (start 3.15 -1.6) (end 3.15 -3.2) (layer F.Fab) (width 0.1)) 32 | (fp_line (start -3.15 -1.6) (end 3.15 -1.6) (layer F.Fab) (width 0.1)) 33 | (fp_line (start -3.15 -3.2) (end -3.15 -1.6) (layer F.Fab) (width 0.1)) 34 | (fp_line (start -3.95 -3.2) (end -3.15 -3.2) (layer F.Fab) (width 0.1)) 35 | (fp_text user %R (at 0 1.5) (layer F.Fab) 36 | (effects (font (size 1 1) (thickness 0.15))) 37 | ) 38 | (pad MP smd roundrect (at 3.35 2.9) (size 1.5 3.4) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.166667)) 39 | (pad MP smd roundrect (at -3.35 2.9) (size 1.5 3.4) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.166667)) 40 | (pad 2 smd roundrect (at 1 -2.85) (size 1 3.5) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25)) 41 | (pad 1 smd roundrect (at -1 -2.85) (size 1 3.5) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25)) 42 | (model ${KISYS3DMOD}/Connector_JST.3dshapes/JST_PH_S2B-PH-SM4-TB_1x02-1MP_P2.00mm_Horizontal.wrl 43 | (at (xyz 0 0 0)) 44 | (scale (xyz 1 1 1)) 45 | (rotate (xyz 0 0 0)) 46 | ) 47 | (model "${KIPRJMOD}/NumBLE.pretty/3d/S2B-PH-SM4-TB(LF)(SN).STEP" 48 | (offset (xyz 0 -4.35 0)) 49 | (scale (xyz 1 1 1)) 50 | (rotate (xyz -90 0 0)) 51 | ) 52 | ) 53 | -------------------------------------------------------------------------------- /pcb/NumBLE.pretty/LVT08Rxxx0xER.kicad_mod: -------------------------------------------------------------------------------- 1 | (footprint "LVT08Rxxx0xER" (version 20210424) (generator pcbnew) (layer "F.Cu") 2 | (tedit 6005FF93) 3 | (descr "https://www.mouser.com/datasheet/2/303/res_lvt-1381818.pdf") 4 | (tags "resistor handsolder") 5 | (attr smd) 6 | (fp_text reference "REF**" (at 0 -1.65) (layer "F.SilkS") 7 | (effects (font (size 1 1) (thickness 0.15))) 8 | (tstamp 65310335-b942-4b55-92dd-ec42a7d4ae04) 9 | ) 10 | (fp_text value "LVT08Rxxx0xER" (at 0 1.65) (layer "F.Fab") 11 | (effects (font (size 1 1) (thickness 0.15))) 12 | (tstamp cd86a753-4729-42c6-b0c8-0c913fb6bcff) 13 | ) 14 | (fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab") 15 | (effects (font (size 0.5 0.5) (thickness 0.08))) 16 | (tstamp 6fe6df67-a302-43e2-8d2e-84c1aa83fe72) 17 | ) 18 | (fp_line (start -0.227064 0.735) (end 0.227064 0.735) (layer "F.SilkS") (width 0.12) (tstamp 38b29987-7475-4f23-be96-02dc58c3e1af)) 19 | (fp_line (start -0.227064 -0.735) (end 0.227064 -0.735) (layer "F.SilkS") (width 0.12) (tstamp bb611331-a55d-4cb6-9213-5e5f18332b25)) 20 | (fp_line (start -1.85 0.95) (end -1.85 -0.95) (layer "F.CrtYd") (width 0.05) (tstamp 5971112d-8fde-464e-bacb-208f0bd342d7)) 21 | (fp_line (start 1.85 -0.95) (end 1.85 0.95) (layer "F.CrtYd") (width 0.05) (tstamp 618a0a4d-9cd5-439f-9e84-fcbc2d6296f8)) 22 | (fp_line (start -1.85 -0.95) (end 1.85 -0.95) (layer "F.CrtYd") (width 0.05) (tstamp 6ba10f3c-e997-404f-a8fe-f3a1fddce155)) 23 | (fp_line (start 1.85 0.95) (end -1.85 0.95) (layer "F.CrtYd") (width 0.05) (tstamp 9e2dd034-110a-4ae4-9d88-f75b3af85bc5)) 24 | (fp_line (start 1 -0.625) (end 1 0.625) (layer "F.Fab") (width 0.1) (tstamp 1915c16a-f974-4030-951e-33499b14398c)) 25 | (fp_line (start -1 -0.625) (end 1 -0.625) (layer "F.Fab") (width 0.1) (tstamp 6388b652-926a-480b-9727-1ffba0584d9c)) 26 | (fp_line (start 1 0.625) (end -1 0.625) (layer "F.Fab") (width 0.1) (tstamp b109898c-9798-4cc1-9269-8fb2d214dec2)) 27 | (fp_line (start -1 0.625) (end -1 -0.625) (layer "F.Fab") (width 0.1) (tstamp b32bd7f4-5874-4643-8797-5f29ec712d24)) 28 | (pad "1" smd rect (at -0.4 0) (size 0.2 0.15) (layers "F.Cu") (tstamp 322945d1-49fd-4c30-86e3-ae140ba1ec0e)) 29 | (pad "1" smd roundrect (at -1.1 0) (size 1.4 1.44) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.208) (tstamp d3ed44fb-51fe-4dd3-bc34-b12c0ceab9c7)) 30 | (pad "2" smd roundrect (at 1.1 0) (size 1.4 1.44) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.208) (tstamp 690b51e5-9c8f-42a1-a307-6c681cc19022)) 31 | (pad "2" smd rect (at 0.4 0) (size 0.2 0.15) (layers "F.Cu") (tstamp cc2cbefb-3a4b-4aaa-99e8-64c17aa76801)) 32 | (model "${KISYS3DMOD}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl" 33 | (offset (xyz 0 0 0)) 34 | (scale (xyz 1 1 1)) 35 | (rotate (xyz 0 0 0)) 36 | ) 37 | ) 38 | -------------------------------------------------------------------------------- /pcb/NumBLE.pretty/MXOnly-1U-2U-Center-ReversedStabilizers.kicad_mod: -------------------------------------------------------------------------------- 1 | (module MXOnly-1U-2U-Center-ReversedStabilizers (layer F.Cu) (tedit 5F8108D0) 2 | (fp_text reference REF** (at 0 3.175) (layer Dwgs.User) 3 | (effects (font (size 1 1) (thickness 0.15))) 4 | ) 5 | (fp_text value 2U (at 0 -7.9375) (layer Dwgs.User) 6 | (effects (font (size 1 1) (thickness 0.15))) 7 | ) 8 | (fp_line (start -19.05 9.525) (end -19.05 -9.525) (layer Dwgs.User) (width 0.15)) 9 | (fp_line (start -19.05 9.525) (end 19.05 9.525) (layer Dwgs.User) (width 0.15)) 10 | (fp_line (start 19.05 -9.525) (end 19.05 9.525) (layer Dwgs.User) (width 0.15)) 11 | (fp_line (start -19.05 -9.525) (end 19.05 -9.525) (layer Dwgs.User) (width 0.15)) 12 | (fp_line (start -7 -7) (end -7 -5) (layer Dwgs.User) (width 0.15)) 13 | (fp_line (start -5 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) 14 | (fp_line (start -7 7) (end -5 7) (layer Dwgs.User) (width 0.15)) 15 | (fp_line (start -7 5) (end -7 7) (layer Dwgs.User) (width 0.15)) 16 | (fp_line (start 7 7) (end 7 5) (layer Dwgs.User) (width 0.15)) 17 | (fp_line (start 5 7) (end 7 7) (layer Dwgs.User) (width 0.15)) 18 | (fp_line (start 7 -7) (end 7 -5) (layer Dwgs.User) (width 0.15)) 19 | (fp_line (start 5 -7) (end 7 -7) (layer Dwgs.User) (width 0.15)) 20 | (pad "" np_thru_hole circle (at 11.90625 -8.255) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) 21 | (pad "" np_thru_hole circle (at -11.90625 -8.255) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) 22 | (pad "" np_thru_hole circle (at 11.90625 6.985) (size 3.048 3.048) (drill 3.048) (layers *.Cu *.Mask)) 23 | (pad "" np_thru_hole circle (at -11.90625 6.985) (size 3.048 3.048) (drill 3.048) (layers *.Cu *.Mask)) 24 | (pad "" np_thru_hole oval (at 4.7625 0) (size 2.385 1.75) (drill oval 2.385 1.75) (layers *.Cu *.Mask)) 25 | (pad "" np_thru_hole oval (at -4.7625 0) (size 2.385 1.75) (drill oval 2.385 1.75) (layers *.Cu *.Mask)) 26 | (pad 1 thru_hole circle (at -3.81 -2.54) (size 2.25 2.25) (drill 1.47) (layers *.Cu B.Mask)) 27 | (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) 28 | (pad 2 thru_hole circle (at 2.54 -5.08) (size 2.25 2.25) (drill 1.47) (layers *.Cu B.Mask)) 29 | ) 30 | -------------------------------------------------------------------------------- /pcb/NumBLE.pretty/MXOnly-1U-2U-Left.kicad_mod: -------------------------------------------------------------------------------- 1 | (module MXOnly-1U-2U-Left (layer F.Cu) (tedit 5F810771) 2 | (fp_text reference REF** (at 0 3.175) (layer Dwgs.User) 3 | (effects (font (size 1 1) (thickness 0.15))) 4 | ) 5 | (fp_text value 1U (at 0 -7.9375) (layer Dwgs.User) 6 | (effects (font (size 1 1) (thickness 0.15))) 7 | ) 8 | (fp_line (start -9.525 9.525) (end -9.525 -9.525) (layer Dwgs.User) (width 0.15)) 9 | (fp_line (start 9.525 9.525) (end -9.525 9.525) (layer Dwgs.User) (width 0.15)) 10 | (fp_line (start 9.525 -9.525) (end 9.525 9.525) (layer Dwgs.User) (width 0.15)) 11 | (fp_line (start -9.525 -9.525) (end 9.525 -9.525) (layer Dwgs.User) (width 0.15)) 12 | (fp_line (start -7 -7) (end -7 -5) (layer Dwgs.User) (width 0.15)) 13 | (fp_line (start -5 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) 14 | (fp_line (start -7 7) (end -5 7) (layer Dwgs.User) (width 0.15)) 15 | (fp_line (start -7 5) (end -7 7) (layer Dwgs.User) (width 0.15)) 16 | (fp_line (start 7 7) (end 7 5) (layer Dwgs.User) (width 0.15)) 17 | (fp_line (start 5 7) (end 7 7) (layer Dwgs.User) (width 0.15)) 18 | (fp_line (start 7 -7) (end 7 -5) (layer Dwgs.User) (width 0.15)) 19 | (fp_line (start 5 -7) (end 7 -7) (layer Dwgs.User) (width 0.15)) 20 | (pad "" np_thru_hole circle (at -5.08 0 48.0996) (size 1.75 1.75) (drill 1.75) (layers *.Cu *.Mask)) 21 | (pad 1 thru_hole circle (at -3.81 -2.54) (size 2.25 2.25) (drill 1.47) (layers *.Cu B.Mask)) 22 | (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) 23 | (pad 2 thru_hole circle (at 2.54 -5.08) (size 2.25 2.25) (drill 1.47) (layers *.Cu B.Mask)) 24 | ) 25 | -------------------------------------------------------------------------------- /pcb/NumBLE.pretty/MXOnly-1U-2U-Right.kicad_mod: -------------------------------------------------------------------------------- 1 | (footprint "MXOnly-1U-2U-Right" (version 20210126) (generator pcbnew) (layer "F.Cu") 2 | (tedit 6054CC06) 3 | (fp_text reference "REF**" (at 0 3.175) (layer "Dwgs.User") 4 | (effects (font (size 1 1) (thickness 0.15))) 5 | (tstamp 34efac29-51e5-459c-b9be-68748e2284b1) 6 | ) 7 | (fp_text value "1U" (at 0 -7.9375) (layer "Dwgs.User") 8 | (effects (font (size 1 1) (thickness 0.15))) 9 | (tstamp 45f58dca-eefd-4c9b-99f4-11e24be3ac6b) 10 | ) 11 | (fp_line (start -5 -7) (end -7 -7) (layer "Dwgs.User") (width 0.15) (tstamp 0ea64a68-b92a-40e5-8d97-3a5709028ebe)) 12 | (fp_line (start 9.525 9.525) (end -9.525 9.525) (layer "Dwgs.User") (width 0.15) (tstamp 2e59940b-da4a-4382-a9b1-3ee8e57379ba)) 13 | (fp_line (start -9.525 9.525) (end -9.525 -9.525) (layer "Dwgs.User") (width 0.15) (tstamp 53b420a3-7053-43f4-9a8a-43ff147c99c7)) 14 | (fp_line (start -7 -7) (end -7 -5) (layer "Dwgs.User") (width 0.15) (tstamp 824c9e33-7ed9-4008-83d5-0d659fadd42a)) 15 | (fp_line (start 9.525 -9.525) (end 9.525 9.525) (layer "Dwgs.User") (width 0.15) (tstamp 8c8c9a14-50a4-4fb4-8f52-513a47041ae2)) 16 | (fp_line (start 7 -7) (end 7 -5) (layer "Dwgs.User") (width 0.15) (tstamp 9282cec3-0ca0-4ade-b225-dbf2d8521bf0)) 17 | (fp_line (start -7 7) (end -5 7) (layer "Dwgs.User") (width 0.15) (tstamp 92cc0f3d-8088-42ac-bb41-7a504bcec6e9)) 18 | (fp_line (start 5 -7) (end 7 -7) (layer "Dwgs.User") (width 0.15) (tstamp 95243980-104e-4cd5-ba6a-cae55e9f5045)) 19 | (fp_line (start 7 7) (end 7 5) (layer "Dwgs.User") (width 0.15) (tstamp a08a0240-a204-49e3-9ff6-bb9058128886)) 20 | (fp_line (start -9.525 -9.525) (end 9.525 -9.525) (layer "Dwgs.User") (width 0.15) (tstamp cf9f553c-8b48-43ee-86ad-217c1b37e4c2)) 21 | (fp_line (start -7 5) (end -7 7) (layer "Dwgs.User") (width 0.15) (tstamp de7dce41-a437-4ca3-82db-38bac17fbcfd)) 22 | (fp_line (start 5 7) (end 7 7) (layer "Dwgs.User") (width 0.15) (tstamp f9afc1f0-15ef-4ab9-bbb6-ef8684f47474)) 23 | (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask) (tstamp 3c768196-10aa-4dd8-be39-e822ec01ada0)) 24 | (pad "" np_thru_hole circle (at 5.08 0 48.0996) (size 1.75 1.75) (drill 1.75) (layers *.Cu *.Mask) (tstamp 96529f78-6cff-4194-8a19-d5c702b74126)) 25 | (pad "1" thru_hole circle (at -3.81 -2.54) (size 2.25 2.25) (drill 1.47) (layers *.Cu "B.Mask") (tstamp b15a5af0-70d6-4b0f-be2a-150bf73166f3)) 26 | (pad "2" thru_hole circle (at 2.54 -5.08) (size 2.25 2.25) (drill 1.47) (layers *.Cu "B.Mask") (tstamp f4411621-8133-414a-b48c-c67d38da059b)) 27 | ) 28 | -------------------------------------------------------------------------------- /pcb/NumBLE.pretty/RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm.kicad_mod: -------------------------------------------------------------------------------- 1 | (footprint "RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm" (version 20201116) (generator pcbnew) (layer "F.Cu") 2 | (tedit 5FE57337) 3 | (descr "Alps rotary encoder, EC12E... with switch, vertical shaft, http://www.alps.com/prod/info/E/HTML/Encoder/Incremental/EC11/EC11E15204A3.html") 4 | (tags "rotary encoder") 5 | (attr through_hole) 6 | (fp_text reference "REF**" (at -4.7 -7.2) (layer "F.SilkS") 7 | (effects (font (size 1 1) (thickness 0.15))) 8 | (tstamp 0b3a9b71-dbbf-4ba8-be17-9d631c3cebb1) 9 | ) 10 | (fp_text value "RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm" (at 0 7.9) (layer "F.Fab") 11 | (effects (font (size 1 1) (thickness 0.15))) 12 | (tstamp 3bb3d8dd-f001-44a2-9abf-a580d985c63a) 13 | ) 14 | (fp_text user "${REFERENCE}" (at 3.6 3.8) (layer "F.Fab") 15 | (effects (font (size 1 1) (thickness 0.15))) 16 | (tstamp 5f418de2-3dae-4ac7-b335-e4a5980a0b0c) 17 | ) 18 | (fp_line (start -9 -7.1) (end -9 7.1) (layer "F.CrtYd") (width 0.05) (tstamp 05fedeea-c20b-43fb-8f63-3e52f045f857)) 19 | (fp_line (start 8.5 7.1) (end -9 7.1) (layer "F.CrtYd") (width 0.05) (tstamp 4ee7e4a6-66cb-45d0-84e6-29f21e81b512)) 20 | (fp_line (start 8.5 7.1) (end 8.5 -7.1) (layer "F.CrtYd") (width 0.05) (tstamp 706d8259-8eb9-45b0-be4e-5fbaef4e0d36)) 21 | (fp_line (start -9 -7.1) (end 8.5 -7.1) (layer "F.CrtYd") (width 0.05) (tstamp e40d6f84-01c4-43f3-a6b3-cc51b10196bd)) 22 | (fp_line (start 0 -3) (end 0 3) (layer "F.Fab") (width 0.12) (tstamp 1c9316ef-3e76-4b06-b6fc-cb9d9ac93fc4)) 23 | (fp_line (start -6 5.8) (end -6 -4.7) (layer "F.Fab") (width 0.12) (tstamp 67279162-714f-4a7a-8429-3ccf928f432e)) 24 | (fp_line (start 6 5.8) (end -6 5.8) (layer "F.Fab") (width 0.12) (tstamp 6f3018da-8ed5-4135-a319-c6d247eefbf6)) 25 | (fp_line (start 6 -5.8) (end 6 5.8) (layer "F.Fab") (width 0.12) (tstamp 86434c9b-7a20-494c-828b-7c7ed4119550)) 26 | (fp_line (start -3 0) (end 3 0) (layer "F.Fab") (width 0.12) (tstamp e5dee8b0-2066-4905-a1b4-f0f0b9680c83)) 27 | (fp_line (start -5 -5.8) (end 6 -5.8) (layer "F.Fab") (width 0.12) (tstamp f9057bbe-b5a2-47e7-8dc7-60f6c583a368)) 28 | (fp_line (start -6 -4.7) (end -5 -5.8) (layer "F.Fab") (width 0.12) (tstamp f9b64cd5-7c8b-46a4-b72e-d6c14b895f8e)) 29 | (fp_circle (center 0 0) (end 3 0) (layer "F.Fab") (width 0.12) (fill none) (tstamp 1d7ca09d-15e1-442d-a331-735ec07536b3)) 30 | (pad "A" thru_hole rect (at -7.5 -2.5) (size 2 2) (drill 1) (layers *.Cu *.Mask) (tstamp c4d7d17c-6a79-462b-8966-2eeecbf87440)) 31 | (pad "B" thru_hole circle (at -7.5 2.5) (size 2 2) (drill 1) (layers *.Cu *.Mask) (tstamp 4dc95bc4-3859-4af1-ab69-7e9013d04f7a)) 32 | (pad "C" thru_hole circle (at -7.5 0) (size 2 2) (drill 1) (layers *.Cu *.Mask) (tstamp 1029b18f-6b0d-4391-8076-659dee66546f)) 33 | (pad "MP" thru_hole roundrect (at 0 5.6) (size 3.2 2) (drill oval 2.8 1.5) (layers *.Cu *.Mask) (roundrect_rratio 0.2) (tstamp be131748-75e7-454b-9929-830c9361d3dc)) 34 | (pad "MP" thru_hole roundrect (at 0 -5.6) (size 3.2 2) (drill oval 2.8 1.5) (layers *.Cu *.Mask) (roundrect_rratio 0.2) (tstamp c72e68bc-65e3-4778-802e-69b4d2c29baf)) 35 | (pad "S1" thru_hole circle (at 7 2.5) (size 2 2) (drill 1) (layers *.Cu *.Mask) (tstamp 9a82375d-cdb1-4601-912c-c92b1ab335a8)) 36 | (pad "S2" thru_hole circle (at 7 -2.5) (size 2 2) (drill 1) (layers *.Cu *.Mask) (tstamp 14e27d73-04e2-4e73-bc4b-da572379289d)) 37 | (model "${KISYS3DMOD}/Rotary_Encoder.3dshapes/RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm.wrl" 38 | (offset (xyz 0 0 0)) 39 | (scale (xyz 1 1 1)) 40 | (rotate (xyz 0 0 0)) 41 | ) 42 | ) 43 | -------------------------------------------------------------------------------- /pcb/NumBLE.pretty/SW_DPDT_CK_JS202011JCQN.kicad_mod: -------------------------------------------------------------------------------- 1 | (module SW_DPDT_CK_JS202011JCQN (layer F.Cu) (tedit 5F8B6469) 2 | (descr "Sub-miniature slide switch, vertical, SMT J bend https://dznh3ojzb2azq.cloudfront.net/products/Slide/JS/documents/datasheet.pdf") 3 | (tags "switch DPDT SMT") 4 | (attr smd) 5 | (fp_text reference REF** (at 0 -3.05) (layer F.SilkS) 6 | (effects (font (size 1 1) (thickness 0.15))) 7 | ) 8 | (fp_text value SW_DPDT_CK_JS202011JCQN (at 0 3.15) (layer F.Fab) 9 | (effects (font (size 1 1) (thickness 0.15))) 10 | ) 11 | (fp_line (start 4.75 2.25) (end -4.75 2.25) (layer F.CrtYd) (width 0.05)) 12 | (fp_line (start -4.75 -2.25) (end 4.75 -2.25) (layer F.CrtYd) (width 0.05)) 13 | (fp_line (start -4.75 -2.25) (end -4.75 2.25) (layer F.CrtYd) (width 0.05)) 14 | (fp_line (start 4.75 -2.25) (end 4.75 2.25) (layer F.CrtYd) (width 0.05)) 15 | (fp_line (start -0.25 -0.75) (end -0.25 0.75) (layer F.Fab) (width 0.1)) 16 | (fp_line (start -1.75 -0.75) (end -1.75 0.75) (layer F.Fab) (width 0.1)) 17 | (fp_line (start 1.75 0.75) (end -1.75 0.75) (layer F.Fab) (width 0.1)) 18 | (fp_line (start 1.75 -0.75) (end 1.75 0.75) (layer F.Fab) (width 0.1)) 19 | (fp_line (start -1.75 -0.75) (end 1.75 -0.75) (layer F.Fab) (width 0.1)) 20 | (fp_line (start 1.74 1.91) (end 0.76 1.91) (layer F.SilkS) (width 0.12)) 21 | (fp_line (start -0.76 1.91) (end -1.74 1.91) (layer F.SilkS) (width 0.12)) 22 | (fp_line (start 1.74 -1.91) (end 0.76 -1.91) (layer F.SilkS) (width 0.12)) 23 | (fp_line (start 4.61 1.91) (end 3.26 1.91) (layer F.SilkS) (width 0.12)) 24 | (fp_line (start 4.61 -1.91) (end 3.26 -1.91) (layer F.SilkS) (width 0.12)) 25 | (fp_line (start -0.76 -1.91) (end -1.74 -1.91) (layer F.SilkS) (width 0.12)) 26 | (fp_line (start -4.61 1.91) (end -3.26 1.91) (layer F.SilkS) (width 0.12)) 27 | (fp_line (start -4.61 -1.91) (end -4.61 1.91) (layer F.SilkS) (width 0.12)) 28 | (fp_line (start -3.26 -1.91) (end -4.61 -1.91) (layer F.SilkS) (width 0.12)) 29 | (fp_line (start 4.61 -1.91) (end 4.61 1.91) (layer F.SilkS) (width 0.12)) 30 | (fp_line (start -4.5 1.8) (end -4.5 -1.8) (layer F.Fab) (width 0.1)) 31 | (fp_line (start 4.5 1.8) (end -4.5 1.8) (layer F.Fab) (width 0.1)) 32 | (fp_line (start 4.5 -1.8) (end 4.5 1.8) (layer F.Fab) (width 0.1)) 33 | (fp_line (start -4.5 -1.8) (end 4.5 -1.8) (layer F.Fab) (width 0.1)) 34 | (fp_text user %R (at 0 -3.05) (layer F.Fab) 35 | (effects (font (size 1 1) (thickness 0.15))) 36 | ) 37 | (pad 4 smd rect (at -2.5 1.5) (size 1 2.2) (layers F.Cu F.Paste F.Mask)) 38 | (pad 5 smd rect (at 0 1.5) (size 1 2.2) (layers F.Cu F.Paste F.Mask)) 39 | (pad 6 smd rect (at 2.5 1.5) (size 1 2.2) (layers F.Cu F.Paste F.Mask)) 40 | (pad 1 smd rect (at -2.5 -1.5) (size 1 2.2) (layers F.Cu F.Paste F.Mask)) 41 | (pad 2 smd rect (at 0 -1.5) (size 1 2.2) (layers F.Cu F.Paste F.Mask)) 42 | (pad 3 smd rect (at 2.5 -1.5) (size 1 2.2) (layers F.Cu F.Paste F.Mask)) 43 | (model ${KISYS3DMOD}/Button_Switch_SMD.3dshapes/SW_DPDT_CK_JS202011JCQN.wrl 44 | (at (xyz 0 0 0)) 45 | (scale (xyz 1 1 1)) 46 | (rotate (xyz 0 0 0)) 47 | ) 48 | (model ${KIPRJMOD}/NumBLE.pretty/3d/JS202011JCQN.stp 49 | (at (xyz 0 0 0)) 50 | (scale (xyz 1 1 1)) 51 | (rotate (xyz -90 0 0)) 52 | ) 53 | ) 54 | -------------------------------------------------------------------------------- /pcb/NumBLE.pretty/SW_Push_1P1T_NO_CK_KSC7xxJ.kicad_mod: -------------------------------------------------------------------------------- 1 | (module SW_Push_1P1T_NO_CK_KSC7xxJ (layer F.Cu) (tedit 5F8B1C47) 2 | (descr "CK components KSC7 tactile switch https://www.ckswitches.com/media/1973/ksc7.pdf") 3 | (tags "tactile switch ksc7") 4 | (attr smd) 5 | (fp_text reference REF** (at 0 4.24) (layer F.SilkS) 6 | (effects (font (size 1 1) (thickness 0.15))) 7 | ) 8 | (fp_text value SW_Push_1P1T_NO_CK_KSC7xxJ (at 0 -4.23) (layer F.Fab) 9 | (effects (font (size 1 1) (thickness 0.15))) 10 | ) 11 | (fp_line (start -3.1 -3.1) (end 3.1 -3.1) (layer F.Fab) (width 0.1)) 12 | (fp_line (start 3.1 -3.1) (end 3.1 3.1) (layer F.Fab) (width 0.1)) 13 | (fp_line (start 3.1 3.1) (end -3.1 3.1) (layer F.Fab) (width 0.1)) 14 | (fp_line (start -3.1 3.1) (end -3.1 -3.1) (layer F.Fab) (width 0.1)) 15 | (fp_line (start -4.55 -3.35) (end 4.55 -3.35) (layer F.CrtYd) (width 0.05)) 16 | (fp_line (start 4.55 -3.35) (end 4.55 3.35) (layer F.CrtYd) (width 0.05)) 17 | (fp_line (start 4.55 3.35) (end -4.55 3.35) (layer F.CrtYd) (width 0.05)) 18 | (fp_line (start -4.55 3.35) (end -4.55 -3.35) (layer F.CrtYd) (width 0.05)) 19 | (fp_circle (center 0 0) (end 1.5 0) (layer F.Fab) (width 0.1)) 20 | (fp_line (start -3.21 2.8) (end -3.21 3.21) (layer F.SilkS) (width 0.12)) 21 | (fp_line (start -3.21 3.21) (end 3.21 3.21) (layer F.SilkS) (width 0.12)) 22 | (fp_line (start 3.21 3.21) (end 3.21 2.93) (layer F.SilkS) (width 0.12)) 23 | (fp_line (start 3.21 1.2) (end 3.21 -1.2) (layer F.SilkS) (width 0.12)) 24 | (fp_line (start 3.21 -2.8) (end 3.21 -3.21) (layer F.SilkS) (width 0.12)) 25 | (fp_line (start 3.21 -3.21) (end -3.21 -3.21) (layer F.SilkS) (width 0.12)) 26 | (fp_line (start -3.21 -3.21) (end -3.21 -2.8) (layer F.SilkS) (width 0.12)) 27 | (fp_line (start -3.21 -1.2) (end -3.21 1.2) (layer F.SilkS) (width 0.12)) 28 | (fp_text user %R (at 0 0) (layer F.Fab) 29 | (effects (font (size 1 1) (thickness 0.15))) 30 | ) 31 | (pad 1 smd rect (at -2.9 -2) (size 2.8 1) (layers F.Cu F.Paste F.Mask)) 32 | (pad 1 smd rect (at 2.9 -2) (size 2.8 1) (layers F.Cu F.Paste F.Mask)) 33 | (pad 2 smd rect (at -2.9 2) (size 2.8 1) (layers F.Cu F.Paste F.Mask)) 34 | (pad 2 smd rect (at 2.9 2) (size 2.8 1) (layers F.Cu F.Paste F.Mask)) 35 | (model ${KISYS3DMOD}/Button_Switch_SMD.3dshapes/SW_push_1P1T_NO_CK_KSC7xxJxxx.wrl 36 | (at (xyz 0 0 0)) 37 | (scale (xyz 1 1 1)) 38 | (rotate (xyz 0 0 0)) 39 | ) 40 | (model ${KIPRJMOD}/NumBLE.pretty/3d/KSC701JLFS.stp 41 | (offset (xyz 0 0 2)) 42 | (scale (xyz 1 1 1)) 43 | (rotate (xyz -90 0 0)) 44 | ) 45 | ) 46 | -------------------------------------------------------------------------------- /pcb/NumBLE.pretty/Tag-Connect_TC2050-IDC-NL_2x05_P1.27mm_Vertical.kicad_mod: -------------------------------------------------------------------------------- 1 | (footprint "Tag-Connect_TC2050-IDC-NL_2x05_P1.27mm_Vertical" (version 20201116) (generator pcbnew) (layer "F.Cu") 2 | (tedit 5FBA0F04) 3 | (descr "Tag-Connect programming header; http://www.tag-connect.com/Materials/TC2050-IDC-NL%20Datasheet.pdf") 4 | (tags "tag connect programming header pogo pins") 5 | (attr exclude_from_pos_files exclude_from_bom) 6 | (fp_text reference "REF**" (at 0 2.9) (layer "F.SilkS") 7 | (effects (font (size 1 1) (thickness 0.15))) 8 | (tstamp 4dd92fc2-d6b7-4b00-a595-8e4b9ebf8524) 9 | ) 10 | (fp_text value "Tag-Connect_TC2050-IDC-NL_2x05_P1.27mm_Vertical" (at 0 4.05) (layer "F.Fab") 11 | (effects (font (size 1 1) (thickness 0.15))) 12 | (tstamp c34baca1-112a-4507-a55a-1287e8861974) 13 | ) 14 | (fp_text user "6.35mm Z-KEEPOUT" (at 1 -2.75) (layer "Cmts.User") 15 | (effects (font (size 0.5 0.5) (thickness 0.125))) 16 | (tstamp 6f7e226e-7877-405b-94ed-6fe3150e2863) 17 | ) 18 | (fp_text user "KEEPOUT" (at 0 0) (layer "Cmts.User") 19 | (effects (font (size 0.4 0.4) (thickness 0.07))) 20 | (tstamp 7029ad9d-2040-4862-9a8f-bd4679f1a8a3) 21 | ) 22 | (fp_text user "6.35mm Z-KEEPOUT" (at 1 2.75) (layer "Cmts.User") 23 | (effects (font (size 0.5 0.5) (thickness 0.125))) 24 | (tstamp f678c4f9-fd8a-422e-9054-6e84169781a2) 25 | ) 26 | (fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab") 27 | (effects (font (size 1 1) (thickness 0.15))) 28 | (tstamp e3b301ee-433c-41d6-8297-193d2aea3dd7) 29 | ) 30 | (fp_line (start 4.48 2.05) (end -3.1 2.05) (layer "F.SilkS") (width 0.12) (tstamp 0e730cf7-bde2-4b78-b6a9-14522ac3dddc)) 31 | (fp_line (start -3.1 -2.05) (end 4.48 -2.05) (layer "F.SilkS") (width 0.12) (tstamp 3e00d13d-821e-4fd7-acde-8d59371f8d86)) 32 | (fp_line (start 4.48 -2.05) (end 5.08 -1.45) (layer "F.SilkS") (width 0.12) (tstamp 4b5d21fe-48c8-483f-a20e-dccd3810dc6b)) 33 | (fp_line (start 5.08 -1.45) (end 5.08 1.45) (layer "F.SilkS") (width 0.12) (tstamp 89a92a3c-cdf8-4731-8200-714b7fae52c0)) 34 | (fp_line (start 4.48 2.05) (end 5.08 1.45) (layer "F.SilkS") (width 0.12) (tstamp 8c30caf4-489c-40a9-a498-7d0e6855cbb1)) 35 | (fp_line (start -2.54 1.27) (end -3.175 1.27) (layer "F.SilkS") (width 0.12) (tstamp 9923ec68-d983-4231-91a8-3d5280364a80)) 36 | (fp_line (start -3.175 1.27) (end -3.175 0.635) (layer "F.SilkS") (width 0.12) (tstamp a4e621f9-5954-4ed1-ba6e-1f66a7a17c9b)) 37 | (fp_line (start -5.08 -0.65) (end -3.1 -2.05) (layer "F.SilkS") (width 0.12) (tstamp c47146ab-0877-46b7-92ec-bc56297296a4)) 38 | (fp_line (start -5.08 0.65) (end -5.08 -0.65) (layer "F.SilkS") (width 0.12) (tstamp d351fb99-32b9-48ab-8ba5-c539331c4b10)) 39 | (fp_line (start -3.1 2.05) (end -5.08 0.65) (layer "F.SilkS") (width 0.12) (tstamp e26af0b7-01b0-4bf6-a2e9-67248f678f9e)) 40 | (fp_line (start 3.15 -3.35) (end 4.4 -2.1) (layer "Dwgs.User") (width 0.1) (tstamp 061aad97-2cc7-421c-8e6d-bceff9734476)) 41 | (fp_line (start 4.55 -3.35) (end 6.2 -1.7) (layer "Dwgs.User") (width 0.1) (tstamp 091e0f69-ea77-418e-ab21-4831cf99de7d)) 42 | (fp_line (start 5.1 1.45) (end 6.2 2.55) (layer "Dwgs.User") (width 0.1) (tstamp 0cdda803-8975-45a0-928a-f0ad76dc14a4)) 43 | (fp_line (start -0.635 0.635) (end 0.635 -0.635) (layer "Dwgs.User") (width 0.1) (tstamp 14259253-8d9c-4639-9b2f-113fb6827070)) 44 | (fp_line (start 5.453 3.37) (end -3.45 3.37) (layer "Dwgs.User") (width 0.1) (tstamp 1a5e3005-ab1a-43ab-abd2-84d34b9e7aab)) 45 | (fp_line (start 2.54 -0.635) (end 2.54 0.635) (layer "Dwgs.User") (width 0.1) (tstamp 1c94f7de-85d0-41ce-a926-b98e31f184cb)) 46 | (fp_line (start -0.5 -3.35) (end 0.8 -2.05) (layer "Dwgs.User") (width 0.1) (tstamp 1e9a1ee1-4f07-4887-8b75-8d8fc6e9d511)) 47 | (fp_line (start -5.08 -0.65) (end -3.1 -2.05) (layer "Dwgs.User") (width 0.1) (tstamp 20dc1b91-28bd-4456-87a0-1d4922f621c4)) 48 | (fp_line (start -6.223 1.4) (end -6.223 -1.4) (layer "Dwgs.User") (width 0.1) (tstamp 24812acb-b22a-4c00-9b72-dabd9fba4370)) 49 | (fp_line (start -6.223 -1.4) (end -3.45 -3.37) (layer "Dwgs.User") (width 0.1) (tstamp 2a47ee8e-3d37-46ea-affb-b8f1dd1508d2)) 50 | (fp_line (start 4.48 -2.05) (end 5.08 -1.45) (layer "Dwgs.User") (width 0.1) (tstamp 2a9fc0bc-2c5b-4de8-b7f8-94f836ae592d)) 51 | (fp_line (start 1.4 -3.35) (end 2.7 -2.05) (layer "Dwgs.User") (width 0.1) (tstamp 2aca1d6e-f294-478b-9270-5706dd69a6b3)) 52 | (fp_line (start -0.35 2.1) (end 0.9 3.35) (layer "Dwgs.User") (width 0.1) (tstamp 310dc593-f98f-4f12-9c5a-95e771f9afc9)) 53 | (fp_line (start -4.6 -2.5) (end -3.75 -1.65) (layer "Dwgs.User") (width 0.1) (tstamp 33eb684e-70d0-4714-bddf-b4fc24f0abf2)) 54 | (fp_line (start -1.27 0.635) (end 0 -0.635) (layer "Dwgs.User") (width 0.1) (tstamp 35f94048-801d-4492-bec3-3a9c5155a97a)) 55 | (fp_line (start -6.2 0.6) (end -3.45 3.35) (layer "Dwgs.User") (width 0.1) (tstamp 3713dc1e-50e2-49c6-b0f9-38a618e4388a)) 56 | (fp_line (start 4.48 2.05) (end 5.08 1.45) (layer "Dwgs.User") (width 0.1) (tstamp 38e84b77-6fcd-4421-85c1-1a77b8760e42)) 57 | (fp_line (start 5.08 -1.45) (end 6.2 -0.33) (layer "Dwgs.User") (width 0.1) (tstamp 3a29abde-71ae-4f5c-8aec-e374752834e6)) 58 | (fp_line (start 5.453 -3.37) (end 6.223 -2.6) (layer "Dwgs.User") (width 0.1) (tstamp 3bfb22f5-4c8f-4438-8c68-16c474b039e3)) 59 | (fp_line (start 5.453 3.37) (end 6.223 2.6) (layer "Dwgs.User") (width 0.1) (tstamp 3f7704b6-add6-4d2d-bef6-8147b5ecb088)) 60 | (fp_line (start 5.08 -1.45) (end 5.08 1.45) (layer "Dwgs.User") (width 0.1) (tstamp 40d66247-4fc1-444e-bfc7-b4de985bfd97)) 61 | (fp_line (start -3.1 -2.05) (end 4.48 -2.05) (layer "Dwgs.User") (width 0.1) (tstamp 486ee802-2017-4b09-8298-fa12dac23793)) 62 | (fp_line (start -2.54 0.635) (end -2.54 -0.635) (layer "Dwgs.User") (width 0.1) (tstamp 4e4ffec9-67b3-488e-9280-8b20a3fc5441)) 63 | (fp_line (start 0.635 0.635) (end 1.905 -0.635) (layer "Dwgs.User") (width 0.1) (tstamp 4f969b06-429b-435a-bea7-21713d1f3538)) 64 | (fp_line (start 6.223 -2.6) (end 6.223 2.6) (layer "Dwgs.User") (width 0.1) (tstamp 5b448d72-002c-423e-afa9-9e929e040549)) 65 | (fp_line (start -6.2 -0.25) (end -2.6 3.35) (layer "Dwgs.User") (width 0.1) (tstamp 5b7975fc-873b-4daf-b9d9-cb362237eff0)) 66 | (fp_line (start 4.2 2.1) (end 5.45 3.35) (layer "Dwgs.User") (width 0.1) (tstamp 64d625a9-5017-476a-913b-0bbb70318f78)) 67 | (fp_line (start -1.905 0.635) (end -0.635 -0.635) (layer "Dwgs.User") (width 0.1) (tstamp 6c5fbce1-38da-4029-8aa0-4aab9a03f87c)) 68 | (fp_line (start -2.54 0) (end -1.905 -0.635) (layer "Dwgs.User") (width 0.1) (tstamp 76b1ebbd-3c0a-4d90-8100-8911b5d7ad02)) 69 | (fp_line (start -2.1 2.05) (end -0.8 3.35) (layer "Dwgs.User") (width 0.1) (tstamp 7b2409f8-13d2-4d7a-aec0-e71854015e65)) 70 | (fp_line (start 2.7 2.05) (end 4 3.35) (layer "Dwgs.User") (width 0.1) (tstamp 7fbf5efa-5a46-40cb-bcce-0c4bbe0087b1)) 71 | (fp_line (start -2.54 -0.635) (end 2.54 -0.635) (layer "Dwgs.User") (width 0.1) (tstamp 88382c66-f6b7-439f-8899-56b82a5a52d7)) 72 | (fp_line (start 1.27 0.635) (end 2.54 -0.635) (layer "Dwgs.User") (width 0.1) (tstamp 8bfa2945-8049-4416-ab18-ae16fd4ad983)) 73 | (fp_line (start -3.45 -3.37) (end 5.453 -3.37) (layer "Dwgs.User") (width 0.1) (tstamp 94f8277e-2acd-4a2e-b4a9-a647122d5034)) 74 | (fp_line (start 2.54 0.635) (end -2.54 0.635) (layer "Dwgs.User") (width 0.1) (tstamp 96b72d1c-51a0-47b7-b035-3616842f49c6)) 75 | (fp_line (start 0 0.635) (end 1.27 -0.635) (layer "Dwgs.User") (width 0.1) (tstamp 9840dc64-36a2-435f-89e8-9a3845b51d34)) 76 | (fp_line (start -5.08 0.65) (end -5.08 -0.65) (layer "Dwgs.User") (width 0.1) (tstamp 9a76e9cf-ec36-4a7a-8b1f-db0e31ac7ae5)) 77 | (fp_line (start 1.15 2.05) (end 2.45 3.35) (layer "Dwgs.User") (width 0.1) (tstamp a3866620-5342-4bd9-a9b8-34a5e464d615)) 78 | (fp_line (start 1.905 0.635) (end 2.54 0) (layer "Dwgs.User") (width 0.1) (tstamp ad02a045-156a-4a5c-ab76-a93bdcaa2b0c)) 79 | (fp_line (start 4.48 2.05) (end -3.1 2.05) (layer "Dwgs.User") (width 0.1) (tstamp b618c0a2-ee76-40b0-9808-dc848eb1b040)) 80 | (fp_line (start 5.1 0.05) (end 6.2 1.15) (layer "Dwgs.User") (width 0.1) (tstamp babc3b50-5ba6-4133-8565-0f15db1a87a7)) 81 | (fp_line (start -6.223 1.4) (end -3.45 3.37) (layer "Dwgs.User") (width 0.1) (tstamp c0e44f98-d59b-4a6d-b47f-40ef0a310e3b)) 82 | (fp_line (start -3.1 2.05) (end -5.08 0.65) (layer "Dwgs.User") (width 0.1) (tstamp cb9c2b52-55c2-4c9e-a442-ceaf2de8c697)) 83 | (fp_line (start 4.4 -2.1) (end 4.45 -2.05) (layer "Dwgs.User") (width 0.1) (tstamp d3996bbd-c945-4b49-92b1-d031908d6667)) 84 | (fp_line (start -5.4 -1.9) (end -4.55 -1.05) (layer "Dwgs.User") (width 0.1) (tstamp d794824a-4023-4bcd-a103-c29d0533bcb3)) 85 | (fp_line (start -2.15 -3.35) (end -0.85 -2.05) (layer "Dwgs.User") (width 0.1) (tstamp dc6608da-86dd-4bdc-b402-b45a61038548)) 86 | (fp_line (start -3.75 -3.15) (end -2.65 -2.05) (layer "Dwgs.User") (width 0.1) (tstamp e181b9ba-9659-4a08-b037-b847e56f257c)) 87 | (fp_line (start -6.223 -1.4) (end -5.1 -0.277) (layer "Dwgs.User") (width 0.1) (tstamp e1d040ed-b99a-4017-bf5b-e7bd7f366148)) 88 | (fp_line (start -2.54 0.635) (end -1.27 -0.635) (layer "Dwgs.User") (width 0.1) (tstamp ecb8c64e-12aa-470e-905b-ec5915ce3149)) 89 | (fp_line (start 5.33 -1.6) (end 5.33 1.6) (layer "F.CrtYd") (width 0.05) (tstamp 0a2e0022-218e-40df-b757-47d34b9d0696)) 90 | (fp_line (start 4.63 2.3) (end -3.19 2.3) (layer "F.CrtYd") (width 0.05) (tstamp 10c244c9-6db3-486a-bf9a-905c498f4217)) 91 | (fp_line (start 4.63 2.3) (end 5.33 1.6) (layer "F.CrtYd") (width 0.05) (tstamp 3297e286-b2ac-41d3-82ba-30e691adcbd8)) 92 | (fp_line (start -5.33 0.77) (end -5.33 -0.77) (layer "F.CrtYd") (width 0.05) (tstamp 3468a792-a81b-40e0-9099-b2abdeca148d)) 93 | (fp_line (start 4.63 -2.3) (end 5.33 -1.6) (layer "F.CrtYd") (width 0.05) (tstamp 34ce5297-a5c6-472c-a5a9-84b85420ccff)) 94 | (fp_line (start -3.19 -2.3) (end 4.63 -2.3) (layer "F.CrtYd") (width 0.05) (tstamp 3b0cedfd-97c9-4f7e-9c6b-ab59c6538eb0)) 95 | (fp_line (start -3.19 2.3) (end -5.33 0.77) (layer "F.CrtYd") (width 0.05) (tstamp c3b53ddc-1788-4057-a4bd-3eafc71a000b)) 96 | (fp_line (start -5.33 -0.77) (end -3.19 -2.3) (layer "F.CrtYd") (width 0.05) (tstamp f6b3a660-6bf2-4ac1-b82c-e54c151d54c7)) 97 | (pad "" np_thru_hole circle (at 3.81 1.016) (size 0.9906 0.9906) (drill 0.9906) (layers *.Cu *.Mask) (tstamp 3bf893a1-a646-4c0c-ae34-72dd0c1bed2d)) 98 | (pad "" np_thru_hole circle (at 3.81 -1.016) (size 0.9906 0.9906) (drill 0.9906) (layers *.Cu *.Mask) (tstamp 8bb8fd30-795b-436b-8066-056b8bed8c25)) 99 | (pad "" np_thru_hole circle (at -3.81 0) (size 0.9906 0.9906) (drill 0.9906) (layers *.Cu *.Mask) (tstamp df2ed565-e8fd-47d6-b0a5-6534cef67b60)) 100 | (pad "1" connect circle (at -2.54 0.635) (size 0.7874 0.7874) (layers "F.Cu" "F.Mask") (tstamp 3fed4792-8bab-40d7-9e24-b6a219882a59)) 101 | (pad "2" connect circle (at -2.54 -0.635) (size 0.7874 0.7874) (layers "F.Cu" "F.Mask") (tstamp 615618a0-5e72-45c9-a399-083254d6c364)) 102 | (pad "3" connect circle (at -1.27 0.635) (size 0.7874 0.7874) (layers "F.Cu" "F.Mask") (tstamp 3702aab9-b1b7-4294-a04a-8cd59bfef764)) 103 | (pad "4" connect circle (at -1.27 -0.635) (size 0.7874 0.7874) (layers "F.Cu" "F.Mask") (tstamp 2e508821-8096-48eb-9b92-6db3f1ffdf64)) 104 | (pad "5" connect circle (at 0 0.635) (size 0.7874 0.7874) (layers "F.Cu" "F.Mask") (tstamp da2a076a-63ee-433e-868f-38d090b3d5a6)) 105 | (pad "6" connect circle (at 0 -0.635) (size 0.7874 0.7874) (layers "F.Cu" "F.Mask") (tstamp b1915018-5faf-4918-accd-1cedbd8f83ff)) 106 | (pad "7" connect circle (at 1.27 0.635) (size 0.7874 0.7874) (layers "F.Cu" "F.Mask") (tstamp 4117eabb-bee3-4c06-aa28-57d27b3004b9)) 107 | (pad "8" connect circle (at 1.27 -0.635) (size 0.7874 0.7874) (layers "F.Cu" "F.Mask") (tstamp c5c2552b-1b8f-4a26-8f30-50c6518c3dd9)) 108 | (pad "9" connect circle (at 2.54 0.635) (size 0.7874 0.7874) (layers "F.Cu" "F.Mask") (tstamp 4f857643-d381-4738-98ae-b09afa5c6785)) 109 | (pad "10" connect circle (at 2.54 -0.635) (size 0.7874 0.7874) (layers "F.Cu" "F.Mask") (tstamp 7b635935-488a-4817-9a3e-f38574cc0be2)) 110 | ) 111 | -------------------------------------------------------------------------------- /pcb/NumBLE.pretty/USB_C_Receptacle_HRO_TYPE-C-31-M-12.kicad_mod: -------------------------------------------------------------------------------- 1 | (module USB_C_Receptacle_HRO_TYPE-C-31-M-12 (layer F.Cu) (tedit 5F9DA2DD) 2 | (descr "USB Type-C receptacle for USB 2.0 and PD, http://www.krhro.com/uploads/soft/180320/1-1P320120243.pdf") 3 | (tags "usb usb-c 2.0 pd") 4 | (attr smd) 5 | (fp_text reference J1 (at 0 -5.645 180) (layer F.SilkS) 6 | (effects (font (size 1 1) (thickness 0.15))) 7 | ) 8 | (fp_text value USB_C_Receptacle_USB2.0 (at 0 5.1 180) (layer F.Fab) 9 | (effects (font (size 1 1) (thickness 0.15))) 10 | ) 11 | (fp_text user %R (at 0 0 180) (layer F.Fab) 12 | (effects (font (size 1 1) (thickness 0.15))) 13 | ) 14 | (fp_line (start -4.7 2) (end -4.7 3.9) (layer F.SilkS) (width 0.12)) 15 | (fp_line (start -4.7 -1.9) (end -4.7 0.1) (layer F.SilkS) (width 0.12)) 16 | (fp_line (start 4.7 2) (end 4.7 3.9) (layer F.SilkS) (width 0.12)) 17 | (fp_line (start 4.7 -1.9) (end 4.7 0.1) (layer F.SilkS) (width 0.12)) 18 | (fp_line (start 5.32 -5.27) (end 5.32 4.15) (layer F.CrtYd) (width 0.05)) 19 | (fp_line (start -5.32 -5.27) (end -5.32 4.15) (layer F.CrtYd) (width 0.05)) 20 | (fp_line (start -5.32 4.15) (end 5.32 4.15) (layer F.CrtYd) (width 0.05)) 21 | (fp_line (start -5.32 -5.27) (end 5.32 -5.27) (layer F.CrtYd) (width 0.05)) 22 | (fp_line (start 4.47 -3.65) (end 4.47 3.65) (layer F.Fab) (width 0.1)) 23 | (fp_line (start -4.47 3.65) (end 4.47 3.65) (layer F.Fab) (width 0.1)) 24 | (fp_line (start -4.47 -3.65) (end -4.47 3.65) (layer F.Fab) (width 0.1)) 25 | (fp_line (start -4.47 -3.65) (end 4.47 -3.65) (layer F.Fab) (width 0.1)) 26 | (fp_line (start -4.7 3.9) (end 4.7 3.9) (layer F.SilkS) (width 0.12)) 27 | (pad B1 smd rect (at 3.25 -4.045) (size 0.6 1.45) (layers F.Cu F.Paste F.Mask)) 28 | (pad A9 smd rect (at 2.45 -4.045) (size 0.6 1.45) (layers F.Cu F.Paste F.Mask)) 29 | (pad B9 smd rect (at -2.45 -4.045) (size 0.6 1.45) (layers F.Cu F.Paste F.Mask)) 30 | (pad B12 smd rect (at -3.25 -4.045) (size 0.6 1.45) (layers F.Cu F.Paste F.Mask)) 31 | (pad A1 smd rect (at -3.25 -4.045) (size 0.6 1.45) (layers F.Cu F.Paste F.Mask)) 32 | (pad A4 smd rect (at -2.45 -4.045) (size 0.6 1.45) (layers F.Cu F.Paste F.Mask)) 33 | (pad B4 smd rect (at 2.45 -4.045) (size 0.6 1.45) (layers F.Cu F.Paste F.Mask)) 34 | (pad A12 smd rect (at 3.25 -4.045) (size 0.6 1.45) (layers F.Cu F.Paste F.Mask)) 35 | (pad B8 smd rect (at -1.75 -4.045) (size 0.3 1.45) (layers F.Cu F.Paste F.Mask)) 36 | (pad A5 smd rect (at -1.25 -4.045) (size 0.3 1.45) (layers F.Cu F.Paste F.Mask)) 37 | (pad B7 smd rect (at -0.75 -4.045) (size 0.3 1.45) (layers F.Cu F.Paste F.Mask)) 38 | (pad A7 smd rect (at 0.25 -4.045) (size 0.3 1.45) (layers F.Cu F.Paste F.Mask)) 39 | (pad B6 smd rect (at 0.75 -4.045) (size 0.3 1.45) (layers F.Cu F.Paste F.Mask)) 40 | (pad A8 smd rect (at 1.25 -4.045) (size 0.3 1.45) (layers F.Cu F.Paste F.Mask)) 41 | (pad B5 smd rect (at 1.75 -4.045) (size 0.3 1.45) (layers F.Cu F.Paste F.Mask)) 42 | (pad A6 smd rect (at -0.25 -4.045) (size 0.3 1.45) (layers F.Cu F.Paste F.Mask)) 43 | (pad S1 thru_hole oval (at 4.32 -3.13) (size 1 2.1) (drill oval 0.6 1.7) (layers *.Cu *.Mask)) 44 | (pad S1 thru_hole oval (at -4.32 -3.13) (size 1 2.1) (drill oval 0.6 1.7) (layers *.Cu *.Mask)) 45 | (pad "" np_thru_hole circle (at -2.89 -2.6) (size 0.65 0.65) (drill 0.65) (layers *.Cu *.Mask)) 46 | (pad S1 thru_hole oval (at -4.32 1.05) (size 1 1.6) (drill oval 0.6 1.2) (layers *.Cu *.Mask)) 47 | (pad "" np_thru_hole circle (at 2.89 -2.6) (size 0.65 0.65) (drill 0.65) (layers *.Cu *.Mask)) 48 | (pad S1 thru_hole oval (at 4.32 1.05) (size 1 1.6) (drill oval 0.6 1.2) (layers *.Cu *.Mask)) 49 | (model ${KISYS3DMOD}/Connector_USB.3dshapes/USB_C_Receptacle_HRO_TYPE-C-31-M-12.wrl 50 | (at (xyz 0 0 0)) 51 | (scale (xyz 1 1 1)) 52 | (rotate (xyz 0 0 0)) 53 | ) 54 | (model ${KIPRJMOD}/NumBLE.pretty/3d/HRO_TYPE-C-31-M-12.step 55 | (offset (xyz -4.47 -3.65 0)) 56 | (scale (xyz 1 1 1)) 57 | (rotate (xyz 0 0 0)) 58 | ) 59 | ) 60 | -------------------------------------------------------------------------------- /pcb/fp-lib-table: -------------------------------------------------------------------------------- 1 | (fp_lib_table 2 | (lib (name "MX_Only")(type "KiCad")(uri "${KIPRJMOD}/MX_Alps_Hybrid/MX_Only.pretty")(options "")(descr "")) 3 | (lib (name "numpad")(type "KiCad")(uri "${KIPRJMOD}/NumBLE.pretty")(options "")(descr "")) 4 | (lib (name "Type-C")(type "KiCad")(uri "${KIPRJMOD}/Type-C.pretty")(options "")(descr "")) 5 | ) 6 | -------------------------------------------------------------------------------- /pcb/sym-lib-table: -------------------------------------------------------------------------------- 1 | (sym_lib_table 2 | (lib (name "MX_Alps_Hybrid")(type "Legacy")(uri "${KIPRJMOD}/MX_Alps_Hybrid/Schematic Library/MX_Alps_Hybrid.lib")(options "")(descr "")) 3 | (lib (name "Type-C")(type "Legacy")(uri "${KIPRJMOD}/Type-C.pretty/Type-C.lib")(options "")(descr "")) 4 | (lib (name "numpad")(type "KiCad")(uri "${KIPRJMOD}/NumBLE.kicad_sym")(options "")(descr "")) 5 | ) 6 | -------------------------------------------------------------------------------- /zephyr/module.yml: -------------------------------------------------------------------------------- 1 | build: 2 | settings: 3 | board_root: . 4 | --------------------------------------------------------------------------------