mirror of
https://github.com/System-End/hackpad.git
synced 2026-04-20 00:35:24 +00:00
commit
85d0f9fad2
23 changed files with 157176 additions and 0 deletions
15
.gitmodules
vendored
15
.gitmodules
vendored
|
|
@ -12,6 +12,21 @@
|
|||
path = hackpads/Ambrylight/firmware
|
||||
url = https://github.com/pmnlla/zmk-board-cfg
|
||||
branch = ambrylight
|
||||
[submodule "hackpads/bongopad/pcb/KiCad-SSD1306-128x64"]
|
||||
path = hackpads/bongopad/pcb/KiCad-SSD1306-128x64
|
||||
url = https://github.com/pforrmi/KiCad-SSD1306-128x64
|
||||
[submodule "hackpads/dawpad/pcb/libraries/MX_V2"]
|
||||
path = hackpads/dawpad/pcb/libraries/MX_V2
|
||||
url = https://github.com/ai03-2725/MX_V2
|
||||
[submodule "hackpads/dawpad/pcb/libraries/OPL_Kicad_Library"]
|
||||
path = hackpads/dawpad/pcb/libraries/OPL_Kicad_Library
|
||||
url = https://github.com/Seeed-Studio/OPL_Kicad_Library.git
|
||||
[submodule "hackpads/tabbyhack_k4/pcb/libraries/MX_V2"]
|
||||
path = hackpads/tabbyhack_k4/pcb/libraries/MX_V2
|
||||
url = https://github.com/ai03-2725/MX_V2
|
||||
[submodule "hackpads/tabbyhack_k4/pcb/libraries/OPL_Kicad_Library"]
|
||||
path = hackpads/tabbyhack_k4/pcb/libraries/OPL_Kicad_Library
|
||||
url = https://github.com/Seeed-Studio/OPL_Kicad_Library
|
||||
[submodule "hackpads/n16-remote"]
|
||||
path = hackpads/n16-remote
|
||||
url = https://github.com/DJ-Laser/n16-remot
|
||||
|
|
|
|||
2
hackpads/dawpad/.gitignore
vendored
Normal file
2
hackpads/dawpad/.gitignore
vendored
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
StenoPad-backups
|
||||
*.lck
|
||||
36
hackpads/dawpad/README.md
Normal file
36
hackpads/dawpad/README.md
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
# DawPad
|
||||
|
||||

|
||||
|
||||
This is a small MIDI controller designed to make it a bit easier to control a DAW. It won't really do anything on its own, but with a good input map it will be a nice extenison of the DAW interface (I can see it being used as a controller for a few audio channels - the knobs could be used for gains, and the buttons could be channel parameters like mute, as well as a couple other things like playback controls).
|
||||
|
||||
## PCB
|
||||
|
||||
I'm pretty happy with how the PCB turned out for this. This is the first PCB that I'm actually getting made, and it's also the most complicated one that I've designed by far. I tried to keep things pretty neat, and I managed to keep everything reasonably compact while still keeping pretty much everything I could through-hole, which I'm much more comfortable with soldering.
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
## Firmware
|
||||
|
||||
The firmware for the DawPad is built in Arduino, using the [Control-Surface](https://tttapa.github.io/Control-Surface/Doxygen/index.html) library for MIDI functionality. At the moment, it likely doesn't really work at all, but a lot of the (likely) broken stuff is related to the I/O expander, which I can't really debug without the actual hardware. Some more detailed information about building this can be found in the firmware README.
|
||||
|
||||
## Case
|
||||
|
||||
The case for the DawPad is designed in Onshape (you can find a link to the document in the CAD README). I don't really know what I'm doing when it comes to CAD, so it's definitely a bit messy, but it should work. The case is designed to be 3D printed, and is bolted together with a couple M3 screws.
|
||||
|
||||

|
||||
|
||||
## BOM
|
||||
|
||||
Here's the components needed to make this.
|
||||
|
||||
* 1x XIAO RP2040
|
||||
* 1x MCP23017
|
||||
* 12x 1N4148 DO-35 Diodes
|
||||
* 2x 4.7k THT Resistor
|
||||
* 12x Cherry MX switches
|
||||
* 4x EC11 Rotary Encoder (preferably one without detents and with a reasonably high resolution)
|
||||
* 4x SK6812 MINI (regular mount)
|
||||
* 12x SK6812 MINI-E (reverse mount)
|
||||
3
hackpads/dawpad/cad/README.md
Normal file
3
hackpads/dawpad/cad/README.md
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
# DawPad CAD
|
||||
|
||||
I designed the case for the DawPad in Onshape, which you can find [here](https://cad.onshape.com/documents/c7175c5f1a4ca0cb72624a5c/w/6e2b9db7ac4b4769267f0874/e/2397240a351e4ca483ae7554?renderMode=0&uiState=67bdc28b9c552b495ee51c69).
|
||||
10831
hackpads/dawpad/cad/components/pcb.step
Normal file
10831
hackpads/dawpad/cad/components/pcb.step
Normal file
File diff suppressed because it is too large
Load diff
8
hackpads/dawpad/firmware/Control-Surface/.editorconfig
Normal file
8
hackpads/dawpad/firmware/Control-Surface/.editorconfig
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
# EditorConfig is awesome: https://EditorConfig.org
|
||||
|
||||
# top-most EditorConfig file
|
||||
root = true
|
||||
|
||||
[*.ino]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
140
hackpads/dawpad/firmware/Control-Surface/Control-Surface.ino
Normal file
140
hackpads/dawpad/firmware/Control-Surface/Control-Surface.ino
Normal file
|
|
@ -0,0 +1,140 @@
|
|||
#include <Control_Surface.h>
|
||||
#include <AH/Arduino-Wrapper.h>
|
||||
#include <AH/Hardware/ExtendedInputOutput/ExtendedInputOutput.hpp>
|
||||
#include <AH/Hardware/RegisterEncoders.hpp>
|
||||
#include <Adafruit_MCP23X17.h>
|
||||
#include <Adafruit_NeoPixel.h>
|
||||
|
||||
// MCP configuration
|
||||
const int MCP_PIN_INTA = 7;
|
||||
const int MCP_PIN_INTB = 7;
|
||||
|
||||
// Encoder pins [A, B]
|
||||
const int ENCODER_COUNT = 4;
|
||||
const int ENCODER_PINS[ENCODER_COUNT][2] = {
|
||||
{0, 1},
|
||||
{2, 3},
|
||||
{4, 5},
|
||||
{6, 7},
|
||||
};
|
||||
|
||||
// Key matrix
|
||||
const int MATRIX_ROW_COUNT = 3;
|
||||
const int MATRIX_COL_COUNT = 4;
|
||||
const int MATRIX_ROWS[MATRIX_ROW_COUNT] = {
|
||||
8,
|
||||
9,
|
||||
10,
|
||||
};
|
||||
const int MATRIX_COLS[MATRIX_COL_COUNT] = {
|
||||
11,
|
||||
12,
|
||||
13,
|
||||
14,
|
||||
};
|
||||
const MIDIAddress BUTTON_ADDRESSES[3][4] {
|
||||
{
|
||||
{MIDI_Notes::A[0], Channel_1},
|
||||
{MIDI_Notes::B[0], Channel_1},
|
||||
{MIDI_Notes::C[0], Channel_1},
|
||||
{MIDI_Notes::D[0], Channel_1},
|
||||
},
|
||||
{
|
||||
{MIDI_Notes::E[0], Channel_1},
|
||||
{MIDI_Notes::F[0], Channel_1},
|
||||
{MIDI_Notes::G[0], Channel_1},
|
||||
{MIDI_Notes::A[1], Channel_1},
|
||||
},
|
||||
{
|
||||
{MIDI_Notes::B[1], Channel_1},
|
||||
{MIDI_Notes::C[1], Channel_1},
|
||||
{MIDI_Notes::D[1], Channel_1},
|
||||
{MIDI_Notes::E[1], Channel_1},
|
||||
},
|
||||
};
|
||||
|
||||
// Encoder switch pins
|
||||
const int ENCODER_SW_PINS[4] = {
|
||||
0,
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
};
|
||||
|
||||
// LED configuration
|
||||
const int LED_COUNT = 16;
|
||||
const int LED_PIN = 6;
|
||||
|
||||
//////////
|
||||
|
||||
// MIDI interface
|
||||
USBMIDI_Interface midi;
|
||||
|
||||
// Hardware objects
|
||||
Adafruit_MCP23X17 mcp;
|
||||
Adafruit_NeoPixel pixels(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);
|
||||
|
||||
// Encoders
|
||||
using RegisterEncoderType = RegisterEncoders<uint16_t, 4, int32_t, false>;
|
||||
|
||||
RegisterEncoderType encs;
|
||||
|
||||
void setup() {
|
||||
// Set up LEDs
|
||||
pixels.begin();
|
||||
|
||||
// Set up the MCP
|
||||
if (!mcp.begin_I2C()) {
|
||||
// If I2C setup failed, flash the first knob red forever.
|
||||
while (true) {
|
||||
pixels.setPixelColor(0, pixels.Color(255, 0, 0));
|
||||
pixels.show();
|
||||
delay(1000);
|
||||
|
||||
pixels.setPixelColor(0, pixels.Color(0, 0, 0));
|
||||
pixels.show();
|
||||
delay(1000);
|
||||
}
|
||||
}
|
||||
|
||||
mcp.setupInterrupts(false, false, LOW);
|
||||
|
||||
// Set up the MCP interrupt pins
|
||||
pinMode(MCP_PIN_INTA, INPUT);
|
||||
pinMode(MCP_PIN_INTB, INPUT);
|
||||
|
||||
// Set up the encoder pins
|
||||
for (int encoderIndex = 0; encoderIndex < ENCODER_COUNT; encoderIndex++) {
|
||||
for (int pinIndex = 0; pinIndex <= 1; pinIndex++) {
|
||||
int pin = ENCODER_PINS[encoderIndex][pinIndex];
|
||||
mcp.pinMode(pin, INPUT_PULLUP);
|
||||
mcp.setupInterruptPin(pin, CHANGE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void loop() {
|
||||
// Read from encoders
|
||||
if (!digitalRead(MCP_PIN_INTA)) {
|
||||
encs.update(mcp.getCapturedInterrupt());
|
||||
delay(100); // Debounce
|
||||
mcp.clearInterrupts();
|
||||
}
|
||||
|
||||
for (uint8_t row = 0; row < MATRIX_ROW_COUNT; row++) {
|
||||
mcp.digitalWrite(MATRIX_ROWS[row], HIGH);
|
||||
|
||||
if (!digitalRead(MCP_PIN_INTB)) {
|
||||
uint16_t pins = mcp.getCapturedInterrupt();
|
||||
|
||||
for (uint8_t col = 0; col < MATRIX_COL_COUNT; col++) {
|
||||
if (pins & (1 << MATRIX_COLS[col])) {
|
||||
midi.sendNoteOn(BUTTON_ADDRESSES[row][col], 0x7F);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
mcp.digitalWrite(row, LOW);
|
||||
mcp.clearInterrupts();
|
||||
}
|
||||
}
|
||||
9
hackpads/dawpad/firmware/README.md
Normal file
9
hackpads/dawpad/firmware/README.md
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
# DawPad Firmware
|
||||
|
||||
The firmware for the DawPad is built in Arduino, using the [Control-Surface](https://tttapa.github.io/Control-Surface/Doxygen/index.html) library for MIDI functionality.
|
||||
|
||||
Dependencies
|
||||
|
||||
* [Control-Surface](https://tttapa.github.io/Control-Surface/Doxygen/index.html)
|
||||
* [Adafruit Neopixel](https://github.com/adafruit/Adafruit_NeoPixel)
|
||||
* [Adafruit MCP23017](https://github.com/adafruit/Adafruit-MCP23017-Arduino-Library)
|
||||
23611
hackpads/dawpad/pcb/DawPad.kicad_pcb
Normal file
23611
hackpads/dawpad/pcb/DawPad.kicad_pcb
Normal file
File diff suppressed because it is too large
Load diff
114
hackpads/dawpad/pcb/DawPad.kicad_prl
Normal file
114
hackpads/dawpad/pcb/DawPad.kicad_prl
Normal file
|
|
@ -0,0 +1,114 @@
|
|||
{
|
||||
"board": {
|
||||
"active_layer": 37,
|
||||
"active_layer_preset": "",
|
||||
"auto_track_width": true,
|
||||
"hidden_netclasses": [],
|
||||
"hidden_nets": [],
|
||||
"high_contrast_mode": 0,
|
||||
"net_color_mode": 1,
|
||||
"opacity": {
|
||||
"images": 0.6,
|
||||
"pads": 1.0,
|
||||
"shapes": 1.0,
|
||||
"tracks": 1.0,
|
||||
"vias": 1.0,
|
||||
"zones": 0.6
|
||||
},
|
||||
"selection_filter": {
|
||||
"dimensions": true,
|
||||
"footprints": true,
|
||||
"graphics": true,
|
||||
"keepouts": true,
|
||||
"lockedItems": false,
|
||||
"otherItems": true,
|
||||
"pads": true,
|
||||
"text": true,
|
||||
"tracks": true,
|
||||
"vias": true,
|
||||
"zones": true
|
||||
},
|
||||
"visible_items": [
|
||||
0,
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
4,
|
||||
5,
|
||||
8,
|
||||
9,
|
||||
10,
|
||||
11,
|
||||
12,
|
||||
13,
|
||||
15,
|
||||
16,
|
||||
17,
|
||||
18,
|
||||
19,
|
||||
20,
|
||||
21,
|
||||
22,
|
||||
23,
|
||||
24,
|
||||
25,
|
||||
26,
|
||||
27,
|
||||
28,
|
||||
29,
|
||||
30,
|
||||
32,
|
||||
33,
|
||||
34,
|
||||
35,
|
||||
36,
|
||||
39,
|
||||
40,
|
||||
41
|
||||
],
|
||||
"visible_layers": "7ffffff_ffffffff",
|
||||
"zone_display_mode": 0
|
||||
},
|
||||
"git": {
|
||||
"repo_password": "",
|
||||
"repo_type": "",
|
||||
"repo_username": "",
|
||||
"ssh_key": ""
|
||||
},
|
||||
"meta": {
|
||||
"filename": "DawPad.kicad_prl",
|
||||
"version": 3
|
||||
},
|
||||
"net_inspector_panel": {
|
||||
"col_hidden": [],
|
||||
"col_order": [],
|
||||
"col_widths": [],
|
||||
"custom_group_rules": [],
|
||||
"expanded_rows": [],
|
||||
"filter_by_net_name": true,
|
||||
"filter_by_netclass": true,
|
||||
"filter_text": "",
|
||||
"group_by_constraint": false,
|
||||
"group_by_netclass": false,
|
||||
"show_unconnected_nets": false,
|
||||
"show_zero_pad_nets": false,
|
||||
"sort_ascending": true,
|
||||
"sorting_column": -1
|
||||
},
|
||||
"project": {
|
||||
"files": []
|
||||
},
|
||||
"schematic": {
|
||||
"selection_filter": {
|
||||
"graphics": true,
|
||||
"images": true,
|
||||
"labels": true,
|
||||
"lockedItems": false,
|
||||
"otherItems": true,
|
||||
"pins": true,
|
||||
"symbols": true,
|
||||
"text": true,
|
||||
"wires": true
|
||||
}
|
||||
}
|
||||
}
|
||||
609
hackpads/dawpad/pcb/DawPad.kicad_pro
Normal file
609
hackpads/dawpad/pcb/DawPad.kicad_pro
Normal file
|
|
@ -0,0 +1,609 @@
|
|||
{
|
||||
"board": {
|
||||
"3dviewports": [],
|
||||
"design_settings": {
|
||||
"defaults": {
|
||||
"apply_defaults_to_fp_fields": false,
|
||||
"apply_defaults_to_fp_shapes": false,
|
||||
"apply_defaults_to_fp_text": false,
|
||||
"board_outline_line_width": 0.05,
|
||||
"copper_line_width": 0.2,
|
||||
"copper_text_italic": false,
|
||||
"copper_text_size_h": 1.5,
|
||||
"copper_text_size_v": 1.5,
|
||||
"copper_text_thickness": 0.3,
|
||||
"copper_text_upright": false,
|
||||
"courtyard_line_width": 0.05,
|
||||
"dimension_precision": 4,
|
||||
"dimension_units": 3,
|
||||
"dimensions": {
|
||||
"arrow_length": 1270000,
|
||||
"extension_offset": 500000,
|
||||
"keep_text_aligned": true,
|
||||
"suppress_zeroes": false,
|
||||
"text_position": 0,
|
||||
"units_format": 1
|
||||
},
|
||||
"fab_line_width": 0.1,
|
||||
"fab_text_italic": false,
|
||||
"fab_text_size_h": 1.0,
|
||||
"fab_text_size_v": 1.0,
|
||||
"fab_text_thickness": 0.15,
|
||||
"fab_text_upright": false,
|
||||
"other_line_width": 0.1,
|
||||
"other_text_italic": false,
|
||||
"other_text_size_h": 1.0,
|
||||
"other_text_size_v": 1.0,
|
||||
"other_text_thickness": 0.15,
|
||||
"other_text_upright": false,
|
||||
"pads": {
|
||||
"drill": 0.762,
|
||||
"height": 1.524,
|
||||
"width": 1.524
|
||||
},
|
||||
"silk_line_width": 0.1,
|
||||
"silk_text_italic": false,
|
||||
"silk_text_size_h": 1.0,
|
||||
"silk_text_size_v": 1.0,
|
||||
"silk_text_thickness": 0.1,
|
||||
"silk_text_upright": false,
|
||||
"zones": {
|
||||
"min_clearance": 0.5
|
||||
}
|
||||
},
|
||||
"diff_pair_dimensions": [],
|
||||
"drc_exclusions": [],
|
||||
"meta": {
|
||||
"version": 2
|
||||
},
|
||||
"rule_severities": {
|
||||
"annular_width": "error",
|
||||
"clearance": "error",
|
||||
"connection_width": "warning",
|
||||
"copper_edge_clearance": "error",
|
||||
"copper_sliver": "warning",
|
||||
"courtyards_overlap": "error",
|
||||
"diff_pair_gap_out_of_range": "error",
|
||||
"diff_pair_uncoupled_length_too_long": "error",
|
||||
"drill_out_of_range": "error",
|
||||
"duplicate_footprints": "warning",
|
||||
"extra_footprint": "warning",
|
||||
"footprint": "error",
|
||||
"footprint_symbol_mismatch": "warning",
|
||||
"footprint_type_mismatch": "ignore",
|
||||
"hole_clearance": "error",
|
||||
"hole_near_hole": "error",
|
||||
"holes_co_located": "warning",
|
||||
"invalid_outline": "error",
|
||||
"isolated_copper": "warning",
|
||||
"item_on_disabled_layer": "error",
|
||||
"items_not_allowed": "error",
|
||||
"length_out_of_range": "error",
|
||||
"lib_footprint_issues": "warning",
|
||||
"lib_footprint_mismatch": "warning",
|
||||
"malformed_courtyard": "error",
|
||||
"microvia_drill_out_of_range": "error",
|
||||
"missing_courtyard": "ignore",
|
||||
"missing_footprint": "warning",
|
||||
"net_conflict": "warning",
|
||||
"npth_inside_courtyard": "ignore",
|
||||
"padstack": "warning",
|
||||
"pth_inside_courtyard": "ignore",
|
||||
"shorting_items": "error",
|
||||
"silk_edge_clearance": "warning",
|
||||
"silk_over_copper": "warning",
|
||||
"silk_overlap": "warning",
|
||||
"skew_out_of_range": "error",
|
||||
"solder_mask_bridge": "error",
|
||||
"starved_thermal": "error",
|
||||
"text_height": "warning",
|
||||
"text_thickness": "warning",
|
||||
"through_hole_pad_without_hole": "error",
|
||||
"too_many_vias": "error",
|
||||
"track_dangling": "warning",
|
||||
"track_width": "error",
|
||||
"tracks_crossing": "error",
|
||||
"unconnected_items": "error",
|
||||
"unresolved_variable": "error",
|
||||
"via_dangling": "warning",
|
||||
"zones_intersect": "error"
|
||||
},
|
||||
"rules": {
|
||||
"max_error": 0.005,
|
||||
"min_clearance": 0.0,
|
||||
"min_connection": 0.0,
|
||||
"min_copper_edge_clearance": 0.5,
|
||||
"min_hole_clearance": 0.25,
|
||||
"min_hole_to_hole": 0.25,
|
||||
"min_microvia_diameter": 0.2,
|
||||
"min_microvia_drill": 0.1,
|
||||
"min_resolved_spokes": 2,
|
||||
"min_silk_clearance": 0.0,
|
||||
"min_text_height": 0.8,
|
||||
"min_text_thickness": 0.08,
|
||||
"min_through_hole_diameter": 0.3,
|
||||
"min_track_width": 0.0,
|
||||
"min_via_annular_width": 0.1,
|
||||
"min_via_diameter": 0.5,
|
||||
"solder_mask_to_copper_clearance": 0.0,
|
||||
"use_height_for_length_calcs": true
|
||||
},
|
||||
"teardrop_options": [
|
||||
{
|
||||
"td_onpadsmd": true,
|
||||
"td_onroundshapesonly": false,
|
||||
"td_ontrackend": false,
|
||||
"td_onviapad": true
|
||||
}
|
||||
],
|
||||
"teardrop_parameters": [
|
||||
{
|
||||
"td_allow_use_two_tracks": true,
|
||||
"td_curve_segcount": 0,
|
||||
"td_height_ratio": 1.0,
|
||||
"td_length_ratio": 0.5,
|
||||
"td_maxheight": 2.0,
|
||||
"td_maxlen": 1.0,
|
||||
"td_on_pad_in_zone": false,
|
||||
"td_target_name": "td_round_shape",
|
||||
"td_width_to_size_filter_ratio": 0.9
|
||||
},
|
||||
{
|
||||
"td_allow_use_two_tracks": true,
|
||||
"td_curve_segcount": 0,
|
||||
"td_height_ratio": 1.0,
|
||||
"td_length_ratio": 0.5,
|
||||
"td_maxheight": 2.0,
|
||||
"td_maxlen": 1.0,
|
||||
"td_on_pad_in_zone": false,
|
||||
"td_target_name": "td_rect_shape",
|
||||
"td_width_to_size_filter_ratio": 0.9
|
||||
},
|
||||
{
|
||||
"td_allow_use_two_tracks": true,
|
||||
"td_curve_segcount": 0,
|
||||
"td_height_ratio": 1.0,
|
||||
"td_length_ratio": 0.5,
|
||||
"td_maxheight": 2.0,
|
||||
"td_maxlen": 1.0,
|
||||
"td_on_pad_in_zone": false,
|
||||
"td_target_name": "td_track_end",
|
||||
"td_width_to_size_filter_ratio": 0.9
|
||||
}
|
||||
],
|
||||
"track_widths": [],
|
||||
"tuning_pattern_settings": {
|
||||
"diff_pair_defaults": {
|
||||
"corner_radius_percentage": 80,
|
||||
"corner_style": 1,
|
||||
"max_amplitude": 1.0,
|
||||
"min_amplitude": 0.2,
|
||||
"single_sided": false,
|
||||
"spacing": 1.0
|
||||
},
|
||||
"diff_pair_skew_defaults": {
|
||||
"corner_radius_percentage": 80,
|
||||
"corner_style": 1,
|
||||
"max_amplitude": 1.0,
|
||||
"min_amplitude": 0.2,
|
||||
"single_sided": false,
|
||||
"spacing": 0.6
|
||||
},
|
||||
"single_track_defaults": {
|
||||
"corner_radius_percentage": 80,
|
||||
"corner_style": 1,
|
||||
"max_amplitude": 1.0,
|
||||
"min_amplitude": 0.2,
|
||||
"single_sided": false,
|
||||
"spacing": 0.6
|
||||
}
|
||||
},
|
||||
"via_dimensions": [],
|
||||
"zones_allow_external_fillets": false
|
||||
},
|
||||
"ipc2581": {
|
||||
"dist": "",
|
||||
"distpn": "",
|
||||
"internal_id": "",
|
||||
"mfg": "",
|
||||
"mpn": ""
|
||||
},
|
||||
"layer_pairs": [],
|
||||
"layer_presets": [],
|
||||
"viewports": []
|
||||
},
|
||||
"boards": [],
|
||||
"cvpcb": {
|
||||
"equivalence_files": []
|
||||
},
|
||||
"erc": {
|
||||
"erc_exclusions": [],
|
||||
"meta": {
|
||||
"version": 0
|
||||
},
|
||||
"pin_map": [
|
||||
[
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
2,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
1,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
1,
|
||||
2,
|
||||
1,
|
||||
1,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
0,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
2,
|
||||
1,
|
||||
2,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
2,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
2,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
2,
|
||||
1,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
2,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2
|
||||
]
|
||||
],
|
||||
"rule_severities": {
|
||||
"bus_definition_conflict": "error",
|
||||
"bus_entry_needed": "error",
|
||||
"bus_to_bus_conflict": "error",
|
||||
"bus_to_net_conflict": "error",
|
||||
"conflicting_netclasses": "error",
|
||||
"different_unit_footprint": "error",
|
||||
"different_unit_net": "error",
|
||||
"duplicate_reference": "error",
|
||||
"duplicate_sheet_names": "error",
|
||||
"endpoint_off_grid": "warning",
|
||||
"extra_units": "error",
|
||||
"global_label_dangling": "warning",
|
||||
"hier_label_mismatch": "error",
|
||||
"label_dangling": "error",
|
||||
"lib_symbol_issues": "warning",
|
||||
"missing_bidi_pin": "warning",
|
||||
"missing_input_pin": "warning",
|
||||
"missing_power_pin": "error",
|
||||
"missing_unit": "warning",
|
||||
"multiple_net_names": "warning",
|
||||
"net_not_bus_member": "warning",
|
||||
"no_connect_connected": "warning",
|
||||
"no_connect_dangling": "warning",
|
||||
"pin_not_connected": "error",
|
||||
"pin_not_driven": "error",
|
||||
"pin_to_pin": "error",
|
||||
"power_pin_not_driven": "error",
|
||||
"similar_labels": "warning",
|
||||
"simulation_model_issue": "ignore",
|
||||
"unannotated": "error",
|
||||
"unit_value_mismatch": "error",
|
||||
"unresolved_variable": "error",
|
||||
"wire_dangling": "error"
|
||||
}
|
||||
},
|
||||
"libraries": {
|
||||
"pinned_footprint_libs": [],
|
||||
"pinned_symbol_libs": []
|
||||
},
|
||||
"meta": {
|
||||
"filename": "DawPad.kicad_pro",
|
||||
"version": 1
|
||||
},
|
||||
"net_settings": {
|
||||
"classes": [
|
||||
{
|
||||
"bus_width": 12,
|
||||
"clearance": 0.2,
|
||||
"diff_pair_gap": 0.25,
|
||||
"diff_pair_via_gap": 0.25,
|
||||
"diff_pair_width": 0.2,
|
||||
"line_style": 0,
|
||||
"microvia_diameter": 0.3,
|
||||
"microvia_drill": 0.1,
|
||||
"name": "Default",
|
||||
"pcb_color": "rgba(0, 0, 0, 0.000)",
|
||||
"schematic_color": "rgba(0, 0, 0, 0.000)",
|
||||
"track_width": 0.2,
|
||||
"via_diameter": 0.6,
|
||||
"via_drill": 0.3,
|
||||
"wire_width": 6
|
||||
}
|
||||
],
|
||||
"meta": {
|
||||
"version": 3
|
||||
},
|
||||
"net_colors": null,
|
||||
"netclass_assignments": null,
|
||||
"netclass_patterns": []
|
||||
},
|
||||
"pcbnew": {
|
||||
"last_paths": {
|
||||
"gencad": "",
|
||||
"idf": "",
|
||||
"netlist": "",
|
||||
"plot": "../production/",
|
||||
"pos_files": "",
|
||||
"specctra_dsn": "",
|
||||
"step": "",
|
||||
"svg": "",
|
||||
"vrml": ""
|
||||
},
|
||||
"page_layout_descr_file": ""
|
||||
},
|
||||
"schematic": {
|
||||
"annotate_start_num": 0,
|
||||
"bom_export_filename": "",
|
||||
"bom_fmt_presets": [],
|
||||
"bom_fmt_settings": {
|
||||
"field_delimiter": ",",
|
||||
"keep_line_breaks": false,
|
||||
"keep_tabs": false,
|
||||
"name": "CSV",
|
||||
"ref_delimiter": ",",
|
||||
"ref_range_delimiter": "",
|
||||
"string_delimiter": "\""
|
||||
},
|
||||
"bom_presets": [],
|
||||
"bom_settings": {
|
||||
"exclude_dnp": false,
|
||||
"fields_ordered": [
|
||||
{
|
||||
"group_by": false,
|
||||
"label": "Reference",
|
||||
"name": "Reference",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": true,
|
||||
"label": "Value",
|
||||
"name": "Value",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": false,
|
||||
"label": "Datasheet",
|
||||
"name": "Datasheet",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": false,
|
||||
"label": "Footprint",
|
||||
"name": "Footprint",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": false,
|
||||
"label": "Qty",
|
||||
"name": "${QUANTITY}",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": true,
|
||||
"label": "DNP",
|
||||
"name": "${DNP}",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": false,
|
||||
"label": "#",
|
||||
"name": "${ITEM_NUMBER}",
|
||||
"show": false
|
||||
},
|
||||
{
|
||||
"group_by": false,
|
||||
"label": "Sim.Device",
|
||||
"name": "Sim.Device",
|
||||
"show": false
|
||||
},
|
||||
{
|
||||
"group_by": false,
|
||||
"label": "Sim.Pins",
|
||||
"name": "Sim.Pins",
|
||||
"show": false
|
||||
},
|
||||
{
|
||||
"group_by": false,
|
||||
"label": "Description",
|
||||
"name": "Description",
|
||||
"show": false
|
||||
}
|
||||
],
|
||||
"filter_string": "",
|
||||
"group_symbols": true,
|
||||
"name": "",
|
||||
"sort_asc": true,
|
||||
"sort_field": "Reference"
|
||||
},
|
||||
"connection_grid_size": 50.0,
|
||||
"drawing": {
|
||||
"dashed_lines_dash_length_ratio": 12.0,
|
||||
"dashed_lines_gap_length_ratio": 3.0,
|
||||
"default_line_thickness": 6.0,
|
||||
"default_text_size": 50.0,
|
||||
"field_names": [],
|
||||
"intersheets_ref_own_page": false,
|
||||
"intersheets_ref_prefix": "",
|
||||
"intersheets_ref_short": false,
|
||||
"intersheets_ref_show": false,
|
||||
"intersheets_ref_suffix": "",
|
||||
"junction_size_choice": 3,
|
||||
"label_size_ratio": 0.375,
|
||||
"operating_point_overlay_i_precision": 3,
|
||||
"operating_point_overlay_i_range": "~A",
|
||||
"operating_point_overlay_v_precision": 3,
|
||||
"operating_point_overlay_v_range": "~V",
|
||||
"overbar_offset_ratio": 1.23,
|
||||
"pin_symbol_size": 25.0,
|
||||
"text_offset_ratio": 0.15
|
||||
},
|
||||
"legacy_lib_dir": "",
|
||||
"legacy_lib_list": [],
|
||||
"meta": {
|
||||
"version": 1
|
||||
},
|
||||
"net_format_name": "",
|
||||
"page_layout_descr_file": "",
|
||||
"plot_directory": "",
|
||||
"spice_current_sheet_as_root": false,
|
||||
"spice_external_command": "spice \"%I\"",
|
||||
"spice_model_current_sheet_as_root": true,
|
||||
"spice_save_all_currents": false,
|
||||
"spice_save_all_dissipations": false,
|
||||
"spice_save_all_voltages": false,
|
||||
"subpart_first_id": 65,
|
||||
"subpart_id_separator": 0
|
||||
},
|
||||
"sheets": [
|
||||
[
|
||||
"3a5860f7-fb48-455b-8008-559bf5276a58",
|
||||
"Root"
|
||||
]
|
||||
],
|
||||
"text_variables": {}
|
||||
}
|
||||
12136
hackpads/dawpad/pcb/DawPad.kicad_sch
Normal file
12136
hackpads/dawpad/pcb/DawPad.kicad_sch
Normal file
File diff suppressed because it is too large
Load diff
99772
hackpads/dawpad/pcb/fp-info-cache
Normal file
99772
hackpads/dawpad/pcb/fp-info-cache
Normal file
File diff suppressed because it is too large
Load diff
7
hackpads/dawpad/pcb/fp-lib-table
Normal file
7
hackpads/dawpad/pcb/fp-lib-table
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
(fp_lib_table
|
||||
(version 7)
|
||||
(lib (name "MX_Hotswap")(type "KiCad")(uri "${KIPRJMOD}/libraries/MX_V2/MX_Hotswap.pretty")(options "")(descr ""))
|
||||
(lib (name "Seeed Studio XIAO Series Library")(type "KiCad")(uri "${KIPRJMOD}/libraries/OPL_Kicad_Library/Seeed Studio XIAO Series Library")(options "")(descr ""))
|
||||
(lib (name "Switch_Misc")(type "KiCad")(uri "${KIPRJMOD}/libraries/MX_V2/Switch_Misc.pretty")(options "")(descr ""))
|
||||
(lib (name "SK6812MINI-E")(type "KiCad")(uri "${KIPRJMOD}/libraries/SK6812MINI-E.pretty")(options "")(descr ""))
|
||||
)
|
||||
1
hackpads/dawpad/pcb/libraries/MX_V2
Submodule
1
hackpads/dawpad/pcb/libraries/MX_V2
Submodule
|
|
@ -0,0 +1 @@
|
|||
Subproject commit 0b379eebbeb66c7fd6e82e400b47958ad695614e
|
||||
1
hackpads/dawpad/pcb/libraries/OPL_Kicad_Library
Submodule
1
hackpads/dawpad/pcb/libraries/OPL_Kicad_Library
Submodule
|
|
@ -0,0 +1 @@
|
|||
Subproject commit e061eb5cff70caf5aa39b7672edf533b7647f66a
|
||||
|
|
@ -0,0 +1,198 @@
|
|||
(footprint "SK6812MINI-E"
|
||||
(version 20240108)
|
||||
(generator "pcbnew")
|
||||
(generator_version "8.0")
|
||||
(layer "F.Cu")
|
||||
(property "Reference" "REF**"
|
||||
(at 0 2.1 0)
|
||||
(unlocked yes)
|
||||
(layer "F.SilkS")
|
||||
(uuid "b88284fb-aaa4-42d6-9cad-a972e703847a")
|
||||
(effects
|
||||
(font
|
||||
(size 0.7 0.7)
|
||||
(thickness 0.15)
|
||||
)
|
||||
)
|
||||
)
|
||||
(property "Value" "SK6812-MINI-E"
|
||||
(at 0 -0.5 0)
|
||||
(unlocked yes)
|
||||
(layer "F.SilkS")
|
||||
(hide yes)
|
||||
(uuid "f39cdc37-60ce-429a-b3e2-aa8b995dec58")
|
||||
(effects
|
||||
(font
|
||||
(size 1 1)
|
||||
(thickness 0.15)
|
||||
)
|
||||
)
|
||||
)
|
||||
(property "Footprint" ""
|
||||
(at 0 0 0)
|
||||
(layer "F.Fab")
|
||||
(hide yes)
|
||||
(uuid "d234705b-3108-4bab-9522-a4cf9ccb2635")
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
(thickness 0.15)
|
||||
)
|
||||
)
|
||||
)
|
||||
(property "Datasheet" ""
|
||||
(at 0 0 0)
|
||||
(layer "F.Fab")
|
||||
(hide yes)
|
||||
(uuid "8bf330b9-74b6-4648-9435-1c6528dfbc45")
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
(thickness 0.15)
|
||||
)
|
||||
)
|
||||
)
|
||||
(property "Description" ""
|
||||
(at 0 0 0)
|
||||
(layer "F.Fab")
|
||||
(hide yes)
|
||||
(uuid "0eca6a33-882a-4b27-8f0b-bafbd09f61fe")
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
(thickness 0.15)
|
||||
)
|
||||
)
|
||||
)
|
||||
(attr through_hole)
|
||||
(fp_poly
|
||||
(pts
|
||||
(xy 2.8 -1.4) (xy 2.2 -1.4) (xy 2.2 -2)
|
||||
)
|
||||
(stroke
|
||||
(width 0.1)
|
||||
(type solid)
|
||||
)
|
||||
(fill solid)
|
||||
(layer "F.SilkS")
|
||||
(uuid "d6167f7d-a14f-40d6-967b-9af1e73cb3fb")
|
||||
)
|
||||
(fp_line
|
||||
(start -1.6 -1.4)
|
||||
(end 1.6 -1.4)
|
||||
(stroke
|
||||
(width 0.12)
|
||||
(type solid)
|
||||
)
|
||||
(layer "Cmts.User")
|
||||
(uuid "156060ac-56fb-40cd-ad7f-f6d782f0113d")
|
||||
)
|
||||
(fp_line
|
||||
(start -1.6 1.4)
|
||||
(end -1.6 -1.4)
|
||||
(stroke
|
||||
(width 0.12)
|
||||
(type solid)
|
||||
)
|
||||
(layer "Cmts.User")
|
||||
(uuid "06f735ab-4565-4a94-812d-7b33af5edb5e")
|
||||
)
|
||||
(fp_line
|
||||
(start 1.6 -1.4)
|
||||
(end 1.6 1.4)
|
||||
(stroke
|
||||
(width 0.12)
|
||||
(type solid)
|
||||
)
|
||||
(layer "Cmts.User")
|
||||
(uuid "89906bd8-c208-4976-9481-1f82e820825d")
|
||||
)
|
||||
(fp_line
|
||||
(start 1.6 1.4)
|
||||
(end -1.6 1.4)
|
||||
(stroke
|
||||
(width 0.12)
|
||||
(type solid)
|
||||
)
|
||||
(layer "Cmts.User")
|
||||
(uuid "d8f3c9c2-7ef8-48fa-aaa1-446802cdc075")
|
||||
)
|
||||
(fp_line
|
||||
(start -1.7 -1.5)
|
||||
(end 1.7 -1.5)
|
||||
(stroke
|
||||
(width 0.12)
|
||||
(type solid)
|
||||
)
|
||||
(layer "Edge.Cuts")
|
||||
(uuid "a7296c89-e37a-49e0-9eec-e43cb4f4fbe0")
|
||||
)
|
||||
(fp_line
|
||||
(start -1.7 1.5)
|
||||
(end -1.7 -1.5)
|
||||
(stroke
|
||||
(width 0.12)
|
||||
(type solid)
|
||||
)
|
||||
(layer "Edge.Cuts")
|
||||
(uuid "0d0cf35e-3eec-4340-a306-9a8605c43fcc")
|
||||
)
|
||||
(fp_line
|
||||
(start 1.7 -1.5)
|
||||
(end 1.7 1.5)
|
||||
(stroke
|
||||
(width 0.12)
|
||||
(type solid)
|
||||
)
|
||||
(layer "Edge.Cuts")
|
||||
(uuid "eb85ee1e-3df6-479d-b0f9-c263eb650062")
|
||||
)
|
||||
(fp_line
|
||||
(start 1.7 1.5)
|
||||
(end -1.7 1.5)
|
||||
(stroke
|
||||
(width 0.12)
|
||||
(type solid)
|
||||
)
|
||||
(layer "Edge.Cuts")
|
||||
(uuid "ed21ccd9-74a6-47d4-9c97-c71afbd5ee26")
|
||||
)
|
||||
(pad "1" smd rect
|
||||
(at -2.6 -0.75)
|
||||
(size 1.8 0.82)
|
||||
(layers "F.Cu" "F.Paste" "F.Mask")
|
||||
(uuid "4d38ce85-6493-490c-9a84-0708ba0fe35e")
|
||||
)
|
||||
(pad "2" smd roundrect
|
||||
(at 2.6 -0.75)
|
||||
(size 1.8 0.82)
|
||||
(layers "F.Cu" "F.Paste" "F.Mask")
|
||||
(roundrect_rratio 0)
|
||||
(chamfer_ratio 0.2)
|
||||
(chamfer top_right)
|
||||
(uuid "686a830c-3078-4363-b8a6-a13372992f00")
|
||||
)
|
||||
(pad "3" smd rect
|
||||
(at 2.6 0.75)
|
||||
(size 1.8 0.82)
|
||||
(layers "F.Cu" "F.Paste" "F.Mask")
|
||||
(uuid "26377afe-6623-4419-aa1c-3c85ec60980b")
|
||||
)
|
||||
(pad "4" smd rect
|
||||
(at -2.6 0.75)
|
||||
(size 1.8 0.82)
|
||||
(layers "F.Cu" "F.Paste" "F.Mask")
|
||||
(uuid "b4407596-3d45-4321-b92f-e6ca5004a7cc")
|
||||
)
|
||||
(model "${KIPRJMOD}/libraries/SK6812MINI-E.pretty/SK6812MINI-E.step"
|
||||
(offset
|
||||
(xyz 0 0 0)
|
||||
)
|
||||
(scale
|
||||
(xyz 1 1 1)
|
||||
)
|
||||
(rotate
|
||||
(xyz 90 0 0)
|
||||
)
|
||||
)
|
||||
)
|
||||
5850
hackpads/dawpad/pcb/libraries/SK6812MINI-E.pretty/SK6812MINI-E.step
Normal file
5850
hackpads/dawpad/pcb/libraries/SK6812MINI-E.pretty/SK6812MINI-E.step
Normal file
File diff suppressed because it is too large
Load diff
4
hackpads/dawpad/pcb/sym-lib-table
Normal file
4
hackpads/dawpad/pcb/sym-lib-table
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
(sym_lib_table
|
||||
(version 7)
|
||||
(lib (name "Seeed Studio XIAO Series")(type "KiCad")(uri "${KIPRJMOD}/libraries/OPL_Kicad_Library/Seeed Studio XIAO Series Library/Seeed_Studio_XIAO_Series.kicad_sym")(options "")(descr ""))
|
||||
)
|
||||
1373
hackpads/dawpad/production/Bottom.step
Normal file
1373
hackpads/dawpad/production/Bottom.step
Normal file
File diff suppressed because it is too large
Load diff
BIN
hackpads/dawpad/production/Control-Surface.ino.uf2
Normal file
BIN
hackpads/dawpad/production/Control-Surface.ino.uf2
Normal file
Binary file not shown.
2456
hackpads/dawpad/production/Top.step
Normal file
2456
hackpads/dawpad/production/Top.step
Normal file
File diff suppressed because it is too large
Load diff
BIN
hackpads/dawpad/production/gerbers.zip
Normal file
BIN
hackpads/dawpad/production/gerbers.zip
Normal file
Binary file not shown.
Loading…
Add table
Reference in a new issue