はじめに
この記事は以下記事の続きというか、発展させた記事です。制作過程の共通部分は省略しています。
「キーボードをイチから自作してみた」では有線のキーボードを制作した。個人的には以下のことを学んだ。
- キーボードの規格や寸法、配置等あれこれ
- 通信プロトコル(HID)
- 3D CADと回路・基板設計CADを組み合わせた電子工作のノウハウ(玄人からしたら初歩的だが)
また、「無線のミニキーボードを作ってみた」では以下のことを学んだ。
- ESP32シリーズに関するあれこれ(環境構築、プログラミング等)
- 昇降圧DCDC ICを使った回路設計
今回はこれら学んだこと+ αで無線のフルサイズに近いキーボード(テンキーレス)を作ってみた
作ったもの
こんな感じのBluetoothキーボードを作った。
主な仕様は以下の通り
- キー数: 約90キー(テンキーレス)
- 無線: Bluetooth LE
- 電源: 単四形充電池2本
- MCU: ESP32-H2-MINI-1-N4
- 基板: 2層・部品片面実装
ステータス表示のLEDも実装してみた
(右から電源、Bluetoothの接続状態、キー状態(押された際に点灯))

必要な部品、材料
- 基板 (いつものようにKiCadで設計、JLC PCBに発注)
- 電子部品
- マイコン (ESP32-H2-MINI-1-N4)
- SPI IO エキスパンダ (MCP23S17)
- ダイオード
- LED (ステータス表示用)
- キースイッチ (遊舎工房とかで売ってるCherry MXタイプのやつ)
- キースイッチ用ソケット(CPG151101S11-16(遊舎工房より))
- コンデンサ(電解コン、セラコン)、抵抗類(チップ抵抗)
- ねじ、スペーサー類
- アクリルカバー類
特にIO エキスパンダに関しては初めて設計に取り入れた。IO エキスパンダはSPIやI2C等のシリアル通信を十数ピンのIOピンに変換するICである。(キースイッチの数が90個ぐらいあるのに対してマイコンのピン数が圧倒的に足りなかったため使うことにした)
あまり高速な制御には向かないが、ピン数が多くないマイコンに接続すると簡単に実質的なGPIOピンを増やすことができる。キーボードの入力程度のスピードなら問題ない。
設計
回路設計
キーサーチの回路の部分は前回のキーボードをイチから自作してみたと同じだが、黄色のIC部分が今回使うことにしたIO エキスパンダである。SPI4線と割り込みピン等合わせて実質5〜6ピン程度で全てのキーの入力をサーチすることができる。

マイコン周りはこんな感じ。主に以下のペリフェラルを割り当てた。
- USB (プログラム書き込み用)
- 4線SPI (IOエキスパンダとの通信)
- GPIO (ロータリエンコーダを直接制御、LED表示、IOエキスパンダからの割り込み入力等)
- UART (一応外から接続できるように用意)
USBに関しては前回と同様、TypeCソケットを採用した。以下の点に注意。
- CC1, CC2はPDのネゴシエート(ホスト側と供給電圧を交渉する)のためのピン。5Vで特に問題ない場合は5.1kΩでプルダウンする。(CH224K等のICを使えば9V, 20V等の高い電圧をホスト側に要求することができるらしい)
- ポリスイッチをVBUSの経路上に入れておくと過電流を防止できる(実装ミスしてショートした場合に役立つ)
- USBの差動 - GND間にバリスタを入れる(おまじないみたいなものかもしれないが、ESDで後段の回路が壊れるのをある程度防止できるかも)
- USBの差動経路上にダンパー抵抗を入れる(こちらもおまじないみたいなものかもしれないが、高速信号のオーバーシュート軽減に効果があると思われ)
電源周りは前回の無線のミニキーボードを作ってみたと同様、同じDCDC ICを採用し、単四電池2本 -> 3.3Vを生成する回路を作った

基板設計
空いているスペースに詰め込んで、かつ2層基板で部品片面のみにしたらだいぶカオスになってしまった

筐体設計 (カバー等)
実装
ねじとスペーサーを使ってアクリルカバーを付けた後、キースイッチを取り付けた状態。

最後に
ほぼ設計通りのキーボードができて満足しているが、材料費だけで総額2〜3万程度になってしまった。





