Skip to content

Commit 9c65549

Browse files
authored
Update README.md
1 parent 7d3c5f7 commit 9c65549

File tree

1 file changed

+63
-16
lines changed

1 file changed

+63
-16
lines changed

README.md

Lines changed: 63 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,40 +3,87 @@
33
A column staggered ortholinear keyboard powered by raspberry pi pico running rust.
44
![top](https://github.com/ArchUsr64/egboard/assets/83179501/86e5122f-7d14-4ca2-91a6-49251adbade7)
55

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:
715
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
917
`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
1831

1932
The hardware files required to generate the top and bottom plates can be found [here](https://github.com/ArchUsr64/egboard/tree/main/files/hardware)
2033

21-
#### Parts required:
34+
### Parts required:
2235
| Part | Quantity | Description |
2336
| - | - | - |
2437
| Raspberry Pi Pico | 1 | Microcontroller that powers the whole thing |
2538
| M3 screw | 36 | Used to mount the top and bottom plates together |
2639
| M2 screw | 4 | Used to mount the raspberry pi pico to the top plate |
2740
| 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)|
2942
| Keycaps | 38 | Keycaps for the switches |
3043
| Diodes | 38 | Required to achieve n-key rollover |
3144
| USB Cable | 1 | Used to connect the pico to the computer |
3245
| Bump Switch (optional) | 1 | Used to get the board to bootloader mode |
3346

34-
### Project report:
35-
View on [google docs](https://docs.google.com/document/d/e/2PACX-1vQndY82YCXaxrvmDw9xcZhzOaJTsP58XWRm1BeVet43TQnjNqOJDFl5XpR4vhXsUciPnCYtNsxyYR8w/pub)
3647

37-
### Typing Test:
48+
### Matrix Layout:
49+
Connect the switches in a `10x4` matrix with the following layout:
50+
51+
![wiring](https://github.com/ArchUsr64/egboard/assets/83179501/21ba049a-b216-4cbb-9427-33e24838ed3b)
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:
3859

3960

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+
![layer0](https://github.com/ArchUsr64/egboard/assets/83179501/c2651874-c26f-41ad-954a-eae0328679d4)
78+
#### Layer 1
79+
![layer1](https://github.com/ArchUsr64/egboard/assets/83179501/e2703591-1a94-4069-b5e0-3f3d1c1d7fb0)
80+
#### Layer 2
81+
![layer2](https://github.com/ArchUsr64/egboard/assets/83179501/5976e590-767e-4085-8efe-f26f360f40ee)
82+
#### Layer 3
83+
![layer3](https://github.com/ArchUsr64/egboard/assets/83179501/8cf56c59-4d1a-41af-80f8-365680e011fc)
84+
85+
## Typing Test:
4086
https://github.com/ArchUsr64/egboard/assets/83179501/e7029c53-4c0d-4cbe-ae44-c0f4a8198730
4187

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

Comments
 (0)