3Dプリンターで出力したK/Bプレートを使った空中配線の自作キーボードを作る(2個目)

2019-07-01

3Dプリンターで出力したパーツを使って組み立てた空中配線の自作キーボード

自作キーボードが楽しすぎて、いくつか作ったり空中配線の自作を楽しんだり、あげくに3Dプリンタまで買いました。
2個目の自作キーボードと書いてますが、おそらく夫は壊れるまでこれを使うのではないでしょうか。

では早速、夫のメインキーボードとなった自作キーボード2個目の製作過程を紹介します。

※このページにある写真は、クリックで大きな画像を表示します(別窓)。

1つ目の自作キーボードと今回のKBの違い

私ははんだ付けが楽しくて仕方なく、夫は配線配列を考えたり使いやすさを追求するのが楽しくて仕方なくて、あっという間に夫婦で自作キーボードにどっぷり浸かりました。

はじめは夫も、自分用のPCBやケースを作る方向で考えていました。
ところが、テスト用に空中配線を試している間に、3Dプリンタ+空中配線でも充分ではないかと思い始めたようです。
そして、最初に作った空中配線の自作キーボードで、ふつうにメインで使える代物だと分かってしまったのです。

これまでいくつかの自作キーボードを組み立ててきました。

Blockey←おもちゃ
miniaxr←個人的に1番良かった
IRIS←1個目だったら好きになってたかも
miniaxe LP←夫の外出時に
Endar-3x←まさかこれで自作するとは!
自作1台目←これでイケる!になった(笑)
Mint60←頼まれて組み立てたが、あまり好みではなかった
空中配線の自作キーボード←気に入った

夫が一番お気に召したのは、なんと空中配線の自作キーボードでした。
平たく配置されたタイプより、立体的に配置されたキーボードの方が使いやすいようです。
キーの配置も自分の使いやすいように決めています。

「もう少しキー数を増やせば完璧だ」と言って、2つ目を作ることになりました。

1つ目との違いは、4箇所あります。
1) キーを増やした(44個から52個へ)
2) ブレッドボードでなく、Arduino Leonardoを使った
3) 使用中のレイヤーをOLEDで表示するようにした
4) キートップも3Dプリンタで自作したものに交換した

空中配線の自作キーボードを作るのに必要なもの

Arduino Leonardo
Leonardoを使おうと思っていたわけではなく、たまたま夫が知人からArduino Leonardoの設定を頼まれていて、何か使えるなら使ってみても良いと言われたので、自作キーボードに利用しました。

キースイッチ
お気に入りのBlue Zilentをメインに。
タッチを軽くしたい親指や小指のスイッチを別のスイッチにして2種類使いました。

Arduino Leonardo
キースイッチ(Blue Zilent v2-62g)*30
キースイッチ(Kailh Speed Copper)*22
キースイッチ用ソケット*60〜
ダイオード(1N4148)秋月電子)〜100本くらいまとめ買い
ジャンパー線〜色多め、本数たくさん、長め。
ピンソケット〜2.54mmピッチだったかと。
OLEDモジュール
ワイヤーストリッパー

キーキャップは1台目の自作キーボードで使っていたものをそのまま転用、その後、3Dプリンタで出力したのに交換しました。

自作キーボードケースを3Dプリンタで出力する

まずは、3Dプリント用のデータをダウンロードしてきます。

dactyl-manuform

空中配線なので、COL/ROWの配線を外へ出す必要があります。
ケーブルの束を出すためにTinkerCADでデータをいじって、本体横に穴を開けます。

雑に作ったものですが、今回使ったのはこれ↓です。
dactyl-manuformの側面に穴を開けたデータ
※右を出す場合はスライサで反転させます。

▼キーボードケースを3Dプリンタで出力
空中配線の自作キーボード用にプリントしたケース

上の画像は、右手です。
立体的で、かなり独特のフォルムですね!

フィラメントはAmazonで一番安いABSの赤にしました。

まだバリが付いてる状態です。
内部に見える檻みたいな縞の部分もバリです。
バリを取ったら、ハンダ係の私の出番です。

空中配線ではんだ付けする

最初に作った空中配線の自作キーボードでは、キースイッチがぷかぷかして浮くことがありました。
浮いたら押し込めばいいのですが、何度もスイッチが浮いて直してると裏のハンダ付けが取れてしまうので、今回はキースイッチをホットボンドで固定しました。

▼キーボードケースにキースイッチをはめたところ
キーボードケースにキースイッチをはめたところ

キースイッチをはめてホットボンドで固定、キースイッチ用のソケットを被せたら、はんだ付けです。
今回使うソケットは円筒状です。

前回同様、ROWのラインはダイオードで、COLのラインと外へ出す部分はジャンパー線でつなぎます。
前回よりキー数が増えているので、はんだ付けするラインを確認します。

▼はんだ付けのROWのライン
空中配線の自作キーボードROWのハンダ

上の写真は、すでに横のライン(ROW)をダイオードではんだ付け済みです。
6個*4段と最下段は2個ずつです。
分かりやすいですね。

▼ダイオードのはんだ付け準備
ダイオードのはんだ付け準備

前回はロープロファイル用のキースイッチソケットを使いましたが、今回は円筒状のソケットなのでダイオードの片側を曲げてソケットに引っ掛けるような感じではんだ付けしました。

ダイオードの反対側(真っ直ぐの方)を次のソケットに付いてるダイオードに引っ掛けてはんだ付けします。
ダイオードには向きがあるので注意。

▼はんだ付けのCOLのライン
空中配線の自作キーボードCOLのハンダ

縦のライン(COL)は分かりにくい上に、角度も難しかったです。
数字はつなぐスイッチの数です。
かなり強引なラインですね。

COLの方はジャンパー線ではんだ付けしました。
ソケットが円筒状になったとは言え、親指側(深い方)は本当にはんだ付けが大変でした!

▼ジャンパー線のはんだ付け準備
ジャンパー線のはんだ付け準備

ジャンパー線は1本のラインに1本で、途中の皮膜をカットしてはんだ付けしました。
ジャンパー線を中へ入れて、キースイッチのソケット位置に合わせ印を付けてからカットしました。

▼COLのジャンパー線をはんだ付けしたところ
COLのジャンパー線をはんだ付けしたところ

ROWとCOLのラインをはんだ付けしたら、外へ出すためのジャンパー線もはんだ付けします。
前回は長さが足りなくて、ジャンパー線をつないで伸ばしたので、今回はあらかじめ長さに余裕を持ちます。

▼COLを外へ出すためのジャンパー線をはんだ付け
COLを外へ出すためのジャンパー線をはんだ付け

外へ出すためのジャンパー線はライン上のどこでもはんだ付けしやすいところでOK!

▼更にROWも外へ出せるようジャンパー線をはんだ付け
ROWも外へ出せるようジャンパー線をはんだ付け

ROWのラインもジャンパー線ではんだ付けました。
ここまでで、はんだ付け担当の仕事はおしまいです。

外へ出す分のジャンパー線は出口の穴でひとまとめにしてホットボンドで固めてます。
汚いですが、夫いわく「外からは見えないから気にしない」そうです。

この後、テスターで導通テストをしました。
よりによって、最奥部の深いところがはんだ付けのやり直しになり、非常に苦労しましたが、何とか私の仕事は完了できました。

ここから先は、夫にもらった説明書きです。

Arduino LeonardoにCOL/ROWを接続する

空中配線で外へ出したCOLとROWをArduinoにつなげます

▼Arduino LeonardoにCOL/ROWを接続
Arduino LeonardoにCOL/ROWを接続する

▼PIN配置参考(外部サイト)
Arduino LeonardoのPIN配置参考
予備画像

ROW1 ↔ PF7(A0)
ROW2 ↔ PF6(A1)
ROW3 ↔ PF5(A2)
ROW4 ↔ PF4(A3)
ROW5 ↔ PD6(13)

COL1 ↔ PD2(0)
COL2 ↔ PD3(1)
COL3 ↔ PD1(2)
COL4 ↔ PD0(3)
COL5 ↔ PD4(4)
COL6 ↔ PC6(5)
COL7 ↔ PD7(6)
COL8 ↔ PE6(7)
COL9 ↔ PB4(8)
COL10 ↔ PB5(9)
COL11 ↔ PB6(10)
COL12 ↔ PB7(11)

▼空中配線の自作キーボード2号機
空中配線の自作キーボード2号機

※ ROWのジャンパー線は最初ブレッドボードで一つにまとめていたけど、その後、左右のROWのジャンパー線をハンダで一つにして直接配線するようにした。

上の画像では1号機に載せていたキーキャップをそのまま使っていますが、3Dプリンターで出力した臭くキーキャップに変更しました。

Thingiverseで「cherry mix」のキーキャップを選んで出します。
アルファベットの配置は分かるので、記号をプリントしています。
TinkerCADでキーボードの記号が凹むようデータを変更します。
バックスラッシュ(\)とシングルクォート(’)はFとJの位置なので、出っ張るようにプリントしています。
3Dプリンターでキーキャップを出力したら、バリを取って、表面に軽くヤスリをかけます。

OLEDの取り付け

レイヤーの現在地がひと目で分かるよう、OLEDで表示させることにしました。

《OLED》 ↔ 《Leonardo》
GND ↔ GND
VCC ↔ 5V
SCL ↔ PD0(SCL)
SDA ↔ PD1(SDA)

ファームウェアを準備する

QMKの環境構築については、空中配線の自作キーボード1号機の記事を参照して下さい。

説明文中に出てくる「akibaneo」ファイルはダウンロードして使えます
dactyl-akibaneo52.zip

QMKのディレクトリに入って

util/new_project.sh akibaneo52 avr

を実行します。

keyboards/akiba-neo52/config.h を編集します。

#define MATRIX_ROWS 2 ⇒ #define MATRIX_ROWS 5
#define MATRIX_COLS 3 ⇒ #define MATRIX_COLS 12
#define MATRIX_ROW_PINS { D0, D5 } ⇒ #define MATRIX_ROW_PINS { F7, F6, F5, F4, D6 }
#define MATRIX_COL_PINS { F1, F0, B0 } ⇒ #define MATRIX_COL_PINS { D2, D3, D1, D0, D4, C6, D7, E6, B4, B5, B6, B7 }

keyboards/akibaneo52/akibaneo52.h を編集します。

#define LAYOUT( \
k00, k01, k02, \
k10, k11 \
) \
{ \
{ k00, k01, k02 }, \
{ k10, KC_NO, k11 }, \
}

⇓ ⇓ ⇓

#define LAYOUT( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, \
k44, k45, k46, k47 \
) { \
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \
{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b }, \
{ KC_NO, KC_NO, KC_NO, KC_NO, k44, k45, k46, k47, KC_NO, KC_NO, KC_NO, KC_NO } \
}

keyboards/akibaneo52/rules.mk を編集します。

BOOTLOADER = atmel-dfu ⇒ BOOTLOADER = caterina
EXTRAKEY_ENABLE = yes ⇒ EXTRAKEY_ENABLE = no
CONSOLE_ENABLE = yes ⇒ CONSOLE_ENABLE = no
COMMAND_ENABLE = yes ⇒ COMMAND_ENABLE = no
追記 ⇒ SRC = i2c.c
追記 ⇒ SRC += ssd1306.c

keyboards/crkbd から以下のファイルをコピーしてkeyboards/akiba-neo52 に置きます。
i2c.c
i2c.h
ssd1306.c
ssd1306.h
libフォルダ

keyboards/akibaneo52/lib フォルダ内にある
host_led_state_reader.c
keylogger.c
layer_state_reader.c
logo_reader.c
mode_icon_reader.c
timelogger.c
の以下をすべて書き換えます。
#include “crkbd.h" ⇒ #include “akibaneo52.h"

keyboards/akibaneo52/keymaps/default/config.h に追記します。

#define TAPPING_TERM 200
#define TAPPING_TOGGLE 2
#define RETRO_TAPPING

#define MOUSEKEY_DELAY 300
#define MOUSEKEY_INTERVAL 50
#define MOUSEKEY_MAX_SPEED 10
#define MOUSEKEY_TIME_TO_MAX 20
#define MOUSEKEY_WHEEL_MAX_SPEED 8
#define MOUSEKEY_WHEEL_TIME_TO_MAX 40

#define USE_I2C
#define SSD1306OLED

keyboards/akiba-eo52/keymaps/default/rules.mk を作成し以下の内容をコピペします。

MOUSEKEY_ENABLE = yes
TAP_DANCE_ENABLE = yes

SRC += ./lib/layer_state_reader.c \
./lib/keylogger.c \
./lib/glcdfont.c \
#./lib/rgb_state_reader.c \
#./lib/logo_reader.c \
# ./lib/mode_icon_reader.c \
# ./lib/host_led_state_reader.c \
# ./lib/timelogger.c \

keyboards/akiba-neo52/keymaps/keymap.c とkeyboards/akiba-neo52/lib/layer_state_reader.c を好みで編集して下さい。

以上です。
これで空中配線の自作キーボードが出来上がりました!

▼空中配線の自作キーボード2号機完成版
空中配線の自作キーボード2号機完成版

写真を見ればわかりますが、OLEDはキーボードの側面にテープで貼ってるだけです。

4月の半ばに出来上がった空中配線の自作キーボード2号機は、完全に夫のメインキーボードになりました。
前回のようにキーキャップがはずれてハンダが取れるなどの問題もなく、長持ちしてくれそうです。

今回、手元にArduino Leonardoがあったので使いましたが、当初はProMicroとブレッドボードで作るつもりでした。
ProMicroでのやり方は、1号機の記事(空中配線の自作キーボード)を参照して下さい。

はじめに思い描いてた自作キーボードとはいささか違う方向に来たような気がしますが、夫がすごく気に入って使ってるので良かったです♪

空中配線の自作キーボードを作るのに役立つ工具類

自作キーボードの組み立てで役立つのは以下の道具です。

ノートパソコンの分解に役立つ道具の紹介

ノートパソコンの分解・清掃などに役立つ道具類を紹介します。

《左上から時計回りに》
マイクロロングノーズプライヤー 先曲がりタイプ
ネジの土台が破損してる時など(ジャンクには非常によくある)ペンチが活躍します。
精密ピンセット TS-15
細かいところをいじるのに、絶対必需品です。C国製など安さで買い物をするとグニャっとなるので、結局買い直しになります。
基板コネクター抜き(青いピンセットみたいの)
ドライブ開閉コネクター、スピーカーケーブル、ファンのコネクターなど小さめのコネクタ類で重宝します、開閉ストッパーがないタイプとかもこれがあれば便利。
細かいところをいじるのに、絶対必需品です。C国製など安さで買い物をするとグニャっとなるので、結局買い直しになります。
ナットドライバー(設置)
ナットドライバーの付け替えできるセット。写真は右下のグリップとセットで友人からもらったもの。レッツノートだとVGAケーブルを外したりするのに使います。
VESSELのGグリップドライバー(+00)
+00のドライバーはノートパソコンを分解するのに必須です。私は細い方が好きですが、夫がこのGグリップが使いやすいそうです。ネジがなめそうな時などはこのドライバーを渡して代わりに回してもらいます。
VESSELのボールグリップドライバー(+1)
底面のゴム足のとこやモニターのヒンジなど大きいネジに。力のいるねじ回しは大きめの方が接着面積が広くなって開けやすくなります。
スパッジャー修理ツールキット(3点セット)
3点セットですが、この両側タイプのヘラは使いやすいです。
VESSELのドライバー(+00)
ノートPCでは必須の(+00)のプラスドライバー、Vesselは使いやすくておススメです。予備入れて同じの3本持ってます。ドライバーはセットでなく、1本ずつ買った方がいいですね。
長めのヘラ
シール剥がしやキーボードを剥がす時などヘラは必需品です。このヘラが一番のお気に入りですが、いかんせんプラスチックなのですぐに先端がボロボロになります。消耗品です。
IFIXITのセット
短めの黒い両側タイプのヘラですが、これはすぐダメになります。青い三角形のヘラはレッツノートのモニター枠など外すのに必須です。左下の磁石はなかなか出てこないネジを取り出せます。写真にはないですが、iOpenerという温め用の器具は必須です。
IFIXITのセット(ドライバーセット付き)
iOpenerの入ってるiFixitのセットにも先を付け替えるドライバーが付いてますが、T4以下のサイズがありません。T4以下がセットになってるのを買い直しました。(買い直し前に、必要に迫られてとりあえず買ったのが写真のトルクスねじ用レンチですが、これで分解作業はしんどい)
《その他、写真無し》
マグネットシート(水道屋のでもOK)
ネジを分かりやすい配置で置いておけます、磁石シートだと場所がズレにくいし、空の名刺入れに入れて使うとなお便利。
ナットドラーバー
VGAケーブルのネジを外すのに使います。RシリーズについてるEXTケーブルのネジでも使います。
IFIXITのセットに入ってる三角のヘラ
モニターの枠を外す時は、これくらいのサイズのヘラが使いやすいです。ホットボンドで接着してる場合などはこのタイプを何枚も使います。
アロンアルファ(コニシ)
パーツの割れや破損の修理に。
ルーター
ドリルだと直ぐに刃が折れるので、今はルーター派です。電池式でも充分使えます。
ネジ入れに使う箱
同種のネジなどを分けて取っておきます。一台で完結しない時(ニコイチやサンコイチ)になるとネジケースは必須です。 レッツノートのネジはネジ入れケースに入れてます。それ以外はそれぞれチャック付きの袋(目薬が入ってるような袋)に入れています。
赤ちゃん用の細い綿棒
ジャンクPCは大体汚れているので、清掃に(爪楊枝と)綿棒は必須です。綿棒だと埃や軽い汚れも同時に取れるので便利です。ただしノートパソコンの中は細かいので、ふつうの綿棒でなく、赤ちゃん用の細い方が役立ちます。
エアダスターオーバーホールクリーナーも必需品です。