Ieneko42C ビルドログ
Ieneko42Cというトラックパッド付きの自作キーボードを組み立てたので、その記録です。
Ieneko42Cの特徴
- REVIUNG41に似た配列
- トラックパッド付き(QMKが標準で対応していないセンサーのカスタムドライバを作成している)
- 振動モーター付き
- サンドイッチマウントだが、上からトッププレート(アクリル) - ミドルプレート(アクリル) - PCB - ボトムプレート1(アクリル) - ボトムプレート2(アクリル) と隙間のない積層構造になっており、剛性が高い
キットに含まれる部品
- トッププレートx2(アクリル)
- ボトムプレートx2(アクリル)
- PCB
- トラックパッド基板(azoteq proxsense tps43 PXM0016)、トラックパッドプレート、トラックパッド高さ調節用ブロック
- フレキコネクタDIP化キット、フレキシブルフラットケーブル
- M2スペンサー、ネジ、ピンヘッダ
- モータドライバ DRV2605L、振動モーター
- ゴム足、テストワイヤー(写真はゴム足が不足)
別途購入したもの
ビルドログ
参考
1. キーソケットはんだ付け
2. マイコンはんだ付け
PGA2040をPCBにはんだ付けします。 Pro microなどに比べると足の数が多くて大変ですが、難しくはないと思います。
ビルドガイドでは最初に四隅のみ半田してピンヘッダをカットするとありましたが、それだとピンが抜け落ちてしまうので、一列すべて半田してからニッパでカットしました。
この段階で、キースイッチの動作確認を行います。
ファームウェアを書き込んだ後、金属製のピンセットなどでキースイッチを短絡させてすべてのキーが入力されるか確認します。
3. 振動モーター、トラックパッド組み立て
振動モーターとトラックパッド用のピンヘッダを半田付け
フレキシブルコネクタDIP基板を半田付け
モータードライバ半田付け
トラックパッド用のフレキシブルコネクタを接続する。
この段階で、トラックパッドの動作確認を行います。 キーボードをPCに接続して、トラックパッドを触るとマウスポインタが動くか確認します。 自分は、最初フレキシブルコネクタがしっかり刺さっておらずトラックパッドが動作しませんでしたが、フレキシブルコネクタを刺し直したら動作しました。
4. アクリルプレート組み立て
M2のネジとスペンサーで、2枚のボトムプレートとPCBをネジ止めする。
トッププレートを取り付ける。 この時に、PGA2040の半田付けした出っ張っている足をある程度短くカットしました(出っ張りすぎているとアクリルを組み立てる時に干渉する)。
トラックパッド高さ調整ブロックを取り付ける。
5. キースイッチ・キーキャップを取り付ける
キースイッチを取り付ける。今回は、家で余っていたBoba U4tをアルファに、Aqua kingを親指を使った。
キーキャップもとりあえず、家に余っていたもので。
6. ファーウェアを焼く
GUIでキーマップを変更したい場合は、Vialを利用する。 公式で提供しているファームウェアバイナリはVialに対応しているので、そのままVialを利用することが出来た。
ファームウェアをソースからビルドしたい場合は、Ieneko42C公式のソースコードをvial-qmkを使ってビルドできる。
cd qmk-vial cp -r /path/to/ieneko42c keyboards/ make git-submodule # make ieneko42c:default # デフォルトのキーマップはビルドできない状態だった make ieneko42c:vial # vial用のキーマップはビルドできた
注意点としては、ビルドするためのファームウェアとしては、qmk本家ではなく、下流のvial-qmkを使う必要がある。 また、QMKファームウェアは頻繁に後方互換性のないアップデートがなされているため、ビルドするIeneko42C公式のソースコードがどのバージョンのvial-qmkで動作するものか気をつける必要がある。 自分は、Ieneko42Cの"56a0eac 2023-09-19"のコミットハッシュと、vial-qmkの”ee7f5acefb 2023-09-17”(QMK 0.22系)の組み合わせで動作することを確認した。
ファームウェアをソースから変更してフラッシュするにはブートモードに入る必要があるが、Ieneko42Cはボトムプレートのネジを外して分解しないとブートの短絡が出来ないようになっている。
キーマップで、QK_BOOT
をアサインしておくと、物理的に短絡させなくてもブートモードに入れるので、おすすめです。
感想
- QMKが標準で対応していないトラックパッドセンサーをカスタムドライバを書いて対応しており、すごい
- ホームポジションからトラックパッドが近いので、簡単なポインタの操作の作業効率がいい
- トラックパッドの操作感は、Macに比べるとかなり落ちる(センサーサイズも小さいので当然だが)
- 公式のビルドガイドにある、ジェスチャーとかドラッグ&ドロップモードというのが、どうやったら使えるのかよく分からなかった。
- サンドイッチマウントだが、よくあるトッププレート+PCB+ボトムプレートという隙間のある構成ではなく、トッププレートとPCB・PCBとボトムプレートの隙間を埋めるアクリルプレートも標準で付属しており、剛性が高い
- ファームウェアがトラックパッドのカスタムドライバを書いてあることもあり、複雑で理解しきれていない
自作PCを組んだ
1ヶ月くらい前になるが、自作PCを作った。 メインPCとしてラップトップのThinkpad x390を使っていたのだが、以下の理由からデスクトップの自作PCを購入することにした。
- Thinkpad x390がDockerのBuildなどをするには厳しいことが多々あった
- 久しぶりにゲーム(そこまでスペックは要求しないもの)をしたかった
- 趣味としてPC関係の知識のアップデートを兼ねて。たしか2010年くらいに初めて自作PCを組んで、それ以降はラップトップばかりを使っていたので、13年ぶりくらいの自作になる。
全体の予算としては10万円くらいを目安とした。
構成
数年前はIntelがだめで、AMDが主流だったっぽいが、最近はIntelも盛り返しているみたい。 AMDよりもIntelの方がソフトウェアに力を入れており、AI推論もIntelの方が注力しているので、Intelにした。 あと、最近の半導体製造はTSMCの1強すぎるので、TSMC以外を応援するという意味でも。 最初は最新の13世代(Core i5 13400Fあたり)を狙っていたが、予算の都合上、1つ古い12世代にした。 内蔵GPUは普段は使わないのだが、GPUを使ったアプリ開発にIntel GPUもあったらデバッグに役立つが、ラップトップのIntel内蔵GPU使えばいいしと思って無し(F版)を選択した。
機械学習のためにNVIDIA一択(といっても学習をがっつり回したりする予定はない)。 機械学習用途を意識して、GTXシリーズよりメモリが多いRTXシリーズにした。 自分が想定していたより、GPUの値段はかなり高く、最新のRTX40ではなく、1世代前のRTX30の中で一番ローエンドのRTX3050を選択。 玄人志向のものを購入したが、今回作ったPCで唯一光ってしまうのが残念だった。 最近、IntelもIntel Arcというグラフィックカードを出していることを知ってびっくりした。
なるべくサイズを抑えたかったのと、マザーボードやケースの値段的にもATXよりmicroATXの方が抑えられそうだったので、microATXを選択。 チップセットはZ690は自分にはオーバースペックなので、B660にした。 あとは、一体型のバックパネル かつ M.2スロットにヒートシンクがある という条件で値段の安いマザーボードを探した。 MSI MAG B660M MORTAR DDR4 と ASUS TUF GAMING B660M-PLUS D4 の2択で悩んだが、前者は2つあるM.2スロット両方にヒートシンクがあるが、後者は片方だけだったので前者にした。 MSIのマザーボードを使うのは初めてだが、BIOSの使い勝手は特に問題無さそうだった。
- メモリ: CFD W4U3200CS-16G 16GB * 2枚 = 32GB (7,640円)
計16GBでも十分そうだったが、値段が安かったので計32GBにした。 マザーボードがDDR4なので、PC4-25600(DDR4-3200)で値段が安いものを適当に選択。 メモリのメーカーはどこがいいとかよく分からない。
- SSD: ADATA LEGEND 800 ALEG-800-1000GCS-DP (M.2 2280 1TB) (5,680円)
13年前に組んだ時はHDDが主流だったのが、SSD(SATA接続)になり、さらにPCIe接続のSSDが主流になっているらしい。 ここ10年で恐らく一番進化しているパーツですね。 SSDはここ半年くらい値下がりしていて安かった。 M.2、PCIe gen4、1TBでなるべく値段が安いものを適当に選択(ここのところニュースになっているWestern Digitalは避ける)。 付属の薄いヒートシンクがついていたが、マザーボード付属のものの方が冷えそうでサイズもピッタリなので、マザーボード付属のヒートシンクを使った。
- 電源: 玄人志向 KRPW-BK750W/85+ (10,540円)
構成的に600Wあれば十分そうだったが、余裕を見て750WのBronzeを選択。
- ケース: Thermaltake Versa H18 CA-1J4-00S1WN-00 (4,369円)
MicroATX対応のミニタワー型ケース。 裏面配線可能・電源が下側で別吸気・上部/底面にも穴があるか・フロントパネルがメッシュで吸気しやすい あたりの条件を満たすものから選択。 小さめのケースなので、大きいCPUファンとか大きいGPUは入らない。
- CPUクーラー: DEEPCOOL AK400 R-AK400-BKNNMN-G-1 (3,290円)
最初はIntel純正のCPUクーラーで運用しようとしていたが、ベンチマークソフトを回すと90度くらいになったので、追加でCPUクーラーも購入。 安めのCPUクーラーの中で評判のいいAK400を選択した。 ケースThermaltake Versa H18は背が高いCPUクーラーは入らず、AK400はちょうど収まる。 AK400導入後で、ベンチマークソフトを回すと68度くらいだったので、かなり効果はあった。
- ケースファン: 2 x KAZE FLEX 140 SQUARE PWM 1200rpm KF1425FD12S-P (2 x 1,320円)
ケースThermaltake Versa H18には、リア側に120mmのファンが標準でついているが、フロント側に140mmファンを2つ追加した。 必要だったかとか、効果があったかとかは不明。 マザーボードにケースファンの電源が2つしかなかったので、分岐ケーブルを購入して、フロントの2機に分岐して電源供給した。
- OS: Ubuntu22.04
これまでのメインPC Thinkpad x390でもUbuntu22.04を入れて使っていた。 同じUbuntu22.04なのに、x390だとWaylandがデフォルトになっていたが、今回自作したPCだとX windowがデフォルトになっていた(謎)。
ベンチマーク
Phoronix Test Suiteを利用してベンチマークを取ってみた。 様々なベンチマークを共通のプラットフォームに入れたもので、結果を共有などもお手軽に出来るようになっている。
# 導入 sudo apt install ./phoronix-test-suite_10.8.4_all.deb phoronix-test-suite version # CPU/GPUのベンチマーク phoronix-test-suite benchmark blender # ディスクのベンチマーク phoronix-test-suite benchmark sqlite
ベンチマーク結果
- Blender (CPU/GPU)
- 新PC(リテールCPUクーラー)
- 新PC(CPUクーラー AK400)
- Thinkpad x390では時間がかかりすぎるので諦めた
- disk (sqlite)
温度
psensorというツールでCPU・GPU・SSDの温度を確認した。
sudo apt install psensor psensor
アイドル時 | ベンチマーク時 | ゲーム時 | |
---|---|---|---|
CPU(リテールCPUクーラー) | 38度 | 90度 | 60度 |
CPU(CPUクーラー AK400) | 35度 | 68度 | 45度 |
GPU | 38度 〜 50度 | 63度 | 50 〜 60度 |
SSD | 47度 | 55度 | 55度 |
- CPUクーラーの効果がすごい。
- GPUはBlenderベンチマークを回しても短時間しかフルで動かないので、温度は上がりきって無さそう。
- SSDはアイドル時でも結構熱いが、負荷をかけても温度はそこまで上がらないみたい。
感想
ブレッドボード上で2x2キーのキーボードを作った
キーボードの仕組みを理解するために、ブレッドボードで2x2キーの小さいキーボードを作ってみた。 マイコンでキーを読み取る仕組みについては、「キーマトリックス」で検索すると、分かりやすい解説がたくさん見つかるので、それを参考に理解した。 ファームウェアはQMK firmwareを利用した。
利用したパーツ
配線
Pro microのVCCやGPIOの電圧の仕様は5Vで、テスターで測定したところ実際には4.7V程度だった。 Pro microの端子はプルアップされているので、何もしなければHIGH(5V)になっている。 リセット(RST)も何もしない状態ではHIGHで、GNDと短絡されるとLOWになり、ブートローダーモードになる。
今回作成するキーボードの回路図は以下のようなもの。 キーマトリックスのCOLとROWはどの端子を用いてもいいので、適当に選んだ。
上図の回路図を実際のブレッドボード上で再現したものが、以下の写真。
ファームウェアの作成・書き込み
ファームウェアはQMK firmwareを利用した。
新規キーボードの作成は以下のコマンドで出来る(2023-09-14現在。QMK firmwareは頻繁にアップデートされるので、アップデートで変わるかも)。
qmk new-keyboard # 指示にしたがって適当に選択していく # layout: 52 (none of the above) # MCU: 12 (promicro)
自分のキーボードの物理配線(キーマトリックス)に合わせて、以下のファイルを修正する。
info.json
{ "matrix_pins": { "cols": ["F6", "F7"], "rows": ["B5", "B4"] }, "layouts": { "LAYOUT_2x2": { "layout": [ {"matrix": [0, 0], "x": 0, "y": 0}, {"matrix": [0, 1], "x": 1, "y": 0}, {"matrix": [1, 0], "x": 0, "y": 1}, {"matrix": [1, 1], "x": 1, "y": 1} ] } } }
keymap.c
#include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_2x2( KC_1, KC_2, KC_3, KC_4 ) };
キーマトリックスのPin配置やキーマップの修正が出来たら、ファームウェアをコンパイル・書き込みする。
qmk compile -kb keyboard_name -km default sudo qmk flash -kb keyboard_name -km default # リセットボタンを押すと、ブートローダーモードになって書き込みが行われる