電子工作の延長として昨年から自作キーボード製作を始めました。
最近では自分で設計したキーボードやマクロパッド以外にオープンソースで公開されているもので気に入ったものがあれば製作するようにもなりました。

私の場合、自分で設計して製作するものは基本的にPro MicroやRP2040系の既存のマイコンボードは使わず、ATmega32U4やRP2040といったマイコンチップを基板(PCB)に直で組み込むオンボードタイプのものを作ることが多いです。
マイコンまわりの回路を含め全て自分で設計しリフロー等でパーツの実装を行い完成させるというのは電子工作的にも面白くなるかと思います。
既存ボードを使う場合のスペースを空ける必要がなく、またUSB端子など好みの位置に取り付け出来ることからケース設計での自由度も上がると思います。
そして今回はオンボードRP2040搭載のミニマクロパッド『SnapMate』を製作したのでご紹介したいと思います。
と言っても特に目新しいものでもなくシンプルな6キーマクロパッドとなり、そして製作したのが昨年ということもあり少し時間が経ってしまったので、オンボードRP2040搭載のキーボードやマクロパッド製作における回路や基板設計などの話に寄せた内容で書いてみたいと思います。
目次
ミニマクロパッド『SnapMate』の製作。オンボードRP2040搭載の回路や基板設計について!
一昔前の自作キーボードでは、マイコンボードにPro Microがよく使われていたようですね。
最近ではRaspberry Pi Picoや小型なRP2040 ZeroといったRP2040を搭載したマイコンボードが安価で入手出来るようになったこともあり使われているのをよく見かけます。
QMKといったキーボード用ファームウェアに標準対応しているので、これらのマイコンボードを使えば比較的簡単にキーボードとしての機能を実装することが出来るわけですが、RP2040を搭載した安価なボードが登場したこともあり、最近ではPro Microを使うメリットはあまりないように個人的には感じています。
Pro MicroはArduinoでもお馴染みのAVRマイコンとなり、マイコンチップにATmega32U4が使われています。
USB機能が付いているので、USB-シリアル変換を行うチップを介すことなくマイコンチップ単体でPCとの接続ができ便利なのでArduinoを使ったことがある方ならもうお馴染みのマイコンボードですね。
しかしながら、少し世代の古いマイコンボードとなるので自作キーボードではフラッシュ容量が厳しくなる場合があります。
QMK/Vialといったキーボード内(マイコンのフラッシュメモリ)にキーマップ情報を格納するファームウェアでは、ATmega32U4の32KBのフラッシュ容量では厳しくなることがこれまで多々ありました。
少しずつ以前作った自作キーボードのVial対応ファームも作ってる!
RP2040はフラッシュ容量気にする必要ないけどATmega32U4は容量ギリギリなので、機能削ってはコンパイルしての繰り返しになる😅 pic.twitter.com/O2lDCVVsc8
— ガジェット大好き!! (@smartphone_jp1) February 16, 2025
RP2040を使ったマイコンボードでは大きな容量の外部フラッシュが搭載されているので、最近のキーボードやマクロパッドなどで使われているのが多いのは納得です!
しかしRP2040搭載のマイコンボードを使わずRP2040チップをオンボード搭載するキーボードを設計する場合、ATmega32U4を使う場合に比べると使用する電子パーツの数がどうしても増えてしまうことから、キースイッチやマウント用のビス穴といったものが非常に多いキーボードの基板では場合によっては基板設計が難しくなってくることが多いように感じます。
RP2040はこれまで自作基板の製作で何度か使ったことがありますが、自作キーボードの基板では初めてだったので、オンボードでRP2040を搭載したミニマクロパッドをテスト的に今回製作してみることにしました。
RP2040を使った回路設計
今回製作したマクロパッドは、6キーのみのシンプルなものとなります。
既存のマイコンボードは使わず、RP2040オンボードタイプの基板としてテスト的に製作してみました。
こちらが全体回路構成です。
同じ構成のマクロパッドをATmega32U4を使った設計にする場合に比べ、必要なパーツの数が大分多くなってしまいます。
RP2040まわりの構成
まずコアとなるRP2040まわりです。
RP2040はデュアルコアを搭載し内部バスも高速なので、高速クロック動作でのノイズ等の発生を抑えるために多くのバイパスコンデンサ(デカップリングコンデンサ)が必須となります。
各電源ピンごとに個別にデカップリングが必要となるということですね。[画像引用]
外部フラッシュの接続
RP2040にはフラッシュメモリが内蔵されていません。
そのためQSPI接続の外部フラッシュが必要となります。
自作キーボードではQMK等で作られたファームウェア(◯◯.uf2)はこの外部フラッシュに書き込まれ、RP2040がそれを実行することになります。
3.3Vレギュレーターが必要
有線タイプの自作キーボードでは、USB端子のVBUSから5Vの電源供給を行い動かすのが基本となります。
VBUSラインからは5Vを取り出せるのでATmega32U4といった5V駆動のマイコンを使う場合はそのまま使えるのですが、RP2040は3.3Vで動作するマイコンなので3.3Vの電圧レギュレーター(LDO)が必要となります。
NeoPixel(RGB LED)を点灯させるには信号線のレベルシフトが必要
SK6812やWS2812BといったRGB LED、いわゆるNeoPixelを搭載して点灯させたい場合、信号レベルの調整が必要となってきます。
NeoPixelは5V駆動のデバイスとなるのでRP2040のGPIOピンの電圧レベル(3.3V)では動作が不安定になることもあるため、3.3V→5.0Vにレベル変換する回路が必要となります。
レベルシフトをしなくても問題なく動く場合も多いようですが、基本に従い回路を組むなら必要となるかと思います。

以上が最もベーシックなRP2040を使ったキーボードの回路構成になるかと思います。
既存のマイコンボードを使わずオンボードRP2040で基板を設計する場合、ATmega32U4で組む場合と比べかなりパーツの数が増えてしまうので、キースイッチやLEDの穴が多い自作キーボードの基板ではパーツの配置や配線が大変になってくる事が多く感じます。
RP2040まわりの回路や基板設計は、Raspberry Pi公式サイトにある『Raspberry Pi Datasheets』が大変役立ちます!
RP2040を使ったサンプル基板がいくつか公開されており、回路図やKiCadの基板設計データなども見ることが出来るので、これに従い設計を進めていくと理解も深まると思います。
初めてRP2040を使った基板設計で製作したブレークアウトボードは、自作キーボード製作のテストでも役立っています!

CADのイメージ
それでは今回製作した本題となるミニマクロパッドの話に戻します。
オンボードRP2040搭載の自作キーボードのテストとして小型なマクロパッドをイメージしCAD設計に入りました。
無駄なスペースを一切作らず、3×2レイアウトで作れる最小基板サイズで上記のようにRP2040の基本回路を全て入れることが出来るかな?というテストも兼ねて製作してみることにしました。
今後RP2040を使って製作するであろうキーボードの設計にも役立ちそうです!
シンプルなミニマクロパッドですが左右どちらに置いても打ちやすく、上下を反転させてUSB端子の向きを変えて使えるように0.25Uピッチずらしてスイッチを配置することにしました。
若干上下のピッチをズラすことによりRP2040を実装するための十分なスペースも確保することが出来ます。
CAD上で完成サイズ&イメージが出来ましたが、果たしてこのサイズの基板に全てのパーツを収めることが出来るのか・・・
基板設計
基板サイズ約70mm×40mmに上記回路の全パーツを入れるのは結構大変でしたが・・・なんとか入りました。
LEDを定位置に入れると上下キースイッチのピッチを0.25Uほどズラしておかないと0603サイズのパーツではかなり厳しくなる印象です!
RP2040まわりのバイパスコンデンサなど、なんとか適切な位置に配置に出来たかな?と思ます。
RP2040まわりのパーツの配置や基板設計に関しても先ほどのRaspberry Pi公式『Raspberry Pi Datasheets』が役立ちます!
始めてRP2040を使った基板を設計される方は、KiCadで設計されたデータも見ることが出来るので照らし合わせながら設計を進めていくのはオススメです!
自作キーボードの基板ではご覧の通りキースイッチやLED、マウント用のビス穴など多くのホールが存在するため、実際に取れる実装面積がかなり限らててしまいます。
レイアウトによってはRP2040まわりのパーツを実装するスペース確保が難しくなる場合も考えられるので、このマクロパッドの製作を機にパッケージサイズを1段落とした0402サイズのものも使えるように挑戦もしています。
0402サイズのパーツを使っていれば、おそらく今回製作した基板サイズでも楽に設計出来ていたと思います。
初めての0402実装チャレンジやっていくよ。
それにしても小さい、肉眼ではほぼ分からん!
普段よく使う0603サイズがメチャ大きく感じる。もうこのサイズのチップ抵抗になると数値の記載が無いのね。
気をつけよう📝 https://t.co/mLzf0ehCrF pic.twitter.com/k7YYzj1HHt— ガジェット大好き!! (@smartphone_jp1) January 31, 2025
またRP2040に接続するフラッシュチップのサイズもいくつか試しています。
同じチップでもチップサイズは数種類あるので、このあたりのサイズが使えれば今後の基板設計は楽になりそうです。(チップサイズが小さくなると実装は当然難しくなりますが)
RP2040のフラッシュは今回SOP-8を使ったけど、次作るやつはSON-8パッケージを使ってみる。
多分実装はもう問題ないはず! pic.twitter.com/NMZWWmyBIe
— ガジェット大好き!! (@smartphone_jp1) November 23, 2024
今回製作したこのマクロパッドは、今後RP2040を使った自作キーボードを設計する際の検証およびテスト的に製作したものとなります。
当初KiCad上でのテストまでに留めておく予定でしたが、うまく設計が出来たと思うので実際に形にし製作することにしました。
JLCPCBに基板を発注
今回製作した基板データ(ガーバーファイル)をダウンロード出来るようにしておきます。
何かの参考になればと思います。
※Gerber1 ‐ メインPCB / Gerber2 – キープレート
基板の発注はJLCPCBを使いました。
このサイズの基板であれば面付けしても料金的にほぼ変わらないので、メイン基板とキープレートは個別基板としています。
JLCPCBに発注する際の選択項目は特記すべきところはありませんが、余計なシルク文字がプリントされるのを避けるために[PCB上のマーク]は[マーク除去]を指定しておくのがいいと思います。(無料オプションです)
[PCBカラー]はお好みで選択して下さい。
あとパーツの実装方法にもよりますが、私はリフローによる実装を想定していたのでメイン基板の方はステンシルも一緒に発注しました。
はんだ付けにある程度慣れた方であれば手はんだでの実装も十分可能なパーツ構成となっていますが、ヒートガンやリフローによる実装環境があるならステンシルを使うと作業効率が良く綺麗に実装することが出来ます。
ステンシルも一緒に発注する場合、下にある[PCBと一緒に発注する]を選択します。
JLCPCBのステンシルは、サイズを指定しないと結構大きなサイズで届いてしまい実装の際に面倒となるのでサイズを指定しておいた方がいいと思います。
ボードサイズが約70mm×40mmなので、100mm×100mmにサイズを指定して発注しました。(サイズ指定は無料で出来ます)
ステンシル料金7ドルが加算されます。
配送方法にOCS Expressを選択し、メイン基板・ステンシル・キープレートのトータルコストは約23ドルほどとなりました。
JLCPCBの基本的な基板やステンシルの発注方法に関してはこちらの記事で詳しくまとめています。
あわせて見て頂ければと思います。


JLC3DPにケースを発注
ケースはJLC3DPに発注しました。
JLC3DPはJLCPCBの関連サービスとなるので、基板と一緒に発注すれば送料が1回分で済むのでお得です!
ケースデータ(STL)もダウンロード出来るようにしておきます。(スペーサーパーツ含む)
こちらからダウンロードして下さい。
ケースデータ(SnapMate_Case.stl)をJLC3DPのサイトにドラッグ&ドロップしてアップロードし、あとは製造するマテリアル(材料)を選択するだけです。
小さなケースとなりJLC3DPでは非常にお安く製造出来るので、スプレー塗装した光沢ブラックと光沢グレー、そして透明ケースの3パターン製作してみました。
スプレー塗装したケースはベースに[LEDO 6060レジン]を選択し、[表面仕上げ]に[スプレー塗装]オプションを付けカラーを選択します。
4.3ドルと非常にお安いですね!
透明ケースはベースに[8001 レジン]を選択し、[表面仕上げ]に[オイルスプレー]を選択します。
サンディング処理が入りアクリルパネルのような透明ケースに仕上がります。
こちらも5ドルほどと非常にお安いです!
JLC3DPの基本的な発注方法やスプレー塗装などに関してはこちらの記事で詳しくまとめています。
あわせて見て頂ければと思います。


基板 & ケースの到着
今回、基板と3Dプリントケースを一緒に発注しました。
基板の製造は基本的に1~2日ほどで完了しますが3Dプリントパーツは時間がかかります。
配送方法にOCS Expressを選択し、発注から2週間ほどで手元に届きました。
3Dプリントケースもいつもながら綺麗な仕上がりです!
ステンシルも一緒に発注するとお安い配送方法のOCS NEPが選択出来ないのは残念なのですが、それでも他社と比べると圧倒的にお安く配送も非常に早いので毎回助かっています。
パーツの実装
それではパーツの実装です。
ステンシルを使いはんだペーストを塗布します。
はんだペーストはどのようなものを使われているの?
というお問い合わせをこれまで何度か頂いた事があるのでリンクを貼っておきます。
ステンシルを使い基板のパッド部分にはんだペーストを塗布する際は、ある程度粘性がある(硬いと表現するのかな?)ものを使うのが私はやりやすいと思います。
柔らかすぎるとパッド部分から垂れてしまいリフロー後のブリッジにつながりやすい印象です。
これまでいくつかはんだペーストを試してみましたが、最近はこちらのものを定期的に購入して使っています。
共晶はんだと呼ばれるもので、錫(Sn)と鉛(Pb)の合金で構成されたはんだです。
融点が低く(183℃)、一般的によく使われているものだと思います。
また、はんだペーストをのばすヘラはこちらを使っています。
パーツの実装はMHP50というミニリフロー装置を使いました。
自作基板の製作ではいつも愛用している非常に便利なリフロー装置です。

パーツの実装が完了したらファームウェアの書き込みを行うのですが、初めて通電する際にはテスター等を使い電源ラインの短絡チェックを行っておきます。
データラインの短絡やはんだ不良なら動かないで済むのですが、電源ラインの短絡があると怖いのでチェックしておきましょう。
Type-C端子の実装は結構ブリッジしやすいので要チェックですね!
これまでテスターを使い電源ラインの短絡チェックを行っていましたが、自作のUSB電源管理ボードを製作してからチェックが非常に楽になりました!

ファームウェアの書き込み
パーツの実装が問題がなければファームウェアの書き込みです。
QMK/Vial対応ファームウェア[snapmate_vial.uf2]はこちらからダウンロードして下さい。
本基板にUSBケーブルを挿しPCと接続し、[BOOT]スイッチを押した状態で[RESET]スイッチを押すとDFUモードに入ります。(初めて通電する際はDFUモードで立ち上がると思います)
PCにUSBマスストレージとして認識されるので、あとは上記Vialファームウェアをドラッグ&ドロップして書き込めば完了です。
通常の書き込み方法ですね!
ブラウザ版またはアプリ版のVialを開き、キースイッチの入力が正しく行われるか?
またLEDの点灯に問題がないかの確認を行って下さい!
組み立て
動作確認が出来たら最後に組み立てです。
上記ケースのダウンロードデータには、メイン基板とキープレートの間に挟むパーツ(スペーサー)のデータも一応入れています。
入れなくても問題ありませんが、TPUなどの素材で作り挟み込むといいかもしれません。(ポロンシートの代用として)
ケースにM2×5mm(OD3.5mm)のインサートナットを圧入します。(2ヶ所)
今回JLC3DPで製造したケースはレジン系マテリアルを使用しています。
レジンではFDMフィラメントのように熱で樹脂を溶かすことが出来ないので本来は熱圧入には不向きとなりますが、OD3.5mmのインサートナットをはんだゴテの熱で圧入出来るホールサイズに調整しています。(多少熱で柔らかくなり入ってくれます)
インサートナットの圧入には、このようなインサートナット専用のチップ(コテ先)があると便利です。(下写真のものはT12用です)
はんだゴテはFX600を使われている方が多いと思います。
FX600で使う時は下記のチップを使っています。
各サイズがセットになったものを持っていると大変便利です!
おそらくこれで抜けることはないと思いますが・・・ 本来レジンでは熱圧入ではなく接着することが推奨されています!
接着剤を塗った状態ではんだゴテで圧入したり、また圧入後に隙間に流し込むタイプの瞬間接着剤を使えば完全に固定出来ると思います。
私はいつも後者のやり方で固定しています。
固定にはM2×5mmビスを使います。(2ヶ所)
以上で完成です!
使用パーツ一覧
今回使用したパーツの一覧です。
パーツ | 定数 | 入手先 |
コンデンサ (0603) | C1/C3 1μF C2/C6/C7/C8/C9/C10/C11/C12/C13/C14 100nF C4/C5 15pF | AliExpress |
ショットキーダイオード | D1 1N5819W(SOD-323) | AliExpress |
ヒューズ (0805) | F1 500mA | AliExpress |
USB端子 | J1 Type-C端子 | AliExpress / 秋月電子 |
スイッチソケット | KEY1~KEY6 MXソケット | AliExpress / 遊舎工房 |
LED | LED1~LED6 SK6812MINI-E | AliExpress / 秋月電子 |
MOSFET | Q1 BSS138(SOD-23) | AliExpress / 秋月電子 |
抵抗 (0603) | R1/R3 5.1kΩ R2/R4/R6/R7 10kΩ R5/R8 1kΩ R9/R10 27Ω | AliExpress |
タクトスイッチ | SW1/SW2 3mm×4mm(4P SMD) | AliExpress |
ESD | U1 USBLC6-2SC6(SOT-23-6) | AliExpress |
フラッシュ | U2 W28Q128JVS | AliExpress |
LDO | U3 ME6211C33(SOT23-5) | AliExpress |
MCU | U4 RP2040 | AliExpress / 秋月電子 |
クリスタル (3225) | Y1 12MHz | AliExpress / 秋月電子 |
ケース固定用 | M2×5mmビス ×2 ヒートインサートM2×5mm(OD3.5mm) ×2 | AliExpress |
最後に!
RP2040を使ったキーボードの基板設計テスト的に製作したマクロパッドとなりますが、コンパクトで可愛く仕上がったと思います。
このマクロパッドの製作を機にRP2040を使った自作テンキーパッドやタッチセンサー搭載のマクロパッドの製作などに発展していけたので、今回の製作も個人的に得るものが非常に多く楽しい製作になりました。


















コメントを残す