11月25日発売 書籍『Arduinoと3Dプリンタでロボットを作ろう』を出させて頂きました!

【自作キーボード / 電子工作】ミニマクロパッド『SnapMate』の製作。オンボードRP2040搭載の回路や基板設計について!

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

【自作キーボード】これまで製作した自作キーボード&マクロパッドまとめ!【2024年】

私の場合、自分で設計して製作するものは基本的に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のフラッシュ容量では厳しくなることがこれまで多々ありました。

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など3.3VマイコンでNeoPixel RGB LED(WS2812B / SK6812)を点灯させるには!

以上が最もベーシックなRP2040を使ったキーボードの回路構成になるかと思います。

既存のマイコンボードを使わずオンボードRP2040で基板を設計する場合、ATmega32U4で組む場合と比べかなりパーツの数が増えてしまうので、キースイッチやLEDの穴が多い自作キーボードの基板ではパーツの配置や配線が大変になってくる事が多く感じます。

RP2040まわりの回路や基板設計は、Raspberry Pi公式サイトにある『Raspberry Pi Datasheets』が大変役立ちます!
RP2040を使ったサンプル基板がいくつか公開されており、回路図やKiCadの基板設計データなども見ることが出来るので、これに従い設計を進めていくと理解も深まると思います。

初めてRP2040を使った基板設計で製作したブレークアウトボードは、自作キーボード製作のテストでも役立っています!

【電子工作 / PCB】初めてのRP2040を使った基板設計。テスト回路を組む際に使える最小構成で組んだ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サイズのパーツを使っていれば、おそらく今回製作した基板サイズでも楽に設計出来ていたと思います。

またRP2040に接続するフラッシュチップのサイズもいくつか試しています。
同じチップでもチップサイズは数種類あるので、このあたりのサイズが使えれば今後の基板設計は楽になりそうです。(チップサイズが小さくなると実装は当然難しくなりますが)

今回製作したこのマクロパッドは、今後RP2040を使った自作キーボードを設計する際の検証およびテスト的に製作したものとなります。
当初KiCad上でのテストまでに留めておく予定でしたが、うまく設計が出来たと思うので実際に形にし製作することにしました。

JLCPCBに基板を発注

今回製作した基板データ(ガーバーファイル)をダウンロード出来るようにしておきます。
何かの参考になればと思います。
※Gerber1 ‐ メインPCB  /  Gerber2 – キープレート

基板の発注はJLCPCBを使いました。
このサイズの基板であれば面付けしても料金的にほぼ変わらないので、メイン基板とキープレートは個別基板としています。

JLCPCBに発注する際の選択項目は特記すべきところはありませんが、余計なシルク文字がプリントされるのを避けるために[PCB上のマーク]は[マーク除去]を指定しておくのがいいと思います。(無料オプションです)
[PCBカラー]はお好みで選択して下さい。

MEMO
本記事で製作した基板は、表面処理に金メッキ加工(ENIG)を選択しています。(オプション料金がかかります)

あとパーツの実装方法にもよりますが、私はリフローによる実装を想定していたのでメイン基板の方はステンシルも一緒に発注しました。

はんだ付けにある程度慣れた方であれば手はんだでの実装も十分可能なパーツ構成となっていますが、ヒートガンやリフローによる実装環境があるならステンシルを使うと作業効率が良く綺麗に実装することが出来ます。

ステンシルも一緒に発注する場合、下にある[PCBと一緒に発注する]を選択します。
JLCPCBのステンシルは、サイズを指定しないと結構大きなサイズで届いてしまい実装の際に面倒となるのでサイズを指定しておいた方がいいと思います。
ボードサイズが約70mm×40mmなので、100mm×100mmにサイズを指定して発注しました。(サイズ指定は無料で出来ます)

ステンシル料金7ドルが加算されます。
配送方法にOCS Expressを選択し、メイン基板・ステンシル・キープレートのトータルコストは約23ドルほどとなりました。

MEMO
ステンシルを発注する場合、サイズ(重量)の関係で配送方法にOCS NEPを利用することが出来ません!

JLCPCBの基本的な基板やステンシルの発注方法に関してはこちらの記事で詳しくまとめています。
あわせて見て頂ければと思います。

【電子工作 / 基板製作】これから始める自作基板。JLCPCBでの基板発注ガイド(2025年版)
【JLCPCB】初めてステンシルを使ったリフローを行ってみました。JLCPCBでステンシルを発注する手順などを紹介!

JLC3DPにケースを発注

ケースはJLC3DPに発注しました。
JLC3DPはJLCPCBの関連サービスとなるので、基板と一緒に発注すれば送料が1回分で済むのでお得です!

ケースデータ(STL)もダウンロード出来るようにしておきます。(スペーサーパーツ含む)
こちらからダウンロードして下さい。

ケースデータ(SnapMate_Case.stl)をJLC3DPのサイトにドラッグ&ドロップしてアップロードし、あとは製造するマテリアル(材料)を選択するだけです。

小さなケースとなりJLC3DPでは非常にお安く製造出来るので、スプレー塗装した光沢ブラックと光沢グレー、そして透明ケースの3パターン製作してみました。

スプレー塗装したケースはベースに[LEDO 6060レジン]を選択し、[表面仕上げ]に[スプレー塗装]オプションを付けカラーを選択します。
4.3ドルと非常にお安いですね!

透明ケースはベースに[8001 レジン]を選択し、[表面仕上げ]に[オイルスプレー]を選択します。
サンディング処理が入りアクリルパネルのような透明ケースに仕上がります。
こちらも5ドルほどと非常にお安いです!

JLC3DPの基本的な発注方法やスプレー塗装などに関してはこちらの記事で詳しくまとめています。
あわせて見て頂ければと思います。

【JLCPCB / JLC3DP】JLCPCBの3Dプリントサービス(JLC3DP)を利用してみました。発注手順などをご紹介!
【JLC3DP/JLCPCB】JLC3DPのスプレー塗装サービスを利用してみました!

基板 & ケースの到着

今回、基板と3Dプリントケースを一緒に発注しました。
基板の製造は基本的に1~2日ほどで完了しますが3Dプリントパーツは時間がかかります。
配送方法にOCS Expressを選択し、発注から2週間ほどで手元に届きました。

3Dプリントケースもいつもながら綺麗な仕上がりです!

ステンシルも一緒に発注するとお安い配送方法のOCS NEPが選択出来ないのは残念なのですが、それでも他社と比べると圧倒的にお安く配送も非常に早いので毎回助かっています。

パーツの実装

それではパーツの実装です。
ステンシルを使いはんだペーストを塗布します。

はんだペーストはどのようなものを使われているの?
というお問い合わせをこれまで何度か頂いた事があるのでリンクを貼っておきます。

ステンシルを使い基板のパッド部分にはんだペーストを塗布する際は、ある程度粘性がある(硬いと表現するのかな?)ものを使うのが私はやりやすいと思います。
柔らかすぎるとパッド部分から垂れてしまいリフロー後のブリッジにつながりやすい印象です。

これまでいくつかはんだペーストを試してみましたが、最近はこちらのものを定期的に購入して使っています。
共晶はんだと呼ばれるもので、錫(Sn)と鉛(Pb)の合金で構成されたはんだです。
融点が低く(183℃)、一般的によく使われているものだと思います。

また、はんだペーストをのばすヘラはこちらを使っています。

パーツの実装はMHP50というミニリフロー装置を使いました。
自作基板の製作ではいつも愛用している非常に便利なリフロー装置です。

【電子工作 / PCB】ミニリフロー装置『Miniware MHP50』を使ってみる!加熱性能や安全設計はMHP30から全て引き継がれ使い勝手がさらに向上した便利なリフロー装置です

パーツの実装が完了したらファームウェアの書き込みを行うのですが、初めて通電する際にはテスター等を使い電源ラインの短絡チェックを行っておきます。

データラインの短絡やはんだ不良なら動かないで済むのですが、電源ラインの短絡があると怖いのでチェックしておきましょう。
Type-C端子の実装は結構ブリッジしやすいので要チェックですね!

これまでテスターを使い電源ラインの短絡チェックを行っていましたが、自作のUSB電源管理ボードを製作してからチェックが非常に楽になりました!

【電子工作 / 自作基板】CH217Kを使ったUSB電源保護ボード『USB Power Toggle』の製作!

ファームウェアの書き込み

パーツの実装が問題がなければファームウェアの書き込みです。
QMK/Vial対応ファームウェア[snapmate_vial.uf2]はこちらからダウンロードして下さい。

本基板にUSBケーブルを挿しPCと接続し、[BOOT]スイッチを押した状態で[RESET]スイッチを押すとDFUモードに入ります。(初めて通電する際はDFUモードで立ち上がると思います)

MEMO
BOOT/RESETのシルクプリントが逆になっていたので、上記ダウンロードリンクから落とせるガーバーファイルは修正しています!

PCにUSBマスストレージとして認識されるので、あとは上記Vialファームウェアをドラッグ&ドロップして書き込めば完了です。
通常の書き込み方法ですね!

ブラウザ版またはアプリ版のVialを開き、キースイッチの入力が正しく行われるか?
またLEDの点灯に問題がないかの確認を行って下さい!

組み立て

動作確認が出来たら最後に組み立てです。

上記ケースのダウンロードデータには、メイン基板とキープレートの間に挟むパーツ(スペーサー)のデータも一応入れています。

入れなくても問題ありませんが、TPUなどの素材で作り挟み込むといいかもしれません。(ポロンシートの代用として)

ケースにM2×5mm(OD3.5mm)のインサートナットを圧入します。(2ヶ所)

今回JLC3DPで製造したケースはレジン系マテリアルを使用しています。
レジンではFDMフィラメントのように熱で樹脂を溶かすことが出来ないので本来は熱圧入には不向きとなりますが、OD3.5mmのインサートナットをはんだゴテの熱で圧入出来るホールサイズに調整しています。(多少熱で柔らかくなり入ってくれます)

インサートナットの圧入には、このようなインサートナット専用のチップ(コテ先)があると便利です。(下写真のものはT12用です)

はんだゴテはFX600を使われている方が多いと思います。
FX600で使う時は下記のチップを使っています。
各サイズがセットになったものを持っていると大変便利です!

おそらくこれで抜けることはないと思いますが・・・ 本来レジンでは熱圧入ではなく接着することが推奨されています!
接着剤を塗った状態ではんだゴテで圧入したり、また圧入後に隙間に流し込むタイプの瞬間接着剤を使えば完全に固定出来ると思います。
私はいつも後者のやり方で固定しています。

MEMO
使用する接着剤の成分にもよるかと思いますが、スプレー塗装を溶かす場合もあるので気をつけて下さいね!

固定には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 500mAAliExpress
USB端子J1 Type-C端子AliExpress / 秋月電子
スイッチソケットKEY1~KEY6 MXソケットAliExpress / 遊舎工房
LEDLED1~LED6 SK6812MINI-EAliExpress / 秋月電子
MOSFETQ1 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
ESDU1 USBLC6-2SC6(SOT-23-6)AliExpress
フラッシュU2 W28Q128JVSAliExpress
LDOU3 ME6211C33(SOT23-5)AliExpress
MCUU4 RP2040AliExpress / 秋月電子
クリスタル
(3225)
Y1 12MHzAliExpress / 秋月電子
ケース固定用M2×5mmビス ×2
ヒートインサートM2×5mm(OD3.5mm) ×2
AliExpress

最後に!

RP2040を使ったキーボードの基板設計テスト的に製作したマクロパッドとなりますが、コンパクトで可愛く仕上がったと思います。

このマクロパッドの製作を機にRP2040を使った自作テンキーパッドやタッチセンサー搭載のマクロパッドの製作などに発展していけたので、今回の製作も個人的に得るものが非常に多く楽しい製作になりました。

【自作キーボード / 電子工作】4ポートUSBハブ機能を持ったテンキーパッド『NumDock』を製作しました!
【電子工作 / 自作基板】静電容量式タッチキー搭載の自作マクロパッド『PockeTouch』の製作!

コメントを残す