diff --git a/README.md b/README.md index 631fde1..7331621 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,195 @@ # ESBtnBox -Simple button box for simracing and other activities. +Simple button box for simracing and other activities. This works but its still +an early phase and I hope to subject it to a great list of improvements from +polishing the 3D models to making the whole thing more compact. -This follows the simple principle of the keyboard matrix. Will update soon xoxo. +![Project Overview](./images/cover.jpg) + + +# Components +## Electronics +| Part | Quantity | +| ----------------------------------------- | -------- | +| Arduino Pro Micro (ATmega32u4) | 1 | +| Female Headers for pro micro | 24 | +| JST-PH Connectors (6 pin) male and female | 1 | [^1] +| JST-PH Connectors (5 pin) male and female | 1 | +| JST-PH Connectors (3 pin) male and female | 1 | +| JST-PH Connectors (2 pin) male and female | 3 | +| Perf boards 70mm x 500mm | 2 | +| 100nF Capacitors | 10 | +| 74HC595N Shift Register | 1 | +| 74HC165N Shift Register | 1 | +| 10k Ohm Resistors | 20 | +| 1N4148 diodes | 26 | +| Toggle Switches | 6 | [^2] +| Rotary Encoders | 4 | +| 2P LW26-25 series changeover switch | 1 | +| MX switches (and keycaps I recon) | 12 | +| Wiring and consumables | Lots | + +[^1]: I used 2mm pitch for these connectors, but they didn't really match the +pitch of the perf board I was using. Choosing other pitches wouldn't be a bad +idea. + + +[^2]: I used 4 On-Off-On switches and 2 MOM-Off-MOM switches. Permutate it +however you desire. + +## Hardware +| Part | Quantity | +| --------------- | -------- | +| M3 nuts | 20 | [^3] +| M5 nuts | 2 | +| M3x40mm | 4 | [^4] +| M3x12mm | 2 | +| M3x50mm | 4 | +| M5x20mm | 2 | +| M3 t-nut | 2 | +| M2 Heat Inserts | 7 | +| M2x6mm | 7 | + +[^3]: 4 of these are optional: the ones on the outwards facing piece that connects +to the playseat and the 2 top ones on the front plate + +[^4]: 2 of these are optional: the ones on the outwards facing piece that connects +to the playseat structure. + +## 3D printed parts +- Clamp: composed by the files `./3DModel/seatAttachement_screwSide.FCStd` and +`./3DModel/seatAttachement.FCStd`, the latter is the the one facing the seating +user and the first the one facing outwards +- Arm which is the file `./3DModel/arm.FCStd` +- T-slot which bolts to the front plate: `./3DModel/tSlot.FCStd` +- T-slot bracket which bolts to the t-slot and the arm: `./3DModel/tSlotAttachement.FCStd` +- Front plate where all the buttons are mounted to: `./3DModel/frontPlate.FCStd` +- Cover plate which where the "pcb" mounts and connects to the front plate: `./3DModel/pcbHolder.FCStd` + + +# Assembly +The assembly is straightforward, specially if you are the one that imagined it: +1. put the toggle switches into their through holes and bolt them +2. put the rotary encoders into their through holes and bolt them +3. insert the MX switches into their holes +4. bolt the changeover switch into its slot +5. wire the things according to the schematic. I started by doing the columns +and then the rows and left the rotary part of the encoders for the end. Crimp +the JSH-PH connectors on the rows, columns and rotary encoders +6. solder the components to the perf boards. I joined the 2 perf boards like the +images show +7. mount the back cover + 1. put the heat inserts into the back cover + 2. bolt the perf boards to the back cover + 3. drill holes on the front plate for the back cover holes. They go 7.5mm + in from the front plate edges, 1.5mm below the toggle switches and are spaced + apart by 45mm + 4. pass the M3x50mm bolts trough the front plate and put nuts holding them + 5. place nuts 8mm down from the tip on them + 6. connect the front plate electronics to the pcb + 7. place the back cover on the M3x50mm bolts and put nuts on it +8. bolt the t-slot 3D printed part tot he front plate and pass the t-nuts into it +9. place the t-slot attachement on the t-nuts. Leave them loose for later adjustments +10. heat insert the M5 nuts into the arm and the M3 nuts on inside part of the clamp +11. loosely assemble the arm +12. place the assembly on the playseat and clamp it down with the M3x40mm bolts +13. do the final adjustments and tighten everything down + +## Schematics +Well, I'm not very well versed on KiCAD or eletronics design in general, so all +I have is the following hand drawings and pinouts. I will make something better +at some point. + + +### Shift registers: +| Pro Micro Pin | 74HC595N Pin | +| ------------- | ------------ | +| 4 | 14 | +| 5 | 12 | +| 6 | 11 | +| GND | 8 | +| GND | 13 | +| 5V | 16 | +| 5V | 10 | +Put a capacitor on the 5V and common Ground + +| Pro Micro Pin | 74HC165N Pin | +| ------------- | ------------ | +| 7 | 15 | +| 8 | 7 | +| 9 | 2 | +| 10 | 1 | +| GND | 8 | +| GND | 13 | +| 5V | 16 | +Put a capacitor on the 5V and common Ground + +#### Shift registers to kbd matrix +Rows on the 595N: +| 74HC595N Pin | Matrix Row | +| ------------ | ---------- | +| 1 | 5 | +| 2 | 4 | +| 3 | 3 | +| 4 | 2 | +| 5 | 1 | +| 6 | 0 | + +Columns on the 165N: +| 74HC165N Pin | Matrix Col | +| ------------ | ---------- | +| 14 | 4 | +| 3 | 3 | +| 4 | 2 | +| 5 | 1 | +| 6 | 0 | + + +### Rotary Encoders +Referring to the rotary encoders from the front view. +Only the first one will have the common ground specified because thats the one +that runs the ground for all the others. + +1st: +| Pro Micro Pin | Rotary Encoder Pin | +| ------------- | ------------------ | +| 14 | Top | +| GND | Middle | +| 16 | Bottom | + +2nd: +| Pro Micro Pin | Rotary Encoder Pin | +| ------------- | ------------------ | +| 15 | Top | +| 18 | Bottom | + +3rd: +| Pro Micro Pin | Rotary Encoder Pin | +| ------------- | ------------------ | +| 19 | Top | +| 20 | Bottom | + +4th: +| Pro Micro Pin | Rotary Encoder Pin | +| ------------- | ------------------ | +| 3 | Top | +| 2 | Bottom | + + +### Visual Aid +Matrix Wiring: +![Matrix Wiring Schematic](./images/matrixWiring.jpg) + +2 Pin JST-PH connectors from the rotary encoder: +![2 Pin JST-PH connectors from the rotary encoder](./images/2pin_rotary_encoder.jpg) + +3 Pin JST-PH connectors from the rotary encoder: +![3 Pin JST-PH connectors from the rotary encoder](./images/3pin_rotary_encoder.jpg) + + +## Assembled project +![Wiring](./images/wiring.jpg) +![Right Profile View](./images/right_profile_view.jpg) +![Left Profile View](./images/left_profile_view.jpg) +![Bottom View](./images/bottom_view.jpg) +![Top View](./images/top_view.jpg) +![Fully Assembled](./images/fully_assembled.jpg) diff --git a/165_pinout.webp b/images/165_pinout.webp similarity index 100% rename from 165_pinout.webp rename to images/165_pinout.webp diff --git a/images/2pin_rotary_encoder.jpg b/images/2pin_rotary_encoder.jpg new file mode 100644 index 0000000..fe161c3 Binary files /dev/null and b/images/2pin_rotary_encoder.jpg differ diff --git a/images/3pin_rotary_encoder.jpg b/images/3pin_rotary_encoder.jpg new file mode 100644 index 0000000..b9761c4 Binary files /dev/null and b/images/3pin_rotary_encoder.jpg differ diff --git a/595n_pinout.webp b/images/595n_pinout.webp similarity index 100% rename from 595n_pinout.webp rename to images/595n_pinout.webp diff --git a/images/bottom_view.jpg b/images/bottom_view.jpg new file mode 100644 index 0000000..ce2992a Binary files /dev/null and b/images/bottom_view.jpg differ diff --git a/images/cover.jpg b/images/cover.jpg new file mode 100644 index 0000000..72eb09a Binary files /dev/null and b/images/cover.jpg differ diff --git a/images/fully_assembled.jpg b/images/fully_assembled.jpg new file mode 100644 index 0000000..a097510 Binary files /dev/null and b/images/fully_assembled.jpg differ diff --git a/images/left_profile_view.jpg b/images/left_profile_view.jpg new file mode 100644 index 0000000..6db2f53 Binary files /dev/null and b/images/left_profile_view.jpg differ diff --git a/images/matrixWiring.jpg b/images/matrixWiring.jpg new file mode 100644 index 0000000..e8b356a Binary files /dev/null and b/images/matrixWiring.jpg differ diff --git a/images/right_profile_view.jpg b/images/right_profile_view.jpg new file mode 100644 index 0000000..188ab5f Binary files /dev/null and b/images/right_profile_view.jpg differ diff --git a/images/top_view.jpg b/images/top_view.jpg new file mode 100644 index 0000000..26303ff Binary files /dev/null and b/images/top_view.jpg differ diff --git a/images/wiring.jpg b/images/wiring.jpg new file mode 100644 index 0000000..03d7c07 Binary files /dev/null and b/images/wiring.jpg differ