mirror of
https://github.com/System-End/hackpad.git
synced 2026-04-19 23:32:54 +00:00
Add files via upload
This commit is contained in:
parent
ffa6d605c9
commit
ea5efa2295
26 changed files with 221914 additions and 0 deletions
BIN
hackpads/T_UNSERHackpad/CAD/Bottom.stl
Normal file
BIN
hackpads/T_UNSERHackpad/CAD/Bottom.stl
Normal file
Binary file not shown.
BIN
hackpads/T_UNSERHackpad/CAD/Case+PCB_whole.zip
Normal file
BIN
hackpads/T_UNSERHackpad/CAD/Case+PCB_whole.zip
Normal file
Binary file not shown.
BIN
hackpads/T_UNSERHackpad/CAD/Case-whole.zip
Normal file
BIN
hackpads/T_UNSERHackpad/CAD/Case-whole.zip
Normal file
Binary file not shown.
BIN
hackpads/T_UNSERHackpad/CAD/Top.stl
Normal file
BIN
hackpads/T_UNSERHackpad/CAD/Top.stl
Normal file
Binary file not shown.
61
hackpads/T_UNSERHackpad/Firmware/main.py
Normal file
61
hackpads/T_UNSERHackpad/Firmware/main.py
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
import board
|
||||
import busio
|
||||
import displayio
|
||||
import terminalio
|
||||
import neopixel
|
||||
from kmk.kmk_keyboard import KMKKeyboard
|
||||
from kmk.keys import KC
|
||||
from kmk.modules.encoder import EncoderHandler
|
||||
from adafruit_display_text import label
|
||||
from adafruit_displayio_ssd1306 import SSD1306
|
||||
|
||||
# D0: Switch@Rotary encoder
|
||||
# D1: Rotary-Encoder output A
|
||||
# D3: Rotary-Encoder output B
|
||||
# D4: Display SDA
|
||||
# D5: Display SCL
|
||||
# D7: Switch 1
|
||||
# D8: Switch 2
|
||||
# D9: Switch 3
|
||||
# D10: Switch 4
|
||||
|
||||
keyboard = KMKKeyboard()
|
||||
|
||||
keyboard.col_pins = (board.D7, board.D8, board.D9, board.D10) # SW1-SW4
|
||||
keyboard.row_pins = ()
|
||||
|
||||
pixels = neopixel.NeoPixel(board.D6)
|
||||
pixels.fill(255,255,255)
|
||||
pixels.show()
|
||||
|
||||
encoder_handler = EncoderHandler()
|
||||
keyboard.modules.append(encoder_handler)
|
||||
encoder_handler.pins = ((board.D1, board.D2, board.D0),) # A, B, Switch
|
||||
encoder_handler.map = [
|
||||
((KC.VOLU, KC.VOLD), KC.MUTE)
|
||||
]
|
||||
keyboard.keymap = [
|
||||
[KC.N1, KC.N2, KC.N3, KC.N4]
|
||||
]
|
||||
|
||||
displayio.release_displays()
|
||||
i2c = busio.I2C(board.D5, board.D4)
|
||||
display_bus = displayio.I2CDisplay(i2c, device_address=0x3C)
|
||||
display = SSD1306(display_bus, width=128, height=64)
|
||||
|
||||
splash = displayio.Group()
|
||||
text_area = label.Label(terminalio.FONT, text="Keyboard", color=0xFFFFFF, x=10, y=10)
|
||||
splash.append(text_area)
|
||||
display.show(splash)
|
||||
|
||||
def update_display(message):
|
||||
text_area.text = message
|
||||
display.show(splash)
|
||||
|
||||
def on_keypress(key):
|
||||
update_display(f"Pressed: {key.name}")
|
||||
|
||||
keyboard.pressed_callbacks.append(on_keypress)
|
||||
|
||||
if __name__ == '__main__':
|
||||
keyboard.go()
|
||||
1
hackpads/T_UNSERHackpad/PCB/#auto_saved_files#
Normal file
1
hackpads/T_UNSERHackpad/PCB/#auto_saved_files#
Normal file
|
|
@ -0,0 +1 @@
|
|||
C:\Users\timka\Desktop\Programmieren_Priv\Hackpad\PCB-Design\_autosave-PCB-Design.kicad_sch
|
||||
37
hackpads/T_UNSERHackpad/PCB/PCB-Design-NPTH.drl
Normal file
37
hackpads/T_UNSERHackpad/PCB/PCB-Design-NPTH.drl
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
M48
|
||||
; DRILL file {KiCad 8.0.8} date 2025-02-14T01:40:04+0100
|
||||
; FORMAT={-:-/ absolute / metric / decimal}
|
||||
; #@! TF.CreationDate,2025-02-14T01:40:04+01:00
|
||||
; #@! TF.GenerationSoftware,Kicad,Pcbnew,8.0.8
|
||||
; #@! TF.FileFunction,NonPlated,1,2,NPTH
|
||||
FMAT,2
|
||||
METRIC
|
||||
; #@! TA.AperFunction,NonPlated,NPTH,ComponentDrill
|
||||
T1C1.700
|
||||
; #@! TA.AperFunction,NonPlated,NPTH,ComponentDrill
|
||||
T2C2.100
|
||||
; #@! TA.AperFunction,NonPlated,NPTH,ComponentDrill
|
||||
T3C4.000
|
||||
%
|
||||
G90
|
||||
G05
|
||||
T1
|
||||
X140.42Y-102.0
|
||||
X150.58Y-102.0
|
||||
X160.92Y-102.0
|
||||
X171.08Y-102.0
|
||||
X181.0Y-102.0
|
||||
X191.16Y-102.0
|
||||
X201.42Y-102.0
|
||||
X211.58Y-102.0
|
||||
T2
|
||||
X139.0Y-51.0
|
||||
X139.0Y-112.0
|
||||
X213.0Y-51.0
|
||||
X213.0Y-112.0
|
||||
T3
|
||||
X145.5Y-102.0
|
||||
X166.0Y-102.0
|
||||
X186.08Y-102.0
|
||||
X206.5Y-102.0
|
||||
M30
|
||||
88
hackpads/T_UNSERHackpad/PCB/PCB-Design-PTH.drl
Normal file
88
hackpads/T_UNSERHackpad/PCB/PCB-Design-PTH.drl
Normal file
|
|
@ -0,0 +1,88 @@
|
|||
M48
|
||||
; DRILL file {KiCad 8.0.8} date 2025-02-14T01:40:04+0100
|
||||
; FORMAT={-:-/ absolute / metric / decimal}
|
||||
; #@! TF.CreationDate,2025-02-14T01:40:04+01:00
|
||||
; #@! TF.GenerationSoftware,Kicad,Pcbnew,8.0.8
|
||||
; #@! TF.FileFunction,Plated,1,2,PTH
|
||||
FMAT,2
|
||||
METRIC
|
||||
; #@! TA.AperFunction,Plated,PTH,ViaDrill
|
||||
T1C0.300
|
||||
; #@! TA.AperFunction,Plated,PTH,ComponentDrill
|
||||
T2C0.889
|
||||
; #@! TA.AperFunction,Plated,PTH,ComponentDrill
|
||||
T3C1.000
|
||||
; #@! TA.AperFunction,Plated,PTH,ComponentDrill
|
||||
T4C1.500
|
||||
%
|
||||
G90
|
||||
G05
|
||||
T1
|
||||
X148.0Y-109.0
|
||||
X155.0Y-83.0
|
||||
X163.0Y-82.0
|
||||
X168.0Y-110.0
|
||||
X169.0Y-85.0
|
||||
X179.0Y-71.0
|
||||
X180.0Y-51.0
|
||||
X181.0Y-71.0
|
||||
X182.0Y-75.0
|
||||
X183.0Y-71.0
|
||||
X185.0Y-71.0
|
||||
X186.039Y-81.961
|
||||
X187.039Y-82.961
|
||||
X188.0Y-71.0
|
||||
X188.0Y-110.0
|
||||
X191.0Y-68.0
|
||||
X192.0Y-51.0
|
||||
X192.0Y-62.0
|
||||
X192.0Y-65.0
|
||||
X193.0Y-84.0
|
||||
X209.0Y-109.0
|
||||
X212.0Y-59.0
|
||||
T2
|
||||
X178.38Y-50.88
|
||||
X178.38Y-53.42
|
||||
X178.38Y-55.96
|
||||
X178.38Y-58.5
|
||||
X178.38Y-61.04
|
||||
X178.38Y-63.58
|
||||
X178.38Y-66.12
|
||||
X193.62Y-50.88
|
||||
X193.62Y-53.42
|
||||
X193.62Y-55.96
|
||||
X193.62Y-58.5
|
||||
X193.62Y-61.04
|
||||
X193.62Y-63.58
|
||||
X193.62Y-66.12
|
||||
T3
|
||||
X157.08Y-51.05
|
||||
X159.62Y-51.05
|
||||
X162.16Y-51.05
|
||||
X164.7Y-51.05
|
||||
X197.75Y-65.0
|
||||
X197.75Y-67.5
|
||||
X197.75Y-70.0
|
||||
X212.25Y-65.0
|
||||
X212.25Y-70.0
|
||||
T4
|
||||
X141.69Y-99.46
|
||||
X148.04Y-96.92
|
||||
X162.19Y-99.46
|
||||
X168.54Y-96.92
|
||||
X182.27Y-99.46
|
||||
X188.62Y-96.92
|
||||
X202.69Y-99.46
|
||||
X209.04Y-96.92
|
||||
T4
|
||||
G00X204.6Y-61.9
|
||||
M15
|
||||
G01X205.9Y-61.9
|
||||
M16
|
||||
G05
|
||||
G00X204.6Y-73.1
|
||||
M15
|
||||
G01X205.9Y-73.1
|
||||
M16
|
||||
G05
|
||||
M30
|
||||
6717
hackpads/T_UNSERHackpad/PCB/PCB-Design.kicad_pcb
Normal file
6717
hackpads/T_UNSERHackpad/PCB/PCB-Design.kicad_pcb
Normal file
File diff suppressed because it is too large
Load diff
83
hackpads/T_UNSERHackpad/PCB/PCB-Design.kicad_prl
Normal file
83
hackpads/T_UNSERHackpad/PCB/PCB-Design.kicad_prl
Normal file
|
|
@ -0,0 +1,83 @@
|
|||
{
|
||||
"board": {
|
||||
"active_layer": 0,
|
||||
"active_layer_preset": "All Layers",
|
||||
"auto_track_width": true,
|
||||
"hidden_netclasses": [],
|
||||
"hidden_nets": [],
|
||||
"high_contrast_mode": 0,
|
||||
"net_color_mode": 1,
|
||||
"opacity": {
|
||||
"images": 0.6,
|
||||
"pads": 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
|
||||
],
|
||||
"visible_layers": "fffffff_ffffffff",
|
||||
"zone_display_mode": 0
|
||||
},
|
||||
"git": {
|
||||
"repo_password": "",
|
||||
"repo_type": "",
|
||||
"repo_username": "",
|
||||
"ssh_key": ""
|
||||
},
|
||||
"meta": {
|
||||
"filename": "PCB-Design.kicad_prl",
|
||||
"version": 3
|
||||
},
|
||||
"project": {
|
||||
"files": []
|
||||
}
|
||||
}
|
||||
584
hackpads/T_UNSERHackpad/PCB/PCB-Design.kicad_pro
Normal file
584
hackpads/T_UNSERHackpad/PCB/PCB-Design.kicad_pro
Normal file
|
|
@ -0,0 +1,584 @@
|
|||
{
|
||||
"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": "ignore",
|
||||
"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_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": "warning",
|
||||
"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": "PCB-Design.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": "",
|
||||
"pos_files": "",
|
||||
"specctra_dsn": "",
|
||||
"step": "PCB-Design.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
|
||||
}
|
||||
],
|
||||
"filter_string": "",
|
||||
"group_symbols": true,
|
||||
"name": "Grouped By Value",
|
||||
"sort_asc": true,
|
||||
"sort_field": "Referenz"
|
||||
},
|
||||
"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": [
|
||||
[
|
||||
"57f54316-b327-454d-b09a-b37c94030011",
|
||||
"Root"
|
||||
]
|
||||
],
|
||||
"text_variables": {}
|
||||
}
|
||||
2920
hackpads/T_UNSERHackpad/PCB/PCB-Design.kicad_sch
Normal file
2920
hackpads/T_UNSERHackpad/PCB/PCB-Design.kicad_sch
Normal file
File diff suppressed because it is too large
Load diff
5
hackpads/T_UNSERHackpad/PCB/PCB-Design.kicad_sch-bak
Normal file
5
hackpads/T_UNSERHackpad/PCB/PCB-Design.kicad_sch-bak
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
(kicad_sch (version 20231120) (generator "eeschema") (generator_version "8.0")
|
||||
(paper "A4")
|
||||
(lib_symbols)
|
||||
(symbol_instances)
|
||||
)
|
||||
107723
hackpads/T_UNSERHackpad/PCB/PCB-Design.step
Normal file
107723
hackpads/T_UNSERHackpad/PCB/PCB-Design.step
Normal file
File diff suppressed because it is too large
Load diff
4070
hackpads/T_UNSERHackpad/PCB/_autosave-PCB-Design.kicad_sch
Normal file
4070
hackpads/T_UNSERHackpad/PCB/_autosave-PCB-Design.kicad_sch
Normal file
File diff suppressed because it is too large
Load diff
99506
hackpads/T_UNSERHackpad/PCB/fp-info-cache
Normal file
99506
hackpads/T_UNSERHackpad/PCB/fp-info-cache
Normal file
File diff suppressed because it is too large
Load diff
6
hackpads/T_UNSERHackpad/PCB/fp-lib-table
Normal file
6
hackpads/T_UNSERHackpad/PCB/fp-lib-table
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
(fp_lib_table
|
||||
(version 7)
|
||||
(lib (name "OPL")(type "KiCad")(uri "${KIPRJMOD}/OPL_Kicad_Library-master/Seeed Studio XIAO Series Library")(options "")(descr ""))
|
||||
(lib (name "RP2040")(type "KiCad")(uri "${KIPRJMOD}/Seeeduino-xiao-rp2040-KiCAD-Library/XIAO_PCB.pretty")(options "")(descr ""))
|
||||
(lib (name "0.96_OLED_Display")(type "KiCad")(uri "${KIPRJMOD}/0,96inch_oled_display/library/SSD1306.pretty")(options "")(descr ""))
|
||||
)
|
||||
6
hackpads/T_UNSERHackpad/PCB/sym-lib-table
Normal file
6
hackpads/T_UNSERHackpad/PCB/sym-lib-table
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
(sym_lib_table
|
||||
(version 7)
|
||||
(lib (name "OPL")(type "KiCad")(uri "${KIPRJMOD}/OPL_Kicad_Library-master/Seeed Studio XIAO Series Library/Seeed_Studio_XIAO_Series.kicad_sym")(options "")(descr ""))
|
||||
(lib (name "rp2040")(type "KiCad")(uri "${KIPRJMOD}/Seeeduino-xiao-rp2040-KiCAD-Library/MOUDLE-SEEEDUINO-XIAO.kicad_sym")(options "")(descr ""))
|
||||
(lib (name "0.96_OLED_Display")(type "KiCad")(uri "${KIPRJMOD}/0,96inch_oled_display/library/SSD1306-128x64_OLED.kicad_sym")(options "")(descr ""))
|
||||
)
|
||||
1
hackpads/T_UNSERHackpad/PCB/~PCB-Design.kicad_pcb.lck
Normal file
1
hackpads/T_UNSERHackpad/PCB/~PCB-Design.kicad_pcb.lck
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"hostname":"LAPTOP-TIK","username":"timka"}
|
||||
1
hackpads/T_UNSERHackpad/PCB/~PCB-Design.kicad_sch.lck
Normal file
1
hackpads/T_UNSERHackpad/PCB/~PCB-Design.kicad_sch.lck
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"hostname":"LAPTOP-TIK","username":"timka"}
|
||||
BIN
hackpads/T_UNSERHackpad/Production/Bottom.stl
Normal file
BIN
hackpads/T_UNSERHackpad/Production/Bottom.stl
Normal file
Binary file not shown.
BIN
hackpads/T_UNSERHackpad/Production/Top.stl
Normal file
BIN
hackpads/T_UNSERHackpad/Production/Top.stl
Normal file
Binary file not shown.
BIN
hackpads/T_UNSERHackpad/Production/gerbers.zip
Normal file
BIN
hackpads/T_UNSERHackpad/Production/gerbers.zip
Normal file
Binary file not shown.
61
hackpads/T_UNSERHackpad/Production/main.py
Normal file
61
hackpads/T_UNSERHackpad/Production/main.py
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
import board
|
||||
import busio
|
||||
import displayio
|
||||
import terminalio
|
||||
import neopixel
|
||||
from kmk.kmk_keyboard import KMKKeyboard
|
||||
from kmk.keys import KC
|
||||
from kmk.modules.encoder import EncoderHandler
|
||||
from adafruit_display_text import label
|
||||
from adafruit_displayio_ssd1306 import SSD1306
|
||||
|
||||
# D0: Switch@Rotary encoder
|
||||
# D1: Rotary-Encoder output A
|
||||
# D3: Rotary-Encoder output B
|
||||
# D4: Display SDA
|
||||
# D5: Display SCL
|
||||
# D7: Switch 1
|
||||
# D8: Switch 2
|
||||
# D9: Switch 3
|
||||
# D10: Switch 4
|
||||
|
||||
keyboard = KMKKeyboard()
|
||||
|
||||
keyboard.col_pins = (board.D7, board.D8, board.D9, board.D10) # SW1-SW4
|
||||
keyboard.row_pins = ()
|
||||
|
||||
pixels = neopixel.NeoPixel(board.D6)
|
||||
pixels.fill(255,255,255)
|
||||
pixels.show()
|
||||
|
||||
encoder_handler = EncoderHandler()
|
||||
keyboard.modules.append(encoder_handler)
|
||||
encoder_handler.pins = ((board.D1, board.D2, board.D0),) # A, B, Switch
|
||||
encoder_handler.map = [
|
||||
((KC.VOLU, KC.VOLD), KC.MUTE)
|
||||
]
|
||||
keyboard.keymap = [
|
||||
[KC.N1, KC.N2, KC.N3, KC.N4]
|
||||
]
|
||||
|
||||
displayio.release_displays()
|
||||
i2c = busio.I2C(board.D5, board.D4)
|
||||
display_bus = displayio.I2CDisplay(i2c, device_address=0x3C)
|
||||
display = SSD1306(display_bus, width=128, height=64)
|
||||
|
||||
splash = displayio.Group()
|
||||
text_area = label.Label(terminalio.FONT, text="Keyboard", color=0xFFFFFF, x=10, y=10)
|
||||
splash.append(text_area)
|
||||
display.show(splash)
|
||||
|
||||
def update_display(message):
|
||||
text_area.text = message
|
||||
display.show(splash)
|
||||
|
||||
def on_keypress(key):
|
||||
update_display(f"Pressed: {key.name}")
|
||||
|
||||
keyboard.pressed_callbacks.append(on_keypress)
|
||||
|
||||
if __name__ == '__main__':
|
||||
keyboard.go()
|
||||
9
hackpads/T_UNSERHackpad/Production/readme.md
Normal file
9
hackpads/T_UNSERHackpad/Production/readme.md
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
# Parts
|
||||
|
||||
- 1x Seeed XIAO RP2040
|
||||
- 4x MX-Style switches
|
||||
- 1x 0.96 inch OLED display
|
||||
- 4x Blank DSA keycaps (in white please :^) )
|
||||
- 1x EC11E Rotary Encoder
|
||||
- 7x SK6812 MINI-E LEDs
|
||||
- red case if possible ^^
|
||||
35
hackpads/T_UNSERHackpad/README.md
Normal file
35
hackpads/T_UNSERHackpad/README.md
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
# T_UNSERHackpad
|
||||
|
||||
This is my submission for Hackcklub Hackpad. It should provide music data later in the process of writing the firmware, and then also skipping, pausing and starting songs. The rotary encoder will be responsible for changing volume.
|
||||
|
||||
## Design
|
||||

|
||||
|
||||
|
||||
## Inspiration
|
||||
Because I like to listen to music a lot and don't always want to look up spotify or some similar apps, I want to have my data on the oled screen directly.
|
||||
This makes it way easier to shuffle through different songs and will definitely very practical for me.
|
||||
|
||||
## Challenges
|
||||
My biggest challenge in this project was definitely designing the pcb, beacuse I have never done something like this before. Luckily I have already wired up microcontrollers on breadboards, so I had some similar experience before.
|
||||
Nevertheless, it was very interesting to learn that too, because I lilke learning various new things very much!
|
||||
|
||||
## Specifications
|
||||
|
||||
BOM:
|
||||
- 1x Seeed XIAO RP2040
|
||||
- 4x MX-Style switches
|
||||
- 1x 0.96 inch OLED display
|
||||
- 4x Blank DSA keycaps (white)
|
||||
- 1x EC11E Rotary Encoder
|
||||
- 7x SK6812 MINI-E LEDs
|
||||
- 1x Case (if possible in acrylic red)
|
||||
|
||||
Other:
|
||||
- KMK Firmware
|
||||
- Top.stl
|
||||
- Bottom.stl
|
||||
|
||||
| Schematics | PCB | Case |
|
||||
|------------|-----|------|
|
||||
|  |  |  <br>  |
|
||||
Loading…
Add table
Reference in a new issue