feat: Add wasdup_pad from Jayden295

That's my hackpad!
This commit is contained in:
Jayden 2025-02-16 13:50:13 +01:00
parent 769de8429b
commit 3709d338bd
No known key found for this signature in database
GPG key ID: 075DCC6B5CC6258B
38 changed files with 194765 additions and 0 deletions

View file

@ -0,0 +1,15 @@
# Bill Of Materials for wasdup_pad
## The big parts
- 1x Case (2 printed parts)
- 1x PCB of the keyboard
## For the PCB
- 1x XIAO RP2040
- 4x 3.5x3.5mm LED
- 2x 4.7kΩ horizontal resistors
- 2x 6mm Push button
- 4x Cherry MX switches
- 1x 0.96" 128x64 OLED Display

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,38 @@
# SSD1306 128x64 for kicad [![License: CC BY-NC-SA 4.0](https://img.shields.io/badge/License-CC%20BY--NC--SA%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by-nc-sa/4.0/) [![GitHub All Releases](https://img.shields.io/github/downloads/pforrmi/SSD1306-128x64-kicad/total.svg)](https://github.com/pforrmi/SSD1306-128x64-kicad/releases)
Kicad footprints and templates for [SSD1306 128x64px OLED Display*](https://amzn.to/2YUHoEB).
<img src="https://github.com/pforrmi/SSD1306-128x64-kicad/blob/master/images/ssd1306_3d.jpg" width=500>
https://www.kicad.org
## SSD1306 as a component
You can use the SSD1306 as a module of a bigger kicad PCB project.
### for eeschema
`library/SSD1306-128x64_OLED.lib` can be used as a component in your design.
To add it to eeschema:
* Preferences
* Components libraries
* add
* navigate to the `SSD1306-128x64_OLED.lib` file
### for pcbnew
`library/SSD1306.pretty` contains a footprint of the SSD1306 module for your PCB.
To add it to pcbnew:
* Preferences
* Footprint library manager
* Project Specific Libraries
* Append with Wizard
* navigate to `SSD1306.pretty`
### Further information may be found at https://ownsmarthome.de
_The links marked with an asterisk (*) are commission links or advertising._

File diff suppressed because it is too large Load diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,8 @@
EESchema-DOCLIB Version 2.0
#
$CMP SSD1306
D SSD1306 OLED
K SSD1306
$ENDCMP
#
#End Doc Library

View file

@ -0,0 +1,49 @@
(kicad_symbol_lib (version 20220914) (generator kicad_symbol_editor)
(symbol "SSD1306" (pin_names (offset 1.016)) (in_bom yes) (on_board yes)
(property "Reference" "Brd" (at 0 -3.81 0)
(effects (font (size 1.27 1.27)))
)
(property "Value" "SSD1306" (at 0 -1.27 0)
(effects (font (size 1.27 1.27)))
)
(property "Footprint" "" (at 0 6.35 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "Datasheet" "" (at 0 6.35 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "ki_keywords" "SSD1306" (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "ki_description" "SSD1306 OLED" (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "ki_fp_filters" "SSD1306-128x64_OLED:SSD1306" (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(symbol "SSD1306_0_1"
(rectangle (start -6.35 6.35) (end 6.35 -6.35)
(stroke (width 0) (type solid))
(fill (type background))
)
)
(symbol "SSD1306_1_1"
(pin input line (at -3.81 8.89 270) (length 2.54)
(name "GND" (effects (font (size 1.27 1.27))))
(number "1" (effects (font (size 1.27 1.27))))
)
(pin input line (at -1.27 8.89 270) (length 2.54)
(name "VCC" (effects (font (size 1.27 1.27))))
(number "2" (effects (font (size 1.27 1.27))))
)
(pin input line (at 1.27 8.89 270) (length 2.54)
(name "SCL" (effects (font (size 1.27 1.27))))
(number "3" (effects (font (size 1.27 1.27))))
)
(pin input line (at 3.81 8.89 270) (length 2.54)
(name "SDA" (effects (font (size 1.27 1.27))))
(number "4" (effects (font (size 1.27 1.27))))
)
)
)
)

View file

@ -0,0 +1,23 @@
EESchema-LIBRARY Version 2.4
#encoding utf-8
#
# SSD1306
#
DEF SSD1306 Brd 0 40 Y Y 1 F N
F0 "Brd" 0 -150 50 H V C CNN
F1 "SSD1306" 0 -50 50 H V C CNN
F2 "" 0 250 50 H I C CNN
F3 "" 0 250 50 H I C CNN
$FPLIST
SSD1306-128x64_OLED:SSD1306
$ENDFPLIST
DRAW
S -250 250 250 -250 0 1 0 f
X GND 1 -150 350 100 D 50 50 1 1 I
X VCC 2 -50 350 100 D 50 50 1 1 I
X SCL 3 50 350 100 D 50 50 1 1 I
X SDA 4 150 350 100 D 50 50 1 1 I
ENDDRAW
ENDDEF
#
#End Library

View file

@ -0,0 +1,51 @@
(footprint "128x64OLED" (version 20221018) (generator pcbnew)
(layer "F.Cu")
(attr through_hole)
(fp_text reference "SSD1306" (at 0 0.254) (layer "F.SilkS")
(effects (font (size 1 1) (thickness 0.15)))
(tstamp 3bac896d-a110-46ef-8d36-d58bd0db7edd)
)
(fp_text value "128x64OLED" (at -7.747 -7.62) (layer "F.Fab")
(effects (font (size 1 1) (thickness 0.15)))
(tstamp 4e33fe8b-69ef-4d6a-ac01-a563d36af128)
)
(fp_line (start -13.4 -12.3) (end 14 -12.3)
(stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 74d08169-d5a6-455c-a177-f5f97e14ab75))
(fp_line (start -13.4 15) (end -13.4 -12.3)
(stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 507a4cb1-8b9e-4c59-b4b2-5b2119083947))
(fp_line (start -12.978 -9.005) (end 10.122 -9.005)
(stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 7ae4370a-2573-4fce-8301-2e26fb983e6b))
(fp_line (start -12.978 7.595) (end -12.978 -9.005)
(stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 8ad3f653-c1e9-4039-8c1b-96478b3a0113))
(fp_line (start -4.699 -11.811) (end -4.699 -9.398)
(stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp a3005c65-88d9-4383-b50a-10aaface0073))
(fp_line (start -4.699 -11.811) (end 5.08 -11.811)
(stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 6695dbce-d114-46fd-98f0-e82405720ca4))
(fp_line (start 5.08 -11.811) (end 5.08 -9.398)
(stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 5526a829-3106-4d4d-a210-d18b3c2b4845))
(fp_line (start 5.08 -9.398) (end -4.699 -9.398)
(stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 487efdb8-ca59-4fa6-8e3a-776db43e93ee))
(fp_line (start 10.122 -9.005) (end 13.208 -9.005)
(stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 627a3c1b-f3a0-463e-8113-46ddfb9fcf9d))
(fp_line (start 10.122 7.595) (end -12.978 7.595)
(stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 72821cbe-993a-4857-a475-aa748038e6e4))
(fp_line (start 10.122 7.595) (end 13.462 7.62)
(stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 88df7c56-1ac3-44fa-9048-962e3b9429ac))
(fp_line (start 13.462 -9.017) (end 13.208 -9.005)
(stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 4b7ffa64-75a4-43aa-9265-ab3aa27480d8))
(fp_line (start 13.462 7.62) (end 13.462 -9.017)
(stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 4f1e4448-1e56-4221-8974-cb3ffc49bc35))
(fp_line (start 14 -12.3) (end 14 15)
(stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp b0ea6666-5ac3-49a2-a917-aebdd00fac1a))
(fp_line (start 14 15) (end -13.4 15)
(stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp dc197ead-21da-4061-9d46-e24a8ec6fc5d))
(pad "1" thru_hole oval (at -3.62 -10.6 90) (size 2 1.6) (drill 1) (layers "*.Cu" "*.Mask") (tstamp dad71929-e0b1-423d-9e53-669857187ec7))
(pad "2" thru_hole oval (at -1.08 -10.6 90) (size 2 1.6) (drill 1) (layers "*.Cu" "*.Mask") (tstamp 1edaf747-6bd9-40ab-ae6c-8c118c5eeb41))
(pad "3" thru_hole oval (at 1.46 -10.6 90) (size 2 1.6) (drill 1) (layers "*.Cu" "*.Mask") (tstamp 4668c4ae-b799-49c9-9b26-84e7a5c88299))
(pad "4" thru_hole oval (at 4 -10.6 90) (size 2 1.6) (drill 1) (layers "*.Cu" "*.Mask") (tstamp 8745ae29-da85-4063-a1e5-a6341e1a5167))
(model "${KIPRJMOD}/third_party/KiCad-SSD1306-128x64-master/SSD1306_OLED_Display(128x64).step"
(offset (xyz 0.2 -1.25 2.5))
(scale (xyz 1 1 1))
(rotate (xyz 0 0 0))
)
)

@ -0,0 +1 @@
Subproject commit e061eb5cff70caf5aa39b7672edf533b7647f66a

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,5 @@
(fp_lib_table
(version 7)
(lib (name "OPL")(type "KiCad")(uri "${KIPRJMOD}/OPL_Kicad_Library/Seeed Studio XIAO Series Library")(options "")(descr ""))
(lib (name "OLED_V2")(type "KiCad")(uri "${KIPRJMOD}/KiCad-SSD1306-128x64/library/SSD1306.pretty")(options "")(descr ""))
)

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,83 @@
{
"board": {
"active_layer": 31,
"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": true,
"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": "hackpad.kicad_prl",
"version": 3
},
"project": {
"files": []
}
}

View file

@ -0,0 +1,604 @@
{
"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_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": "hackpad.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/pcb-gerbers/",
"pos_files": "",
"specctra_dsn": "",
"step": "hackpad.step",
"svg": "",
"vrml": "hackpad.wrl"
},
"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": "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": "",
"ngspice": {
"fix_include_paths": true,
"meta": {
"version": 0
},
"model_mode": 4,
"workbook_filename": ""
},
"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": [
[
"0fd283cb-8c2d-42f1-8790-3a20aa44ed2d",
"Stammblatt"
]
],
"text_variables": {}
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,5 @@
(sym_lib_table
(version 7)
(lib (name "OPL")(type "KiCad")(uri "${KIPRJMOD}/OPL_Kicad_Library/Seeed Studio XIAO Series Library/Seeed_Studio_XIAO_Series.kicad_sym")(options "")(descr ""))
(lib (name "OLED_V2")(type "KiCad")(uri "${KIPRJMOD}/KiCad-SSD1306-128x64/library/SSD1306-128x64_OLED.kicad_sym")(options "")(descr ""))
)

View file

@ -0,0 +1,71 @@
# wasdup-pad
[Project repository](https://codeberg.org/Jayden295/wasdup-pad)
![Full case with the PCB inside](./assets/full-case.webp)
My first keyboard, made with the WASD keys. It has a OLED 0.96" screen,
two buttons, and 4 LEDs.
It was made for/I used the [Hackpad guides](https://hackpad.hackclub.com/advancedguide)
to make this.
A little bit rushed, because I didn't manage the deadlines well and started working on
this one week before it ended.
[BOM available here.](./BOM.md)
## the keyboard
### PCB
![PCB schematic](./assets/schematic.webp)
I think that one issue with my schematic is that the LED's are
connected together so they will continously display the same thing...
![The PCB itself](./assets/PCB.webp)
This PCB/schematic was made using KiCad, I removed the ground plane from the
PCB picture so that you can see the circuits more easily. The real PCB still
has the ground plane.
### CAD model
![Upper plate of the case](./assets/upper-plate.webp)
I think that I might have done something wrong with the upper plate, since
when I look at it on the top it seems a bit misaligned, I hope it will be fine
though.
![Bottom plate of the case](./assets/bottom-case.webp)
![Full case with the PCB inside](./assets/full-case.webp)
The whole case has been made using FreeCAD (yay free software!).
### "behind the scenes"
So, I started this project a week before the deadline (I started it on the 9th february,
deadline was 16th february), and submitted it the day that it the deadline passed
(16th february).
This didn't leave me much time to make this, and thus there are some issues here and there,
it's not the most polished thing ever. This was quite interesting, it forced me to learn
by forcing me to do things even though I didn't think this was the "best" way to do it.
1 day before the deadline, when I had the PCB and CAD almost done, I got another idea for
the hackpad, instead of it just being WASD keys (how unoriginal), I wanted to make it
like a sound player control (control the audio of microphone/pc, next/previous buttons,
pause button, oled screen to say current music).
Unfortunately, I didn't have enough time to finish that and decided I had to continue with
the current idea.
You might be wondering why I started this so late, it was in my todolist, however, I didn't
manage the deadlines very well (basically focused on raspapi that must be finished before march
instead of that).
However, I think that for the hackpad keyboard, I will have enough time and will take time
to make sure it's as polished as possible.

Binary file not shown.

After

Width:  |  Height:  |  Size: 165 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 131 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

View file

@ -0,0 +1,4 @@
#define LED_PIN GP0
#define LED_POLARITY 0 // Active low (I have no idea if that's active low, but not taking risks)
// #define LED_POLARITY 1 // Active high

View file

@ -0,0 +1,41 @@
{
"manufacturer": "Jayden295",
"keyboard_name": "wasdup_pad",
"maintainer": "Jayden295",
"bootloader": "rp2040",
"diode_direction": "COL2ROW",
"features": {
"bootmagic": true,
"command": false,
"console": false,
"extrakey": true,
"mousekey": true,
"nkro": true
},
"matrix_pins": {
"direct": [
["GP26", null, "GP27"],
[null, "GP1", null],
["GP2", "GP3", "GP4"]
]
},
"processor": "RP2040",
"url": "",
"usb": {
"device_version": "1.0.0",
"pid": "0x0000",
"vid": "0xFEED"
},
"layouts": {
"LAYOUT": {
"layout": [
{ "matrix": [0, 0], "x": 0, "y": 0 },
{ "matrix": [0, 2], "x": 0, "y": 2 },
{ "matrix": [1, 1], "x": 1, "y": 1 },
{ "matrix": [2, 0], "x": 2, "y": 1 },
{ "matrix": [2, 1], "x": 2, "y": 2 },
{ "matrix": [2, 2], "x": 2, "y": 3 }
]
}
}
}

View file

@ -0,0 +1,47 @@
#include QMK_KEYBOARD_H
enum layer_names {
_BASE,
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
*
* PB_1 PB_2
*
* W
*
* A S D
*
*/
[_BASE] = LAYOUT(
PB_1, PB_2,
KC_W,
KC_A, KC_S, KC_D
)
};
#ifdef OLED_ENABLE
bool oled_task_user(void) {
// Host Keyboard Layer Status
oled_write_P(PSTR("Layer: "), false);
switch (get_highest_layer(layer_state)) {
case _BASE:
oled_write_P(PSTR("Default\n"), false);
break;
default:
// Or use the write_ln shortcut over adding '\n' to the end of your string
oled_write_ln_P(PSTR("Undefined"), false);
}
// Host Keyboard LED Status
led_t led_state = host_keyboard_led_state();
oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false);
oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false);
oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
return false;
}
#endif

View file

@ -0,0 +1,27 @@
# wasdup_pad
![wasdup_pad](imgur.com image replace me!)
A firmware for the wasdup_pad keyboard.
* Keyboard Maintainer: [Jayden295](https://github.com/Jayden295)
* Hardware Supported: wasdup_pad keyboard
* Hardware Availability: https://codeberg.org/Jayden295/wasdup-pad
Make example for this keyboard (after setting up your build environment):
make wasdup_pad:default
Flashing example for this keyboard:
make wasdup_pad:default:flash
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
## Bootloader
Enter the bootloader in 3 ways:
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available

View file

@ -0,0 +1,10 @@
# the oled screen
OLED_ENABLE = yes
OLED_DRIVER = ssd1306
OLED_TRANSPORT = i2c
# for the individual small buttons
PROGRAMMABLE_BUTTON_ENABLE = yes
# required for rp2040
LTO_ENABLE = yes

Binary file not shown.

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

Binary file not shown.