以前書いたこちらの記事の追記となります。
初めての自作キーパッドとなる『4KeyPad』が完成しました!
4キーのみのシンプルなキーパッドですが、1からキーレイアウトやPCBを設計しキーボード用のファームウェア(QMK)も作成、REMAPによるキーマップの変更等にも対応でき、初めての自作キーパッドとしては満足できるものが出来たと思います。
これで自作キーボードの世界に少し足を踏み入ることが出来ました!
自作キーパッドくん、透明パネルに変えてみた!
メチャいいっす👍 https://t.co/LUvYH7P6vh pic.twitter.com/9giMk0WLrv— ガジェット大好き!! (@smartphone_jp1) April 27, 2024
初めてということもあり見様見真似で製作したのですが、個人的に得るものが非常に多かったプロジェクトでした。
初めての自作キーパッド『4KeyPad』の製作!
KiCadで基板設計をする際によく使うショートカットキーをいくつか割り当てて使える小規模な左手キーパッドがあれば便利そう・・・
これが今回製作した自作キーパッド製作のきっかけでした。
4キーほどのものならCH552GやATmega32U4といったUSB機能があるマイコンを使い普段使い慣れているArduinoとしてプログラムを作り動作させることは比較的簡単なんですが、自作キーボードの世界にも前々から興味を持っていたのでQMKといったキーボード用のファームウェアを使うことを前提で製作することにしました。
CADのイメージ
『自作キーパッド』なので自分が使いやすいことが大前提となります。
自分の左手の指の位置に合わせてキーの配置を決め、形状を作っていきました。
初めての自作キーパッド製作となるので、既存のマイコンボードを実装出来るサイズで作れればPCBの設計に関しては簡単に出来るのですが・・・
なるべく無駄なスペースは作りたくなく自分が使いやすいサイズ感で設計すると既存ボードをマウントするサイズでは作れないことから、この時点でUSB機能が使えるMCU(マイコンチップ)をPCBに直実装する方向になりました。
PCBのサイズや形状、スペーサーパネルを含めた全体構成をFusion360上でまず完成させました。
トップ・メイン・ボトムの3枚のPCBの間にパネルを2枚挟んだ構成になります。
全体構成および各パーツの形状が作れたので、それらデータをKiCad側に持っていきPCBの設計に入ります。
回路構成
全体構成が決まったので、次はメインとなるPCBの設計です。
QMKファームウェアが使えるPro MicroやRaspberry Pi Picoといった既存のボードが使えれば基板の設計は簡単なんですが、CAD上でイメージしたものにはサイズ的に既存ボードが収まらないのでマイコンチップを直実装させることにしました。
ブレッドボードでのテストでは、Pro Micro(ATmega32U4)とRaspberry Pi Pico(RP2040)での動作確認は出来ていたのでどちらのMCUを使っても回路設計は出来るのですが・・・
ハンダ付けした!
初自作キーパッドみたいなもの🥳
一度動作確認で動いてくれると、こっからはいろいろ試せそうね👌 pic.twitter.com/CPWLMHiEIk— ガジェット大好き!! (@smartphone_jp1) April 10, 2024
これまでの自作基板製作で何度か使って慣れているATmega32U4を使うことにしました。
シンプルな構成で組むことが出来ます。
4キーのみなのでダイオードを使ったマトリクス配置にはせず、QMKファームウェアではダイレクトピンが使えるようなので各キーにGPIOピンを1本ずつ割り当ててGNDに落とす回路構成にしています。
そしてキー直下にそれぞれRGB LED(SK6812MINI-E)を配置し、ボトム側を照らすLEDも外周に4つ使った計8つのRGB LEDの構成としました。
また、何かしらトラブルがあった場合に備えATmega32U4のブートローダーの書き換えが出来るようにISP端子も付けています。
全体の回路構成はこのようになりました。
非常にシンプルな構成です!
基板設計
Fusion360上で全体の構成&イメージができ回路構成も決まったので、次に基板(PCB)の設計です。
PCBの間に挟むパネルの形状はFusion360上で設計が出来ているので、その形状をKiCadのレイヤーに割り当てればメイン基板との干渉部分の確認が出来ます。
パネル部分を避けパーツを配置し配線していきました。
メインPCBはこれで完成です!
実は1回目の基板発注ではメインPCBのLEDのフットプリントに誤りがありました。
これに関しては後述します。
メインPCBが出来れば次にトップとボトムPCBです。
Fusion360上でキーの配置は決めているので、トップPCBはその位置に合わせフットプリントを配置するだけです。
またボトムPCBはリセットスイッチ用の穴を空けています。
メインPCBに配置したリセットスイッチの位置に合わせて小さなドライバー等が入るホールを開けています。
以上でPCBの設計は完了です。
プレートの作成
PCBの設計が出来たので、最後にプレートの作成です。
こちらもFusion360上で既に設計が出来ているのでDXFファイルを出力し厚みを指定してアクリルプレートとして当初製作する予定でしたが・・・
PCBの製作でスポンサーになって頂いているJLCPCBさんの計らいで3Dプリントサービスを試させて頂く機会があったので、透明レジンを使った3Dプリントパーツとして製作することにしました。
JLCPCBの3DプリントサービスJLC3DPのガイドラインによりビスの穴径や厚みなど少しデータを修正する必要がありましたが、結果的に非常に良いパネルとして仕上がりました。
アクリルパネルでは出来ない?凝った形状のものも3Dプリントパーツでは作れるので、PCBとの相性も良くこれからJLC3DPの方も利用頻度が高くなりそうです。
PCB & 3Dプリントパーツの発注
PCBおよびパネルの発注はJLCPCBを使いました。
PCBはJLCPCBに発注、パネルは同サービスのJLC3DPへの発注となります。
PCBの発注
まずPCBの発注です。
トップ・メイン・ボトムの3枚のPCB構成になっているので異種基板の面付けとして1基板データにして発注しようかとも考えましたが、標準サイズとなる10cm×10cm以内に収まる基板サイズだったので格安で製造することが出来るため、それぞれ個別基板として発注することにしました。
基板のアウトラインも個別基板として製造した方がカット面も綺麗に仕上がります。
基板データ(ガーバーファイル)をダウンロード出来るようにしておきます。
製作に興味がある方や、また何かの参考になればと思います。
4KeyPad Main PCB V1.1(Gerber)
4KeyPad Top PCB(Gerber)
4KeyPad Bottom PCB(Gerber)
PCB発注時の選択項目はデフォルトで設定されているものを選択すれば問題ありませんが(基板カラーはお好みで)、基板製造時に任意の位置に入ってしまう基板製造番号を削除するオプションを付けて発注しました。
1.5ドルの有料オプションとなりますが透明パネルを付けて中のPCBが見える状態なので、製造番号を削除するオプションを付けて発注するのがいいと思います。
3PCBともに以下項目を選択しておけば問題ありません!
またメインPCBはステンシルも一緒に発注しました。
ATmega32U4はQFPパッケージのものを使ったので手はんだでももちろん実装は可能ですが、リフローでパーツを実装することを予定しているのでステンシルがあると作業効率は大きく上がります。
配送方法にOCS Expressを選択し、トータル25ドル程で製作することが出来ます。(ステンシル&オプション料金込み)
JLCPCBでの基本的な基板発注方法に関しては、こちらの記事で詳しくまとめているのであわせて見て頂ければと思います。
プレート(3Dプリントパーツ)の発注
次にプレート(スペーサー)パーツの発注です。
こちらは3Dプリントパーツとして発注するので、JLCPCBの3DプリントサービスJLC3DPでの発注となります。
プレートデータ(STL)もダウンロード出来るようにしておきます。(解凍して下さい!)
4KeyPad Plate(STL)
マテリアル(材料)は[8001レジン]で[透明]を選択し製造しました。
透明レジンでの製造は120時間と結構時間がかかりますが、サンディングやオイルスプレーといった後処理もやってくれるため非常に綺麗な仕上がりになります。
配送方法にOCS Expressを選択し、2プレート送料込みで7ドルほどで製造出来ます。
JLCPCBの3DプリントサービスJLC3DPの発注方法は、こちらの記事で詳しくまとめているのであわせて見て頂ければと思います。
PCB & 3Dプリントパーツの到着
OCS Expressを選択しPCBは発注から8日、3Dプリントパーツは12日で手元に届きました!
PCBおよび3Dプリントパーツの製造は他社を圧倒する安さにも関わらず製造&到着が早い、JLCPCBのサービスほんといいですね!
メインPCBは白レジスト、トップとボトムPCBは黒レジストで製作しました。
2枚のプレートも非常に綺麗に仕上がっています!
JLCPCBの3Dプリントサービスは安価ですが、レジンを扱った後処理といった面倒なこともしっかりとやってくれます。
今回初めてJLCPCBの3Dプリントサービスを利用したのですが、透明レジンを使ったパネルがここまで綺麗に仕上がるとは正直思ってなかったので驚きです!
パーツの実装
0603サイズのパーツをメインで使っておりATmega32U4(QFP44)はリード線のピッチが0.8mmと小さいので、SMDパーツに慣れていないとパーツの実装は少し難しいかもしれません!
このサイズのパーツなら慣れていれば手はんだでも十分可能ですが、今回はリフローで実装を行いました。
ステンシルも発注していたので実装は比較的簡単に出来ました!
リフローにはMHP50を使いました。
MHP50はMiniwareのMHP30の後継機となり非常に便利なミニリフロー装置で毎回愛用しています。
MHP50に関しては後日MHP30の記事に追記しておきます。
今回製作したPCBはMHP50のホットプレートサイズを超える大きさがありますが、このようなMHP50専用の治具スタンドを製作しておくと大きな基板にも対応出来て便利です!
MHP50ユーザーの方は非常に便利なので、こちらの記事も見て頂ければと思います。
そしてパーツ実装時に気付いたのですが、使用したRGB LED(SK6812MINI-E)のフットプリントの誤りがありました!
RGB LED SK6812MINI-E について!
SK6812MINI-Eは自作キーボードやキーパッドなどの製作でよく使われているRGB LEDです。
4本のリード線が浮いた位置に取り付けられているという、ちょっと変わったLEDとなっています。
PCBに実装する際にフットプリントにホールを開けておかないとリード線がパッド部分に接地しないということですね。
キー直下に接地したLEDにはホールを開けていたのですが、PCBの背面を照らす外周に取り付けたLEDのホールを入れ忘れていました!
LEDのリード線を少し曲げて一応実装は出来たのですが・・・
少し変わった実装方法のパーツなので1度目のPCB発注ではフットプリントを間違ってしまったのですが、修正したPCBを再度発注して完成させました。(上記ダウンロード出来るガーバーファイルは修正済みデータです!)
ホールを開けLEDを設置する向きを変えることにより、実装面を片側に統一しPCBの表面・裏面を点灯させることが出来る便利なRGB LEDです。(同じ位置に両面実装も出来ます)
他のRGB LED、例えば5050(WS2812B)といったLEDではPCBの点灯面に実装する必要があるため、PCBの表面・裏面を点灯させたい場合は両面実装となってしまいリフローによる実装の難易度が上がってしまいますからね!
組み立て
組み立ては簡単です!
ボトムPCBにM2×3×12mmスペーサーを固定してパネル・PCBを挟み込んでいきます。(指定サイズのスペーサーを使って下さい!)
試作の段階では自宅にある3Dプリンタを使い白フィラメントで出力したプレートを使っていました。
RGB LEDは結構輝度が高いので、それでも綺麗に光を透過してくれるのですが・・・
JLCPCBで製造した透明レジンプレートの出来が非常に良く、製品のような仕上がりで完成させることが出来ました!
動作確認
ファームウェアの書き込み
最後に動作確認です。
ATmega32U4には出荷時にDFU機能のあるブートローダーが書き込まれています。
PCに接続し直接QMKファームウェアを書き込むことが出来ます。
今回製作した4KeyPad用のQMKファームウェア『4keypad_via.hex』を作成したのでこちらをまず書き込みます。(zipファイルを解凍して下さい!)
4keypad_via.hex_.zip
書き込み方法はいくつかありますが、こちらではQMK Toolboxを使って書き込みます。
以下のリンクから最新のQMK Toolboxをダウンロードして下さい。
Macの場合は[.pkgファイル]、Windowsの場合は[.exeファイル]をダウンロードして実行するとQMK Toolboxをインストールすることが出来ます。
参考 qmk_toolboxGitHubQMK Toolboxを立ち上げ[Open]から上記ダウンロードした4KeyPad用ファームウェア[4keypad_via.hex]を選択、MCUは[ATmega32U4]を選択します。
PCB背面にあるリセットスイッチを押すと[Flash]ボタンが選択出来るので、これをクリックしてファームウェアを書き込みます。
無事ファームウェアの書き込みが完了するとこのように表示されると思います。
テキストエディタ等を開きキーをクリックすると左から[1][2][3][4]と入力されればOKです。(LEDは全て赤色に点灯していると思います)
キーマップの変更
デフォルト設定ではキーにそれぞれ[1/2/3/4]を割り当てていますが、REMAPを使いキーマップの変更等を行うことが出来ます。
参考 REMAP トップページREMAPブラウザでREMAPを開き[CUSTOMIZE YOUR KEYBOARD]をクリックします。
[KEYBOARD]をクリックし、 [4KeyPad]を選択し[接続]をクリックします。設定用のjsonファイルを求められるので、以下設定ファイル[4KeyPad.json]をドラッグ&ドロップします。(解凍して下さい!)
4KeyPad.json.zip
現在設定されているキーマップが表示されます。
LEDの点灯を[Effect Mode]やカラーパレットを切り替えて確認して下さい。
問題がなければ、任意の文字やショートカット、レイヤーなどを割り振ってお使い下さい!
REMAPの使い方はこちらでは割愛しますが、4キーのみのキーパッドなので長押しでレイヤーを切り替える設定をしておくと便利だと思います。
一例ですが、レイヤーキーを押した状態で各レイヤーに割り振ったキーで動作させる・・・
このような感じで割り当てると使いやすくなると思います!
ちなみに、[レイヤー1]の状態ではキー直下の4つのLEDが緑色に点灯、[レイヤー2]では青色に点灯、[レイヤー3]ではパープルに点灯し現在のレイヤーを視覚的に分かるようにファームウェアを作っています。
初自作キーパッド『4KeyPad』くん、動かしてみたらちょっと感動🤩
REMAPにも対応できすごくいい感じ👌
LEDの配置は設計時のCAD上だけではイメージ出来なかったけど、なんかいい感じに回り込むように表示出来てる。
各レイヤーによって点灯色も変えてみたけど、これも分かりやすくていいと思う。 https://t.co/VnBP5UE9gL pic.twitter.com/o1jBe4LTo7
— ガジェット大好き!! (@smartphone_jp1) April 25, 2024
使用パーツ一覧
今回使用したパーツ一覧です。
パーツ | 定数 | 入手先 |
コンデンサ (0603) | C1/C3 22pF C2/C5 15pF C4/C8 100nF C6 1μF C7 4.7μF | AliExpress |
ダイオード | D1 1N5819WS (SOD-323) | AliExpress |
USB端子 | J1 Type-C | AliExpress / 秋月電子 |
LED | LED1~LED8 SK6812MINI-E | AliExpress / 秋月電子 |
抵抗 (0603) | R1/R6 10kΩ R2/R5 22Ω R3/R4 5.1kΩ | AliExpress |
MCU | U1 ATmega32U4(QFP) | AliExpress / 秋月電子 |
クリスタル | Y1 クリスタル16MHz (SMD-3225) | AliExpress |
スイッチソケット | Kailh Switch Socket(MX用) | AliExpress / 遊舎工房 |
スイッチ | SW1~SW4 Cherry MX互換キー (お好みで!) | AliExpress / 遊舎工房 |
SW5 RESETスイッチ (SMD3×4×2.5mm) | AliExpress | |
スペーサー | M2×3×12mm 6本 | Amazon |
ビス | M2ビス(4mm or 5mm) 12本 | ーーー |
最後に!
初めて製作した自作キーパッドが無事完成しました!
なかなか良い仕上がりになったと思います。
キーレイアウトから始まりCADでのパーツ&PCBの設計、そしてファームウェアやREMAPへの対応など自作キーボード製作の一通りの流れを経験することができ、非常に得るものが多かったプロジェクトになりました。
自作キーボード製作に興味がある方は、今回ご紹介したものはPro Microでも再現で出来るのでブレッドボードで組みファームウェアを書き込み動作を確認するといったことも出来るので興味がある方はやってみるのも面白いと思います。
[…] 【電子工作 / PCB】初めての自作キーパッド『4KeyPad』の製作! […]