Skip to content

Commit

Permalink
Merge pull request #1 from ssbb/rev1
Browse files Browse the repository at this point in the history
Rev1
  • Loading branch information
ssbb authored Sep 10, 2023
2 parents 368fc81 + 04e2c4c commit 7137e94
Show file tree
Hide file tree
Showing 95 changed files with 423,794 additions and 87 deletions.
7 changes: 6 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -28,4 +28,9 @@ fp-info-cache
*.xml
*.csv

jlcpcb
# Interactive BOM
bom

# Production artifacts
jlcpcb
*_gerber/
137 changes: 56 additions & 81 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
# Tako

![PCB Preview](./docs/img/assembled.jpg)

> **Warning**
> There are no tentacles like the ones in the picture on the current production files for the top plate.
![Tako Keyboard](./docs/img/tako2.jpg)
![Tako Keyboard](./docs/img/pcb.png)

<span>
<img src="https://img.shields.io/github/last-commit/ssbb/tako?style=flat-square">
Expand All @@ -14,121 +12,97 @@
<img src="https://img.shields.io/static/v1?label=license&message=MIT&color=success&style=flat-square">
</span>

---

Tako is a vertical stagger split keyboard with electrostatic capacitive (EC) non-contact switches.

## Table of Contents
## Bill Of Materials (BOM)

### Production Files

Depending on which parts you are going to use, make sure to select the proper top plate (OEM or NIZ). Ensure you use the correct thickness - the **OEM plate should be 1.2mm**, and the NIZ should be 1.6mm!

### MCU

RP2040-based boards should be used for wired build - Liatris, Frood, Sea-Picro, Splinky, [etc](https://github.com/qmk/qmk_firmware/blob/master/docs/platformdev_rp2040.md#rp2040-community-edition-idrp2040_ce).

- [Status](#status)
- [Features](#features)
- [Caveats](#caveats)
- [BOM](#bom)
- [Build guide](#build-guide)
- [Firmware](#firmware)
- [Thanks](#thanks)
**ATmega32U4 (Pro Micro) won't work.**

## Status
#### Wireless

It's the first prototype I made, and it works as expected. However, it's a 4-layer PCBA-only board, so it can be quite expensive if you only want a single keyboard. Currently, I am working on a DIY version using [STeMCell](https://github.com/megamind4089/STeMCell) and hopefully [nice!nano](https://nicekeyboards.com/nice-nano) with hand-solderable components (SOIC and 0805). Support for nice!view is also planned.
For a wireless build, you can use [nice!nano](https://nicekeyboards.com/nice-nano/). Keep in mind that EC matrix consume significantly more power than mechanical keyboards. An 80mAh battery placed under the MCU will last for about a day only. I don't have exact numbers yet (still waiting for a power profiler), but you will likely need to use a larger battery. Consider using longer standoffs with a 3D-printed or acrylic spacer between the PCB and the bottom plate, and place the battery there.

**I warn against building current PCBA version since after working on new version for some time I realized that some things were done wrong so I strictly suggest to wait for DIY version.**

DIY version is currently in progress and you could check how it looks [here](./docs/img/diy_prototype.jpg).
### Display

ETA: early August.
5 pins for [nice!view](https://nicekeyboards.com/nice-view/) are exposed. 128x32 OLED can be used on first 4 pins but won't be perfectly centered.

## Features
### Components

### Assembled version
| Component | Package | Amount | Details |
|----------------------|----------------|--------|------------------------------------------------------------------------------------------------------------------------------------------|
| OPA350 | SOIC-8 / SOP-8 | 2 | [LCSC](https://www.lcsc.com/product-detail/_Texas-Instruments-_C13388.html) |
| 74HC4051 | SOIC-8 / SOP-8 | 2 | [LCSC](https://www.lcsc.com/product-detail/_Nexperia-_C9386.html) |
| 100nF Capacitor | 0805 | 4 | [LCSC](https://www.lcsc.com/product-detail/_FH-Guangdong-Fenghua-Advanced-Tech-_C38141.html) |
| 220pF Capacitor | 0805 | 2 | [LCSC](https://www.lcsc.com/product-detail/_Chinocera-_C465163.html) |
| 100&#8486; Resistor | 0805 | 8 | [LCSC](https://www.lcsc.com/product-detail/_UNI-ROYAL-Uniroyal-Elec-_C17408.html) |
| 1k&#8486; Resistor | 0805 | 2 | [LCSC](https://www.lcsc.com/product-detail/_UNI-ROYAL-Uniroyal-Elec-_C17513.html) |
| 100k&#8486; Resistor | 0805 | 12 | [LCSC](https://www.lcsc.com/product-detail/_UNI-ROYAL-Uniroyal-Elec-_C149504.html) |
| Reset Switch | | 2 | [LCSC](https://www.lcsc.com/product-detail/Tactile-Switches_PANASONIC-EVQPUC02K_C79174.html) |
| PJ-320A | | 2 | *Wired only*. [LCSC](https://www.lcsc.com/product-detail/_XKB-Connectivity-_C2884926.html) |
| 5.1k&#8486; Resitor | 0805 | 2 | *Wired only*. [LCSC](https://www.lcsc.com/product-detail/Chip-Resistor-Surface-Mount_UNI-ROYAL-Uniroyal-Elec-0805W8F5101T5E_C27834.html) |
| Power Switch | | 2 | *Wireless only*. [LCSC](https://www.lcsc.com/product-detail/Slide-Switches_C-K-PCM12SMTR_C221841.html) |

- Onboard USB-C with ESD protection
- STM32F4x1 MCU
- Actuation Point Changer
- USART Full-duplex
- [OLED](./docs/img/assembled_oled.jpg) support
### Mounting

## Caveats
#### OEM Plate

- No tenting puck support since there is no space between housings for screw holes. But could be done on bottom plate with different case design.
| Part | Amount | Details |
|-----------------|--------|---------------------------------------------------------------------------------------|
| M2x6 Standoff | 16 | [Aliexpress](https://aliexpress.com/item/33020779625.html?sku_id=12000029334740103) |
| M2x4 Screws | 32 | [Aliexpress](https://aliexpress.com/item/4001248931159.html?sku_id=12000034160900192) |
| M1.6x6 Standoff | 12 | [Aliexpress](https://aliexpress.com/item/33020779625.html?sku_id=12000029334740086) |
| M1.6x4 screws | 24 | [Aliexpress](https://aliexpress.com/item/4001248931159.html?sku_id=12000019001985950) |

## BOM
#### NIZ Plate

| Part | Amount | Details |
|-----------------|--------|---------------------------------------------------------------------------------------|
| M2x6 Standoff | 28 | [Aliexpress](https://aliexpress.com/item/33020779625.html?sku_id=12000029334740103) |
| M2x4 Screws | 56 | [Aliexpress](https://aliexpress.com/item/4001248931159.html?sku_id=12000034160900192) |

### EC Parts

| Part | Amount |
| --------------- | ------ |
|-----------------|--------|
| Housings | 34 |
| Domes | 34 |
| Conical springs | 34 |
| Sliders | 34 |
| Silencing rings | 34 |

> **Note**
> If you going to use DES V3/Carrot domes then it's recommended to get DES Volcano springs to avoid sping crunch.
> **Note**
> Silencing rings are recommended. If you want the same key travel as HHKB Type-S with DES housings and DES sliders then you should get #7 rings.
> **Warning**
> I tested only with DES housings and used 14.7x14.1mm cutouts recommended by DES while original Topre often use 14.6x14mm. Original Topre housings should work just fine as well but not tested.
- If you going to use DES V3/Carrot domes then it's recommended to get DES Volcano springs to avoid sping crunch.
- Silencing rings are recommended for DES parts. If you want the same key travel as HHKB Type-S with DES housings and DES sliders then you should get #7 rings.

Some EC vendors:

- [deskeys](https://deskeys.io/)
- [Unreal Keyboard](https://unrealkeyboards.com/)
- [NIZ Store](https://www.nizkeyboard.com/products/2019-new-niz-ec-switch)
- [Beekeeb (NIZ)](https://shop.beekeeb.com/product/niz-ec-switch/)
- YMDK [Housings](https://aliexpress.com/item/1005005724051113.html), [Sliders](https://aliexpress.com/item/1005005721976294.html) and [Domes](https://aliexpress.com/item/1005005721050116.html)

**You can only use MX-compatible sliders due to the housing orientation.** [See details](./docs/housing_orientation.md).

The top plate was tested by me using Deskeys parts only. The build on the picture using:

1. DES Carrot 35g domes
2. DES Volcano springs
3. DES Housings (Clear)
4. DES Sliders
5. DES Silencing rings #7

### Assembled version
NIZ sliders are MX-compatible by default.

| Part | Amount | Details |
| -------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Assembled PCB | 1 | 1.6mm |
| Top plate | 2 | 1.2mm thickness! |
| Bottom plate | 2 | 1.6mm |
| M2x6 standoffs | 16 | Max OD 3.3mm. [This](https://aliexpress.com/item/32975966103.html?sku_id=66665375911) and [this](https://aliexpress.com/item/1005003126118423.html?sku_id=12000024241636343) confirmed to work. |
| M2x4 screws | 32 | |
| PJ-320A | 2 | Audio jack |
| TRRS Cable | 1 | |
## Build Guide

> **Warning** **Top plate should be 1.2mm thick!**
#### Optional

| Part | Amount |
| ------------ | ------ |
| 128x32 OLED | 2 |
| OLED Sockets | 2 |

#### Optional mounting

There are also mounting holes between housings on 1, 3, and 5 columns. They are not required, and it should be fine not to use them. However, in case you experience some "squishing" sounds, especially on the homerow, it is likely that the housings are not sitting properly on the PCB. You should try to re-assemble keyboard first to ensure domes and springs aligned properly.

If this does not help, then you will need to add mounting somewhere at the center of the keyboard. There is no space for M2 standoffs between the housings, so you should use M1.6 (max OD is 2.5mm) or just a long M2 screw (around 11mm) with a nut on the bottom plate.

| Part | Amount | Details |
| ---------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------- |
| M1.6x6 standoffs | 12 | [Aliexpress](https://aliexpress.ru/item/4000582961951.html?spm=a2g2w.orderdetail.0.0.72ee4aa6N6dYoc&sku_id=10000003716437218) |
| M1.6x4 screws | 24 | |

## Build guide

- [Assembled version build guide](./docs/buildguide_assembled.md)
[Build Guide](./docs/buildguide.md)

## Firmware

At the moment, only QMK is supported. While ZMK in wired mode is possible, it has not been implemented yet, and there is no guarantee that it will be.

- [Assembled version firmware](https://github.com/ssbb/qmk_firmware/tree/master/keyboards/ssbb/tako/onboard)
- [QMK Firmware](https://github.com/ssbb/qmk_firmware/tree/master/keyboards/ssbb/tako)
- [ZMK Firmware](https://github.com/ssbb/tako-config)

## Thanks

Expand All @@ -137,6 +111,7 @@ Special thanks to [Cipulot](https://github.com/Cipulot/) for all the work on EC
- [jimmerricks](https://github.com/jimmerricks/swoop) for Swoop
- [duckyb](https://github.com/duckyb/urchin) for Urchin I was inspired by
- Awesome [Pete Johanson](https://github.com/petejohanson) for assistance
- [kanru](https://github.com/kanru) for his work on Zephyr driver for HHKB which I used for reference

## Support

Expand Down
52 changes: 52 additions & 0 deletions docs/buildguide.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# Build Guide

## Preparation

The PCB is fabricated as a panel, so the first step is to gently break it in half."

## Solder components

Place all the components using the interactive BOM. You can solder them in any order; the only requirement is to solder the reset button before the TRRS jack.

Orientation only matters for the `OPA350` and `74HC4051` chips (`U2`, `U3`, `U102`, and `U103`). You should align the dot on the chip with the long line on the PCB. For the rest (resistors and capacitors), orientation does not matter.

![IC Orientation](./img/buildguide/ic_orientation.jpg)

Keep in mind that the left and right sides are not exact mirrors, so refer to the PCB and interactive BOM (iBOM) when soldering.

`JP1` and `JP101` are used to adjust OpAmp gain and can be ignored during the build.

`R12` and `R112` are used for keymap configuration in QMK, and you can ignore them for the wireless build.

If you have no experience in soldering SMD components, you can check out the [SMD Soldering Tutorial](https://www.youtube.com/watch?v=fYInlAmPnGo) video.

Solder the MCU and display sockets, battery, and power switch (for wireless) at this step as well. At the end, your assembly should resemble the following (note that you don't need to solder the TRRS jack for wireless):

![Assembled PCB](./img/buildguide/assembled_pcb.jpg)

## Test

Now, you can test the PCB before proceeding to ensure everything has been done correctly. Flash the firmware (the release contains default firmware for both QMK and ZMK) and open the console (it's enabled by default):

- QMK: https://github.com/qmk/qmk_firmware/blob/master/docs/faq_debug.md
- ZMK: https://zmk.dev/docs/development/usb-logging#viewing-logs

You should see a matrix scan with readings, and the values should change when you place your finger on the EC pads.

## Top plate

Now that you're sure everything works, it's time to prepare the top plate.

First of all, you should install the standoffs. If you're building an OEM plate, use M1.6 standoffs for the six yellow-marked positions, and the rest should be M2. For the NIZ plate, all standoffs should be M2. Then, proceed to install the housings. Refer to the red mark for the correct orientation. Finally, put sliders (with optional silencing rings installed) into the housings. You can lube slider rails prior of installing them.

![Top Plate](./img/buildguide/top_plate.jpg)

Now, cut your domes so you have five 3x strips and two individual domes (or 10 and 4 for both sides). While holding top plate with one hand - place them to the housings with the other hand. Make sure all of them are aligned well and then put springs inside the domes.

![Top Plate Domes](./img/buildguide/top_plate_domes.jpg)

## Final assembly

Now, cover the top plate with the assembled PCB, and then place the bottom plate on top of it. Secure everything with screws, remembering to use M1.6 screws for the six center standoffs when building the OEM plate.

Now, you should connect the keyboard and check the console again. Make sure that all the readings are relatively similar. If the readings on all the keys are around 100, and on one of them, it's 500, then something is off. Also, check that the readings increase for each key when you press it. In case of any problems, in 99% of cases, it's a spring misalignment, so you should disassemble the keyboard, align the domes and springs, and assemble it again.
Binary file added docs/img/buildguide/assembled_pcb.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/img/buildguide/ic_orientation.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/img/buildguide/top_plate.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/img/buildguide/top_plate_domes.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed docs/img/diy_prototype.jpg
Binary file not shown.
Binary file added docs/img/pcb.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/img/tako.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/img/tako2.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 0 additions & 4 deletions pcb/assembled/plates/fp-lib-table

This file was deleted.

Loading

0 comments on commit 7137e94

Please sign in to comment.