mirror of
https://github.com/System-End/hackpad.git
synced 2026-04-20 00:35:24 +00:00
updated site to add hackpad v2 technical base, filling in documentation
This commit is contained in:
parent
f778e8050b
commit
2652fa0b68
19 changed files with 428 additions and 54 deletions
|
|
@ -24,6 +24,226 @@
|
|||
"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",
|
||||
"different_unit_footprint": "error",
|
||||
"different_unit_net": "error",
|
||||
"duplicate_reference": "error",
|
||||
"duplicate_sheet_names": "error",
|
||||
"endpoint_off_grid": "warning",
|
||||
"extra_units": "error",
|
||||
"footprint_filter": "ignore",
|
||||
"footprint_link_issues": "warning",
|
||||
"four_way_junction": "ignore",
|
||||
"global_label_dangling": "warning",
|
||||
"hier_label_mismatch": "error",
|
||||
"label_dangling": "error",
|
||||
"label_multiple_wires": "warning",
|
||||
"lib_symbol_issues": "warning",
|
||||
"lib_symbol_mismatch": "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",
|
||||
"same_local_global_label": "warning",
|
||||
"similar_label_and_power": "warning",
|
||||
"similar_labels": "warning",
|
||||
"similar_power": "warning",
|
||||
"simulation_model_issue": "ignore",
|
||||
"single_global_label": "ignore",
|
||||
"unannotated": "error",
|
||||
"unconnected_wire_endpoint": "warning",
|
||||
"unit_value_mismatch": "error",
|
||||
"unresolved_variable": "error",
|
||||
"wire_dangling": "error"
|
||||
}
|
||||
},
|
||||
"libraries": {
|
||||
"pinned_footprint_libs": [],
|
||||
"pinned_symbol_libs": []
|
||||
|
|
@ -75,8 +295,117 @@
|
|||
"page_layout_descr_file": ""
|
||||
},
|
||||
"schematic": {
|
||||
"annotate_start_num": 0,
|
||||
"bom_export_filename": "${PROJECTNAME}.csv",
|
||||
"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": false,
|
||||
"label": "Qty",
|
||||
"name": "${QUANTITY}",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": true,
|
||||
"label": "Value",
|
||||
"name": "Value",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": true,
|
||||
"label": "DNP",
|
||||
"name": "${DNP}",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": true,
|
||||
"label": "Exclude from BOM",
|
||||
"name": "${EXCLUDE_FROM_BOM}",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": true,
|
||||
"label": "Exclude from Board",
|
||||
"name": "${EXCLUDE_FROM_BOARD}",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": true,
|
||||
"label": "Footprint",
|
||||
"name": "Footprint",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": false,
|
||||
"label": "Datasheet",
|
||||
"name": "Datasheet",
|
||||
"show": true
|
||||
}
|
||||
],
|
||||
"filter_string": "",
|
||||
"group_symbols": true,
|
||||
"include_excluded_from_bom": true,
|
||||
"name": "Default Editing",
|
||||
"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": []
|
||||
"legacy_lib_list": [],
|
||||
"meta": {
|
||||
"version": 1
|
||||
},
|
||||
"net_format_name": "",
|
||||
"page_layout_descr_file": "",
|
||||
"plot_directory": "",
|
||||
"space_save_all_events": true,
|
||||
"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": [],
|
||||
"text_variables": {}
|
||||
|
|
|
|||
|
|
@ -1 +0,0 @@
|
|||
{"hostname":"labrat","username":"qcoral"}
|
||||
|
|
@ -125,7 +125,7 @@ export default function App() {
|
|||
<div>
|
||||
<ul className="list-disc max-w-96 space-y-2 pb-2">
|
||||
<li>
|
||||
The overall design uses 20 or less inputs/switches. This
|
||||
The overall design uses 16 or less inputs/switches. This
|
||||
includes rotary encoders!
|
||||
</li>
|
||||
|
||||
|
|
|
|||
|
|
@ -33,6 +33,11 @@ const SideBar = () => {
|
|||
FAQ
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/keyboard" className="block py-2 px-4 rounded hover:bg-slate-200 transition-all text-red-800 hover:text-red-700">
|
||||
Make a keyboard
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</aside>
|
||||
|
|
|
|||
27
website/src/components/SideBarKeyboard.tsx
Normal file
27
website/src/components/SideBarKeyboard.tsx
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
const SideBarKeyboard = () => {
|
||||
return (
|
||||
<aside className= "bg-slate-100 space-y-2 max-w-prose p-4 h-screen border-r-4 border-slate-500 border-dashed">
|
||||
<nav>
|
||||
<ul>
|
||||
<li>
|
||||
<a href="/keyboard" className="block py-2 px-4 rounded hover:bg-slate-200 transition-all text-slate-900 hover:text-cyan-800">
|
||||
Keyboard Overview
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/keyboard/faq" className="block py-2 px-4 rounded hover:bg-slate-200 transition-all text-slate-900 hover:text-cyan-800">
|
||||
FAQ v2
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/guide" className="block py-2 px-4 rounded hover:bg-slate-200 transition-all text-red-800 hover:text-red-700">
|
||||
Back to macropads
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</aside>
|
||||
);
|
||||
};
|
||||
|
||||
export default SideBarKeyboard;
|
||||
|
|
@ -1,7 +1,6 @@
|
|||
import SideBar from "../components/SideBar.tsx";
|
||||
import OrpheusFlag from "/OrpheusFlag.svg";
|
||||
|
||||
const DocPage = ({ Content }: { Content: any }) => {
|
||||
const DocPage = ({ Content, SideBar }: { Content: any; SideBar: any }) => {
|
||||
return (
|
||||
<div className="flex flex-col min-h-screen">
|
||||
{/* Header */}
|
||||
|
|
@ -33,7 +32,6 @@ const DocPage = ({ Content }: { Content: any }) => {
|
|||
</header>
|
||||
|
||||
<div className="flex flex-1 pt-16">
|
||||
{/* Sidebar */}
|
||||
<aside className="hidden sm:block w-48 fixed top-16 h-full">
|
||||
<SideBar />
|
||||
</aside>
|
||||
|
|
|
|||
|
|
@ -2,16 +2,20 @@ import { StrictMode } from "react";
|
|||
import { createRoot } from "react-dom/client";
|
||||
import App from "./App.tsx";
|
||||
|
||||
import Tutorial from "./pages/Tutorial.mdx";
|
||||
import Submission from "./pages/Submission.mdx";
|
||||
import ApprovedParts from "./pages/ApprovedParts.mdx";
|
||||
import Faq from "./pages/Faq.mdx";
|
||||
import Braindump from "./pages/Braindump.mdx"
|
||||
import Resources from "./pages/Resources.mdx"
|
||||
import ResearchNote from "./pages/ResearchNote.mdx"
|
||||
import GetKeycap from "./pages/GetKeycap.mdx"
|
||||
import Tutorial from "./pages/hackpad/Tutorial.mdx";
|
||||
import Submission from "./pages/hackpad/Submission.mdx";
|
||||
import ApprovedParts from "./pages/hackpad/ApprovedParts.mdx";
|
||||
import Faq from "./pages/hackpad/Faq.mdx";
|
||||
import Braindump from "./pages/hackpad/Braindump.mdx"
|
||||
import Resources from "./pages/hackpad/Resources.mdx"
|
||||
import GetKeycap from "./pages/hackpad/GetKeycap.mdx"
|
||||
|
||||
import Overview from "./pages/hackboard/Overview.mdx"
|
||||
import Faq2 from "./pages/hackboard/Faq2.mdx"
|
||||
|
||||
import DocPage from "./layouts/DocPage.tsx";
|
||||
import SideBarKeyboard from "./components/SideBarKeyboard.tsx";
|
||||
import SideBar from "./components/SideBar.tsx";
|
||||
import { createBrowserRouter, RouterProvider } from "react-router-dom";
|
||||
import "./index.css";
|
||||
|
||||
|
|
@ -29,50 +33,54 @@ const router = createBrowserRouter([
|
|||
{
|
||||
path: "/guide",
|
||||
element: (
|
||||
<DocPage Content={Tutorial} />
|
||||
<DocPage Content={Tutorial} SideBar={ SideBar } />
|
||||
),
|
||||
},
|
||||
{
|
||||
path: "/submitting",
|
||||
element: <DocPage Content={Submission} />,
|
||||
element: <DocPage Content={Submission} SideBar={ SideBar } />,
|
||||
},
|
||||
{
|
||||
path: "/parts",
|
||||
element: <DocPage Content={ ApprovedParts } />,
|
||||
element: <DocPage Content={ ApprovedParts } SideBar={ SideBar } />,
|
||||
},
|
||||
{
|
||||
path: "/faq",
|
||||
element: <DocPage Content={ Faq } />,
|
||||
element: <DocPage Content={ Faq } SideBar={ SideBar } />,
|
||||
},
|
||||
{
|
||||
path: "/braindump",
|
||||
element: <DocPage Content={ Braindump } />,
|
||||
element: <DocPage Content={ Braindump } SideBar={ SideBar } />,
|
||||
},
|
||||
{
|
||||
path: "/resources",
|
||||
element: <DocPage Content={ Resources } />,
|
||||
},
|
||||
{
|
||||
path: "/note",
|
||||
element: <DocPage Content={ ResearchNote } />,
|
||||
element: <DocPage Content={ Resources } SideBar={ SideBar } />,
|
||||
},
|
||||
{
|
||||
path: "/get-keycap",
|
||||
element: <DocPage Content={ GetKeycap } />,
|
||||
element: <DocPage Content={ GetKeycap } SideBar={ SideBar } />,
|
||||
},
|
||||
{
|
||||
path: "/keyboard",
|
||||
element: <DocPage Content={ Overview } SideBar={ SideBarKeyboard } />,
|
||||
},
|
||||
{
|
||||
path: "/keyboard/faq",
|
||||
element: <DocPage Content={ Faq2 } SideBar={ SideBarKeyboard } />,
|
||||
},
|
||||
|
||||
// Submitting? Great! Do something like this:
|
||||
{
|
||||
path: "/projects/orpheuspad",
|
||||
element: <DocPage Content={ OrpheusPad } />
|
||||
element: <DocPage Content={ OrpheusPad } SideBar={ SideBar } />
|
||||
},
|
||||
{
|
||||
path: "/projects/cyaopad",
|
||||
element: <DocPage Content={ CyaoPad } />
|
||||
element: <DocPage Content={ CyaoPad } SideBar={ SideBar } />
|
||||
},
|
||||
{
|
||||
path: "/projects/wang01",
|
||||
element: <DocPage Content={ Wang01 } />
|
||||
element: <DocPage Content={ Wang01 } SideBar={ SideBar } />
|
||||
}
|
||||
]);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,24 +0,0 @@
|
|||
# List of approved parts for macro pads
|
||||
|
||||
Here is the list of approved parts!! If there's anything you think should be here please send it in #hackpad!
|
||||
|
||||
|
||||
## Parts at HQ
|
||||
- Seeed XIAO RP2040 through-hole [MANDATORY TO INCLUDE]
|
||||
- 1N4148 Diodes (through hole)
|
||||
- MX-Style switches (Max 16x)
|
||||
- EC11 Rotary encoders (Max 2x)
|
||||
- 0.91 inch or 0.96 inch OLED displays (Max 1x)
|
||||
- Blank DSA keycaps (Red, Black, White)
|
||||
- SK6812-E LEDs (Max 16x)
|
||||
|
||||
### Switches
|
||||
- Any Cherry MX-style switch $0.55/each or less, case-by-case basis. Run it by me first
|
||||
|
||||
### Other parts
|
||||
- Propose your additional parts in your Hackpad PR! We will judge your submission based on effort and grant you these parts if deemed worthy.
|
||||
|
||||
|
||||
# List of approved parts for full keyboards
|
||||
|
||||
alex pls write stuff here idk what the reqs are
|
||||
1
website/src/pages/hackboard/Faq2.mdx
Normal file
1
website/src/pages/hackboard/Faq2.mdx
Normal file
|
|
@ -0,0 +1 @@
|
|||
# FAQ (Frequently asked questions)
|
||||
3
website/src/pages/hackboard/Overview.mdx
Normal file
3
website/src/pages/hackboard/Overview.mdx
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
# Make a full keyboard
|
||||
|
||||
Well hello there stranger Se
|
||||
19
website/src/pages/hackpad/ApprovedParts.mdx
Normal file
19
website/src/pages/hackpad/ApprovedParts.mdx
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
# List of approved parts
|
||||
|
||||
Here is the list of approved parts! If there's anything you think should be here, please send it in #hackpad and let me know!
|
||||
|
||||
|
||||
## The list:
|
||||
|
||||
- Seeed XIAO RP2040 - make sure you're designing with a through-hole footprint.
|
||||
- Through-hole 1N4148 Diodes
|
||||
- MX-Style switches (Max 16x)
|
||||
- EC11 Rotary encoders (Max 2x)
|
||||
- 0.91 inch or 0.96 inch OLED displays (Max 1x)
|
||||
- Blank DSA keycaps (Red, Black, White)
|
||||
- SK6812 MINI-E LEDs (Max 16x)
|
||||
|
||||
|
||||
### Parts outside of the above
|
||||
If you're looking to make something with the parts
|
||||
|
||||
4
website/src/pages/hackpad/Design tips
Normal file
4
website/src/pages/hackpad/Design tips
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
# Design tips
|
||||
|
||||
|
||||
## Working away at your hackpad?? awesomejob
|
||||
|
|
@ -18,4 +18,8 @@ You can request between white, black, and red keycaps, although they will not be
|
|||
**I have further questions!** \
|
||||
Join the #hackpad channel in the Hack Club slack!
|
||||
|
||||
**Do I *have* to make a macropad before a keyboard?** \
|
||||
|
||||
Yes!
|
||||
|
||||
|
||||
|
|
@ -22,9 +22,10 @@ Additionally, make sure you meet the following requirements:
|
|||
- Your design uses a through-hole Seeed XIAO RP2040 as the main MCU
|
||||
- Your PCB is smaller or equal to 100mmx100mm
|
||||
- Your case fits within 200x200x100mm (x / y / z)
|
||||
- You have less than 20 inputs (switches, encoders, etc)
|
||||
- Your parts have been approved by me
|
||||
- You have less than 16 inputs (switches, encoders, etc)
|
||||
- You are using approved parts only
|
||||
- The PCB only uses 2 layers
|
||||
- Your case only has 3D printed parts
|
||||
|
||||
If you have all of that, it should be ready to go!
|
||||
|
||||
Loading…
Add table
Reference in a new issue