電子工作の延長として昨年から自作キーボードの製作も始めました。
自作キーボードではマイコンボードにPro Microが使われる事が多いようですね。
Pro MicroはMCU(マイコン)にATmega32U4が使われたボードとなり、USB機能が付いているのでUSB-シリアル変換チップといったものを介すことなくPCに直接接続してUSB機能を使うことが出来るので便利です。
Arduinoから電子工作を始めた私としては、なにかと使う機会が多いマイコンボードの一つです。
最近の自作キーボードではRP2040を使ったものも多いのかな?
RP2040を使ったものでは、Raspberry Pi PicoやRP2040 Zeroといったミニボードを安価で入手出来るので最近の自作キーボードで使われているのをよく見かけます。
自作キーボードを始めた頃はQMKといったキーボード用のファームウェアを動かすだけなのでMCUの選定は特に深く考えたことがなく、自分で設計して作ったものでは既存ボードを使うことはあまりないため、回路設計&パーツ点数を少なく出来るATmega32U4を使うことがこれまで多かった気がします。

そしてオープンソースで公開されている自作キーボードも作るようになったのですが、Pro Microが使われたものだとファームウェアの容量が気になることがあります。
RP2040を使ったボードではフラッシュの容量が気になることは全く無いのですが、Pro Microではフラッシュ容量が32KBとなっておりその内ブートローダーが2KBほど占有しているので実質30KB前後の容量しかありません。
ATmega32U4を使って設計したキーボードを製作した際にコンパイル時に容量がギリギリだよっといった警告が出ているのは認知していたのですが・・・
最近になりVialも使うようになり、ファームウェアをVialに対応させる際にフラッシュ容量がオーバーしてしまうことが多く、使わない機能をカットしたりと面倒になることも多くなりました。
Disorder30くんのカスタムVialファーム、コンパイル通った!
フラッシュ残容量26バイト、頑張った pic.twitter.com/7buadJAXdD— ガジェット大好き!! (@smartphone_jp1) February 19, 2025
そこで既にPro Microを使ったキーボードで、Pro Micro互換で作られたRP2040ボードがあると差し替えるだけで簡単にRP2040に対応することができて便利かな?
といことで、Pro Microのボードサイズでピンアウトに互換性を持たせたRP2040ボードを製作してみようかと考えています。
Pro Microに置き換えて使えるRP2040ボードの製作
Pro MicroはSparkFun製のボードが本家・オリジナルのものとなり、最近ではUSB端子がType-Cになった互換(クローン)ボードが多く出回っています。
USB機能が使えるので電子工作ではお馴染みのボードだと思いますが、自作キーボードでよく使われているというのは最近知りました。
しかしながらPro Microはもう古いボードとなり最近ではRP2040を搭載したボードが安価で入手することが出来るので、あえてPro Microを選ぶ必要性はあまりないように感じます。
Pro Microに置き換えて使える、ピンアウトに互換性を持たせたRP2040ボードってあるのかな?
Twitterで教えて頂いたのですが、このようなボードも販売されているようですね!
— urihara (@kurihary) February 22, 2025
そうです、そうです!
イメージしていたのはこんなボードです。
ピンアウトを見ると、I/Oピンや電源・リセット、ADCといった配置がPro Micro互換となっています。
RP2040のロジックレベルは3.3VとなりPro Micro(ATmega32U4)の5Vとは異なるためLEDの点灯部分で電圧レベルが問題になりそうなので、そのあたりにも手を加えたボードを製作してみようかと考えています。
これならPro Microを使った既存のキーボードで、マイコンボードを差し替えるだけでRP2040仕様で使うことが出来そうです。
RP2040ではGPIOピンの指定方法や使われるドライバ等がATmega32U4とは変わってくるのでファームウェアの手直しは当然必要となってきますが、キーボードとしてのハードウェア部分は互換性がありソフトウェア側の最小限の手直しだけで対応することが出来そうです!
ボードサイズの選定
互換ボードとして製作するならボードサイズはどうするか?
市販されているUSB端子がType-Cになった互換Pro Microボードの多くは、本家SparkFunのmicroUSBタイプのものより長手方向に数ミリほど若干ボードサイズが大きくなっています。
手元にある市販されている互換Pro Microのサイズをいくつか計測してみると、ボードサイズは約36mm×18mmで作られているものが多いようです。
USB端子は基板エッジから少し飛び出る感じで実装されているので、それを入れるとだいたい37.5mmということになります。
自作互換ボードとして製作するのでボードサイズは自由に作ることが出来るのですが、ケースを使用したキーボードではボードサイズが長すぎるとUSB端子がケースに干渉したり、また短すぎると使用するケーブルによっては差し込めない場合も出てくるので、一般的に入手しやすい上記互換ボードと入れ替えて使うことを想定してボードサイズは37.5mm×18mmとしました。
使用するType-C端子の関係で基板エッジに端子の面を合わようと考えているので、これで上記互換ボードとUSB端子の位置がほぼ合うように考えています。
逆挿しでもピンヘッダーが使えるように
自作キーボードではPro Microを基板に実装する際に、USB端子の高さ方法の位置やメイン基板の設計により逆挿しでマウントすることも多いと思います。
逆挿しにする場合に面倒となるのがピンヘッダーの取り付けです。
Type-C端子はPCB面から約3.5mmの高さがあるため逆挿しで基板に固定する場合、よく使われる一般的なピンヘッダーではハウジング部分の高さが2.5mmなので少し浮いた状態になってしまいます。
またコンスルーを使って固定する場合も同様で2.5mm高のものでは浮いてしまうため、このような3.5mm高のコンスルーを使う必要が出てきます。
これは少し面倒なので、逆挿しで使う場合でもUSB端子が基板と接触しないようにするためミッドマウントタイプというのかな?
このようなType-C端子を使おうかと考えています。
これなら通常のピンヘッダーや2.5mm高のコンスルーを使って逆挿にも対応することが出来ます。
電圧レベルの調整
Pro MicroのRP2040版互換ボードとして使えるようにピンアウトはこのように考えています。
電源やGND、RESET端子以外のGPIOピンは、ADCやシリアル等で使えるピンなどの互換性を考慮してこのようなGPIOの配置になりました。
ここで問題になってくるのがLED点灯のために使うGPIOピンのロジックレベルや駆動電圧です。
Pro MicroではWS2812BといったNeoPixel系のRGB LEDを点灯させる際には5V電源で駆動し信号レベルも5Vとシンプルに接続することが出来るのですが、RP2040だと信号線のロジックレベルは3.3Vとなっています。
WS2812Bの駆動電圧(電源電圧)はデータシート上3.7V~5.3Vとなっています。
RP2040を使った自作キーボードでLEDを点灯させる場合は5V(VBUSレベル)で駆動させ、データラインの信号は3.3V→5.0Vにレベルシフトして点灯させるのが一般的だと思います。
しかしLED点灯に使われているGPIOピンはキーボードによりそれぞれ違うので、今回考えているボードを差し替えるだけで対応するのは難しくなります。
データシート上3.7V以上の駆動電圧が必要なWS2812Bですが、小規模な場合3.3Vで駆動させても実際は動いてはくれるのですが・・・互換ボードとして作るなら、しっかりと対応させておきたいところです。
Pro Microを使ったキーボードではVCC端子(5V)からLEDの電源供給を行うと思うので、この端子電圧で調整することにしました。
電源電圧(VCC)に対してデータ信号のHighの閾値は[0.7 × VCC]となります。
RP2040のGPIOピンは3.3V出力なので、信号が正しく認識されるためには「3.3V ≥ 0.7 × VCC」を満たすVCC電圧で、かつWS2812Bの駆動電圧の範囲に入っていればそのまま上手く駆動させることが出来そうです。
計算上電圧を4.7V以下にすればRP2040の3.3V信号をそのまま認識し、WS2812Bの駆動電圧も満たせそうです。
より確実にするため、ボードのVCCの電圧レベルは4.4Vになるように考えています。
考え方、合ってるかな・・・?
また自作キーボードでよく使われるSSD1306 OLEDモジュールはボード内にLDOが搭載されており仕様上3.3V~5Vの電圧範囲に対応しているので、今回想定しているVCCラインが4.4Vでの動作も問題になることはないと思います。
あとPro MicroのRAW端子にあたる部分はどうしようか考え中です・・・
Pro MicroのRAW端子はボード内のLDOの前段に入っていて外部電源を使う場合に使用される端子となりますが、Pro Microを使った自作キーボードは基本有線接続になるので外部電源で駆動させることはないと思うのですが・・・
回路にダイオードを1本追加すればPro Micro同様に外部電源用のRAW端子として使うことも出来ますが、この端子を使う用途が考えられないので未使用端子とするか、無難に3.3Vや5V端子としておくか・・・ひとまず5V端子としています。
最後に!
Pro Microを使った既存の自作キーボードに差し替えるだけでRP2040仕様に出来るボードがあると便利かな?ということで考えてみたのですが・・・
ファームウェアの微修正は必要になってきますが、ハードウェア的には修正する必要がなく便利だと思います。
コンスルーを使うことを想定しホール径を通常のピンヘッダーに合わせた1mmホールよりも小さくしたり、RP2040ではまだ使えるGPIOピンがいくつか残っているので引き出しておいた方がいいのかなど、もう少し細部を詰める必要があるかと思いますが・・・
実際に製作することがあればまた詳しく書いてみたいと思います。
















コメントを残す