Skip to content

Let's Split (レツプリ) を組み立てた

Posted on:2018-01-08 at 12:00 AM

昨今の自作キーボードブームと格子配列型で左右分割のキーボードを試してみたくなったので昨年よく見かけたレツプリを作ってみることにした

必要なもの

今回は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 数年ぶりのハンダ付けに苦労したりと結構時間かかったけど初自作キーボードなのでやっぱりなんとなく愛着が湧く。キーマップを色々いじって自分好みの配列にしてみたい。

参考資料