updated site to add hackpad v2 technical base, filling in documentation

This commit is contained in:
Alex Ren 2025-01-28 16:15:35 -05:00
parent f778e8050b
commit 2652fa0b68
19 changed files with 428 additions and 54 deletions

View file

@ -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": {}

View file

@ -1 +0,0 @@
{"hostname":"labrat","username":"qcoral"}

View file

@ -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>

View file

@ -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>

View 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;

View file

@ -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>

View file

@ -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 } />
}
]);

View file

@ -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

View file

@ -0,0 +1 @@
# FAQ (Frequently asked questions)

View file

@ -0,0 +1,3 @@
# Make a full keyboard
Well hello there stranger Se

View 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

View file

@ -0,0 +1,4 @@
# Design tips
## Working away at your hackpad?? awesomejob

View file

@ -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!

View file

@ -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!