自作キーボード設計に挑戦した記録(本格的なのはこれから)
はじめに
これは初めて自作キーボード設計に挑戦したときの記録です。
初めて自作キーボードを行う方への入門のような記事ではなく、ただの自己満足+記録用のページです。
まず何をしたか
いきなり設計をするのは難しいので、はじめに販売されているキーボードの作成から開始しました。
分離型を作ってみたかったので、色々調べた結果、Irisを作成してみることにしました。
PCB(基板)はkeebioのページで注文。PCB以外に各種パーツもついてきます。
ネジやPro Microはついていないので、AliExpress等で発注。全部届くまで1~2か月ぐらいかかりました。
勉強
既存の自作キーボードを作成することで、組み立てはできるようになりましたが、設計は当然ながら分からないので、まずは基板の設計等について勉強を始める。
まずはネットで調べてみたが、最終的には以下の3冊を購入して勉強した。
上の2冊で自作キーボードは設計できるようになるはず。ただし、KiCadの操作方法の記載が薄いので、下の1冊も買って勉強すると設計がスムースになるかと思います。
キーボードレイアウト設計
まずは、キーボードレイアウトを決めます。
いきなりフルキーボードを作成するのは難しいので、10cm x 10cmにすると安く作成できるので10キーの小さなキーボードを作成しました。
以下のサイトでキーボードレイアウトを作成します。
3x3の9キーと、右下にレイヤー切り替えのキーを配置しました。
PCB(基板)設計
KiCadでPCBを設計します。
作成方法等は省略。
ケース(プレート)設計
KiCadから基板をエクスポートし、InkScapeに取り込んでケースを設計します。
今回はアクリルプレートで作成し、PCBの上下をサンドイッチするため、ボトムプレートとトッププレートの2つを設計します。
KiCADで「Dwgs.User」、「Edge.Cuts」、「F.CrtYd」と「Eco2.User」の4つをSVGで出力します。
「ファイル」-「プロット」で製造ファイル出力ダイアログを出力し、先ほどのレイヤーを選択し、「製造ファイル出力」を選択します。
次に出力したSVGファイルをInkScapeで取り込んで編集します。
作成したプレートは以下のようになります。
最終的に発注するためにDXFフォーマットで出力します。
- トッププレート
- ボトムプレート
Inkscapeの設定
Inkscapeの設定を開き、「使用する境界枠」に「幾何学的境界枠」を設定する。
「ドキュメントのプロパティ」からグリッドの設定で、グリッドの単位は「mm」に設定し、X/Y方向の間隔を0.1mm程度に設定しておく。
発注
PCB、ケースともにElecrowに発注しました。
アクリルならファイルを持ち込んでレーザー加工するという方法もあるようですが、近くに手頃なお店がなかったので、時間はかかりますがElecrowを利用。
今回は10cm x 10cm用なので送料は高くなりますがPCB、ケース自体は5ドルぐらいで安かった。
たしか1~2週間で届いたはず。
最低発注が5個からなので、PCB、ケースともに5枚ずつ届きました。
アクリルの価格は以下のとおり(2019年12月時点)。
- 10cm x 10cm x 2mm $5.8
- 20cm x 20cm x 2mm $16.55
- 30cm x 30cm x 2mm $37.8
ファームウェア作成
発注している間、作成するキーボードのファームウェアをプログラミングします。
QMK Firmwareというフレームワークを利用し雛型を生成できるので、単純なキーボードであればプログラム自体はほとんどなしで作成できます。
MSYS2をインストール
まずはファームウェアを開発するための環境構築です。MSYS2を以下からダウンロードします。
インストールし、「C:\msys64\msys2.exe」をダブルクリックし起動します。
MSYS2のパッケージを最新へ更新するために以下のコマンドを実行(したはず)
pacman -S git
pacman -Syu
pacman -Su
pacman -S avr-gcc
QMK Firmwareをダウンロード
git clone --recurse-submodules https://github.com/qmk/qmk_firmware.git
cd qmk_firmware
util/qmk_install.sh
Which USB drivers do you want to install?
(A)all - All supported drivers will be installed
(C)onnected - Only drivers for connected keyboards (in bootloader/flashing mode)
will be installed
(F)force - Like all, but will also override existing drivers for connected
keyboards
(N)one - No drivers will be installed,
flashing your keyboard will most likely not work
(A/C/F/N)? F
最後にmsysを再起動する。
テンプレートを生成
$ cd qmk_firmware
$ util/new_keyboard.sh
Generating a new QMK keyboard directory
Keyboard Name: emkee10m
Keyboard Type [avr]:
Your Name: mkyz08
以下のディレクトリが作成される。
keyboards/emkee10m/
ファイルの修正
主に修正するファイルは以下の4つ。
- keyboard_name.h
- rules.mk
- config.h
- keymaps/default/keymap.c
#define LAYOUT( \
k00, k01, k02, \
k10, k11, k12, \
k20, k21, k22, k23 \
) \
{ \
{ k00, k01, k02, KC_NO }, \
{ k10, k11, k12, KC_NO }, \
{ k20, k21, k22, k23 } \
}
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 4
#define MATRIX_ROW_PINS { E6, B4, B5 }
#define MATRIX_COL_PINS { B3, B2, B6, B1 }
#ifdef RGB_DI_PIN
#define RGBLED_NUM 16
#define RGBLIGHT_HUE_STEP 8
#define RGBLIGHT_SAT_STEP 8
#define RGBLIGHT_VAL_STEP 8
#define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
#define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
// /*== all animations enable ==*/
// #define RGBLIGHT_ANIMATIONS
// /*== or choose animations ==*/
// #define RGBLIGHT_EFFECT_BREATHING
#define RGBLIGHT_EFFECT_RAINBOW_MOOD
// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
// #define RGBLIGHT_EFFECT_SNAKE
// #define RGBLIGHT_EFFECT_KNIGHT
#define RGBLIGHT_EFFECT_CHRISTMAS
// #define RGBLIGHT_EFFECT_STATIC_GRADIENT
// #define RGBLIGHT_EFFECT_RGB_TEST
// #define RGBLIGHT_EFFECT_ALTERNATING
// /*== customize breathing effect ==*/
// /*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
// #define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
// /*==== use exp() and sin() ====*/
// #define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
// #define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
#endif
// Defines names for use in layer keycodes and the keymap
enum layer_names {
_BASE,
_FN
};
// Defines the keycodes used by our macros in process_record_user
enum custom_keycodes {
QMKBEST = SAFE_RANGE,
QMKURL
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Base */
[_BASE] = LAYOUT(
KC_LCTL, KC_DEL, KC_BSPC,
KC_LSHIFT, KC_UP, KC_ENT,
KC_LEFT, KC_DOWN, KC_RIGHT, MO(_FN)
),
[_FN] = LAYOUT(
KC_LCTL, KC_C, KC_V,
KC_SPC, KC_APPLICATION, KC_RALT,
RGB_TOG, RGB_MOD, RGB_HUI, KC_TRNS
)
};
ビルドと書き込み
組み立て後になりますが、自作キーボードを接続し、以下のコマンドでファームウェアのビルドと書き込みが実行されます。
cd ~/firmware/qmk_firmware
make emkee10m:default:avrdude
以下のファイルができる。
.build/emkee10m_default.hex
組み立て
PCBとプレートが届いたら、あとは頑張って組み立てる。
はんだごてなど買わなきゃいけないものが多く、部品もねじとかあらかじめ購入しておく。
ソース
ソースはGitHubに公開しています。ライセンスはMITです。
最後に
最後に現在設計しているキーボード(未完成)です。
分割JISキーボードという既存ではほとんどないので自作中です。
今回使用したソフトウェアとバージョン
- KiCad 5.1.4
- Inkscape 0.92.4
- MSYS
- QMK Firmware
Author And Source
この問題について(自作キーボード設計に挑戦した記録(本格的なのはこれから)), 我々は、より多くの情報をここで見つけました https://qiita.com/mkyz08/items/ffd9386393c5fbfffef6著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .