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号機の記事(空中配線の自作キーボード)を参照して下さい。

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

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

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

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

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

《左上から時計回りに》
赤ちゃん綿棒
ファンのすき間など掃除に使います。せっかくノートパソコンを分解したなら、掃除もしておきましょう。
エアダスター
これも掃除用です。以前、秋葉原で安いのを買ったら連続使用ができなくて、安物外の銭失いになったことがあります。
すきまノズル
これも掃除用です。自宅でノートパソコンの分解をするので、何でもダスターで吹き飛ばすということはしません。埃やゴミはなるべく掃除機で吸い取って、吸い残しだけエアダスターを使います。 以前は、サンワサプライのバキュームアタッチメントを使ってましたが、掃除機を替えたら入らなりました。自宅の掃除機ホースの内径に合う方をどうぞ。
プラスチックのヘラ
ヘラはプラスチックも1本あった方がいいです。
金属のヘラ(スパッジャー)
金属のヘラで細長いのが1本あるといろいろ使えます。
VESSELのドライバー(+00)
ノートパソコンの分解に重宝するドライバーです。だいたい、これで行けます。
VESSELのボールグリップドライバー(+1)
写真は長さ違いで同じものが2本並んでます。底面のゴム足のとこやモニターのヒンジなど大きいネジに。力のいるねじ回しは大きめの方が接着面積が広くなって開けやすくなります。
精密ピンセット TS-15
ノートパソコンの分解には必需品です。中華製品など安いのだとグニャっとなります。ピンセットは信頼あるものを買いましょう。
ピックアップツール(マグネット)
ネジがなめかけてて出てこないとき磁石で取ったり、小さなネジを中に落としたとき拾うなどwリト活用します。なめかけネジを救った回数は数知れず(写真はiFixitに入っていたツール)
ラジオペンチ
写真のラジオペンチ(プライヤー)は先曲がりタイプです。ロングノーズ、先細など自分の使いやすいのでいいと思います。ジャンクを扱うときは結構使うことがあります。

あると便利なもの。


《左上から時計回りに》
クリーナー
内部の汚れ落としやグリスの塗り直しにも使います。
三角のヘラ
iFixitについてる三角のヘラは、ニコイチなどでモニターの枠を外したりするとき重宝します。スマホの電池交換でも役立ちます(細いすき間に差し込んで、そのまま挟んでおける)。 iPhoneの電池交換で付属品に中華製の三角ヘラがあったので使ったのですが、まったく別物でした。色まで同じ青にしてますが、中華のヘラはその場で壊れたので、自分の道具を出しました。
ネジすべり止め液
ノートパソコンのネジは小さい(細い)のが多いので、ネジがなめることがままあります。ジャンクだとなめかけのネジやなめ切ったネジはよく見かけます。ネジすべりどめ液はなめかけネジに重宝します。
iOpener
ノートパソコンやタブレットの内部にはホットボンドやシール接着がよく使われています。代わりのきかないシールなどは再利用できるように、iOpenerで丁寧に剥がします。

iFixitを買おうか悩んだら? セットのツールがすべて(自分にとって)使えるものではないと考えておきましょう。 自分には不要なツールがほとんどでも、欲しいツールがあるから良いと思える人にオススメです。
類似商品に注意しましょう。 似たようなツールのセットがiFixitより安価で販売されていますが、長く使いたい場合は信頼できるものを選んだほうが良いと思います。
《その他、写真無し》
マグネットシート(水道屋のでもOK)
ネジを分かりやすい配置で置いておけます。空の名刺入れに入れて使うと、作業の途中でフタできるのでなお便利。
ネジ入れに使う箱
同種のネジなどを分けて取っておきます。同じメーカーをよく分解するなど、ネジケースが役立ちます。チャック付きの袋(目薬が入ってるような袋)もねじ入れに使えます。