|
3 | 3 | A column staggered ortholinear keyboard powered by raspberry pi pico running rust. |
4 | 4 |  |
5 | 5 |
|
6 | | -### Bulding the firmware: |
| 6 | +## Features |
| 7 | +- Mouse Input |
| 8 | +- Multiple layers |
| 9 | +- 1 kHz polling rate |
| 10 | +- One-shot modifiers |
| 11 | + |
| 12 | +## Bulding the firmware |
| 13 | +Pre-built `uf2` is available at [tbd] |
| 14 | +Otherwise to build from source: |
7 | 15 | 1. Install [rust](https://rust-lang.org) |
8 | | -2. Download the toolchain for the `thumbv6-none-eabi`(ARM Cortex-M0+) target\ |
| 16 | +2. Download the toolchain for the `thumbv6-none-eabi`(ARM Cortex-M0+) target |
9 | 17 | `rustup target add thumbv6-none-eabi` |
10 | | -3. Build the firmware elf\ |
11 | | - `cargo build` |
12 | | -4. Converting elf to uf2 using [elf2uf2-rs](https://github.com/JoNil/elf2uf2-rs)\ |
13 | | - `cargo install elf2uf2-rs`\ |
14 | | - `elf2uf2-rs target/thumbv6-none-eabi/release/egboard out.uf2` |
15 | | -5. A new `out.uf2` file should be created |
16 | | - |
17 | | -### Hardware: |
| 18 | +3. Build the firmware elf |
| 19 | + `cargo build --release` |
| 20 | +4. Converting elf to uf2 using [elf2uf2-rs](https://github.com/JoNil/elf2uf2-rs) |
| 21 | + `cargo install elf2uf2-rs` |
| 22 | + `elf2uf2-rs target/thumbv6-none-eabi/release/egboard egboard.uf2` |
| 23 | +5. A new `egboard.uf2` file should be created |
| 24 | + |
| 25 | +### Uploading the uf2 to pico: |
| 26 | +1. Enter the pico into bootloader mode by holding the `Bootsel` button |
| 27 | +2. Mount the pico's mass storage to the PC's file system (should be done automatically in most Operating Systems) |
| 28 | +3. Copy the `firmware.uf2` file to the mounted location |
| 29 | + |
| 30 | +## Hardware |
18 | 31 |
|
19 | 32 | The hardware files required to generate the top and bottom plates can be found [here](https://github.com/ArchUsr64/egboard/tree/main/files/hardware) |
20 | 33 |
|
21 | | -#### Parts required: |
| 34 | +### Parts required: |
22 | 35 | | Part | Quantity | Description | |
23 | 36 | | - | - | - | |
24 | 37 | | Raspberry Pi Pico | 1 | Microcontroller that powers the whole thing | |
25 | 38 | | M3 screw | 36 | Used to mount the top and bottom plates together | |
26 | 39 | | M2 screw | 4 | Used to mount the raspberry pi pico to the top plate | |
27 | 40 | | M3 standoff | 18 | Provide spacing between the top and bottom plate to house the electronics | |
28 | | -| Switch | 38 | Key switches mounted to the top plate | |
| 41 | +| Switch | 38 | Key switches mounted to the top plate (both 3-pin and 5-pin work)| |
29 | 42 | | Keycaps | 38 | Keycaps for the switches | |
30 | 43 | | Diodes | 38 | Required to achieve n-key rollover | |
31 | 44 | | USB Cable | 1 | Used to connect the pico to the computer | |
32 | 45 | | Bump Switch (optional) | 1 | Used to get the board to bootloader mode | |
33 | 46 |
|
34 | | -### Project report: |
35 | | -View on [google docs](https://docs.google.com/document/d/e/2PACX-1vQndY82YCXaxrvmDw9xcZhzOaJTsP58XWRm1BeVet43TQnjNqOJDFl5XpR4vhXsUciPnCYtNsxyYR8w/pub) |
36 | 47 |
|
37 | | -### Typing Test: |
| 48 | +### Matrix Layout: |
| 49 | +Connect the switches in a `10x4` matrix with the following layout: |
| 50 | + |
| 51 | + |
| 52 | + |
| 53 | +**NOTE:** The above picture shows the layout from top side, flip it horizontally when doing the wiring with the board upside down. |
| 54 | + |
| 55 | +### Wiring: |
| 56 | +The diodes should be connected in `Column to Row` ordering i.e the `cathode` of the diode (the side with the line) should be facing away from the keys and the `cathode` of the diodes in same row should all be connected. |
| 57 | +The `anode` of the diodes should each connect to one pin of the switch and the other pin should be connected straight with all the pins of switches in same column. |
| 58 | +For wiring the Raspberry Pi Pico, the indexing used in wiring diagram above correspond to the pico's pinout as follows: |
38 | 59 |
|
39 | 60 |
|
| 61 | +| Row | 0 | 1 | 2 | 3 | |
| 62 | +| - | - | - | - | - | |
| 63 | +| Pin | 0 | 1 | 2 | 3 | |
| 64 | + |
| 65 | + |
| 66 | +| Column | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | |
| 67 | +| - | - | - | - | - | - | - | - | - | - | - | |
| 68 | +| Pin | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | |
| 69 | + |
| 70 | +## Keymap configuration |
| 71 | +The keymap for the board is specified in [`default_keymap.rs`](https://github.com/ArchUsr64/egboard/blob/main/src/default_keymap.rs) file. |
| 72 | +Each `Keymap` can include upto 256 `Layers` which are added using the `add_layer` method. |
| 73 | +Each `Layer` comprises of a 30 element array for the finger cluster and 8 element array for the thumb clusters. |
| 74 | + |
| 75 | +### Provided default keymap |
| 76 | +#### Layer 0 |
| 77 | + |
| 78 | +#### Layer 1 |
| 79 | + |
| 80 | +#### Layer 2 |
| 81 | + |
| 82 | +#### Layer 3 |
| 83 | + |
| 84 | + |
| 85 | +## Typing Test: |
40 | 86 | https://github.com/ArchUsr64/egboard/assets/83179501/e7029c53-4c0d-4cbe-ae44-c0f4a8198730 |
41 | 87 |
|
42 | | -<iframe src="https://docs.google.com/document/d/e/2PACX-1vQndY82YCXaxrvmDw9xcZhzOaJTsP58XWRm1BeVet43TQnjNqOJDFl5XpR4vhXsUciPnCYtNsxyYR8w/pub?embedded=true"></iframe> |
| 88 | +## Project report: |
| 89 | +View on [google docs](https://docs.google.com/document/d/e/2PACX-1vQndY82YCXaxrvmDw9xcZhzOaJTsP58XWRm1BeVet43TQnjNqOJDFl5XpR4vhXsUciPnCYtNsxyYR8w/pub) |
0 commit comments