昨今の自作キーボードブームと格子配列型で左右分割のキーボードを試してみたくなったので昨年よく見かけたレツプリを作ってみることにした
必要なもの
- Let’s Split PCB x 2
- Pro micro x 2
- スイッチ x 48 Kailh Pro Switche Burgundy
- TRRS ジャック x 2
- TRRS ケーブル
- ダイオード x 48
- ケース(top プレートと bottom プレート)
- ネジとスタンド
- LED ケーブル x 1 [Switch Science]
- タクトスイッチ x 2 [Switch Science]
- リード線 [Amazon]
- 3M クッションゴム [Amazon]
- はんだごてセット [Amazon]
今回はMehkeeでレツプリのセットが売っていたので最初に必用なパーツはある程度揃える事が出来た
クッションゴム, タクトスイッチ, リード線、LED ケーブルはなかったので別途買った
組み立て
幸い先人たちのビルドログが結構な数あったので途中で詰まることはあまりなかった
ダイオードハンダ付け
それぞれ+-の方向だけ気をつけてハンダ付け。ダイオードの黒い方のリード線が四角い穴に入るようにする。
TRRS ジャック取り付け
ジャンパー接続
公式から引用。以下の要領で PCB の TRRS ジャック下のに空いてる箇所をハンダで接続する
VCC [x] [ ] VCC
[x] [x]
GND [ ] [x] GND
ヘッダーピン取り付け
Pro Micro 付属のヘッダーピンを取り付ける。足の長い方を TRRS ジャックと同じ側にして差し込む。足の短い表側をハンダ付けしておく。
先に2つスイッチをつける
Pro Micro と位置が被るので Pro Micro の位置のスイッチ 2 つは先に実装する。
上側のケースを挟みこむようにしてスイッチを取り付ける。
スイッチを差し込むと PCB のパンダの目のようなとこにスイッチの足が出るのでハンダ付け。ここがしっかり接続されていないとキーを押したのに反応しないというようなことが起こるので注意。特に Pro Micro を取り付けた後だとここのハンダは修正出来ないのでハンダがちゃんと浸透してるか見ておいた方がいい。
Pro Micro 取り付け
Pro Micro を実装する。それぞれ左右で表裏を変えないといけないので注意。
左手側(TRRS ジャックが右に来る方)は実装面が上に来るようにして実装。Pro Micro から飛び出した長い足はニッパーで切ってハンダ付け。
右手側(TRRS ジャックが左に来る方)は裏側を表にして実装。
スイッチ取り付け
残りのスイッチを全て取り付ける。
ハンダ付け後。同じくハンダ付けが甘いとキー押下時の認識が甘くなるのでちゃんとハンダ付けする。
タクトスイッチ取り付け
ファームウェアを書き込む時に GNC と RST をショートさせる必要があるため、ボタン操作でリセット出来るようにタクトスイッチを取り付ける。それぞれ GND と RST をタクトスイッチの足にハンダ付け。
LED 実装
一応ここまでで既にキーボードは動作するが光の民ゆえ光らせたいので LED を実装する。光の民って何。
Switch Science で買った LED(17cm)をハサミで2つに切ってそれぞれ実装する。
たぶんここが一番苦労した。リード線に予備ハンダをして線をメッキしてからハンダ付け箇所でリード線に付着したハンダを溶かして付着させると楽かもしれない。
右手側は GND -> GND, +5V -> VCC, DI -> extra data で接続する。
左手側はそれぞれ左は+5V -> VCC, DO -> extra data, GND -> GND. 右側は DIN -> TX0 pin, GND -> GND, +5V -> VCC で接続する。
ファームウェア書き込み
リポジトリを clone
git clone https://github.com/qmk/qmk_firmware.git
ファームウェアのビルドに必要なパッケージ類をインストール(Linux)
apt-get install gcc unzip wget zip gcc-avr binutils-avr avr-libc dfu-programmer dfu-util gcc-arm-none-eabi binutils-arm-none-eabi libnewlib-arm-none-eabi
デフォルトのレイアウトを書き込む
$ make lets_split/rev2:default
$ sudo make lets_split/rev2:default:avrdude
QMK Firmware 0.5.207
Making lets_split/rev2 with keymap default and target avrdude
avr-gcc (GCC) 4.9.2
Copyright (C) 2014 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Size before:
text data bss dec hex filename
0 18850 0 18850 49a2 ./.build/lets_split_rev2_default.hex
Compiling: ./tmk_core/common/command.c [OK]
Linking: .build/lets_split_rev2_default.elf [OK]
Creating load file for flashing: .build/lets_split_rev2_default.hex [OK]
Checking file size of lets_split_rev2_default.hex [OK]
* File size is fine - 18850/28672
Detecting USB port, reset your controller now...........
Detected controller on USB port at /dev/ttyACM0
Connecting to programmer: .
Found programmer: Id = "CATERIN"; type = S
Software Version = 1.0; No Hardware Version given.
Programmer supports auto addr increment.
Programmer supports buffered memory access with buffersize=128 bytes.
Programmer supports the following devices:
Device code: 0x44
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.00s
avrdude: Device signature = 0x1e9587 (probably m32u4)
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "./.build/lets_split_rev2_default.hex"
avrdude: input file ./.build/lets_split_rev2_default.hex auto detected as Intel Hex
avrdude: writing flash (18850 bytes):
Writing | ################################################## | 100% 1.41s
avrdude: 18850 bytes of flash written
avrdude: verifying flash memory against ./.build/lets_split_rev2_default.hex:
avrdude: load data flash data from input file ./.build/lets_split_rev2_default.hex:
avrdude: input file ./.build/lets_split_rev2_default.hex auto detected as Intel Hex
avrdude: input file ./.build/lets_split_rev2_default.hex contains 18850 bytes
avrdude: reading on-chip flash data:
Reading | ################################################## | 100% 0.14s
avrdude: verifying ...
avrdude: 18850 bytes of flash verified
avrdude: safemode: Fuses OK (E:CB, H:D8, L:FF)
avrdude done. Thank you.
途中でreset your controller now
と出るので GND と RST をショートしたスイッチを押す。1 回で認識しない場合は何回か押す。
書き込みが成功すると上記のようなログが出る。左手と右手両方とも書き込む。 USB 接続し、TRRS ソケットで繋げて全部のキーが動作するか確認。ハンダ付けが甘いと微妙に認識しづらいキーがあるので直しておく。
LED の設定
vim keyboards/lets_split/keymaps/default/rules.mk
rules.mk
に以下の行を追加
RGBLIGHT_ENABLE = yes
キーマップを修正する
vim keyboards/lets_split/keymaps/default/keymap.c
UNDERGLOW 用のレイヤーを定義
#define UNDERGLOW_LAYER 6
キーマップを追加
[UNDERGLOW_LAYER] = KEYMAP( \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
),
QWERTY レイヤーのどこかのキーにMO(UNDERGLOW_LAYER)
を割り当て
再度ファームウェア書き込みの時と同じ手順でキーマップを Flash しMO(UNDERGLOW_LAYER)
でレイヤーを切り替えてRGB_TOG
で LED が光ることを確認する。またRGB_MOD
で発光パターンを色々切り替えられる。
以降もキーマップを変えたい場合はkeymap.c
を編集して変えることが出来る。
完成
こんな感じでなんとか完成。
キーキャップはDEVLIN K-SERIES AURORAにした。
感想
パーツが揃ったり揃わなかったり、10 数年ぶりのハンダ付けに苦労したりと結構時間かかったけど初自作キーボードなのでやっぱりなんとなく愛着が湧く。キーマップを色々いじって自分好みの配列にしてみたい。
参考資料
- lets-split-guide/assembly.md at master · nicinabox/lets-split-guide
- Let’s split を作る(製作編) - abcdefg…
- 分離型のコンパクトなキーボード let’s split(レツプリ)を組み立てた話 - Qiita
- Pro Micro & QMK Firmware のセットアップガイド (Let’s Split 編) - Voxel Highway
- レツプリ他自作キーボードまとめ - yhara.jp
- Let’s Split を組み立てた話 | 遊舎工房
- Install Build Tools · QMK Firmware