きっかけ
有線だけどとりあえずキーボードを作ることができた。
ので次は無線でキーボードを作ってみたい。ということで挑戦してみた。
大まかなコンセプト
まずはミニキーボードを作ってみる (便利なショートカットキーを割り当てて使えればいいなと)
仕様としてはこんな感じ
- 無線(bluetooth)でパソコン等と接続して制御できること
- 乾電池等で動くこと(給電も外部から不要にしないと無線の意味がないと思うので)
大体の設計の流れは以前投稿した以下記事とほぼ同じ
回路設計
回路図はこんな感じで作成した。主な特徴は以下の通り
今回はESP32シリーズを使ってみた。その中のESP32-H2-MINI-1はUSBポートから直接書き込みが可能で、低消費電力を謳っているモデルらしい。(無線はbluetoothに対応しているものの、Wifiには対応していないとのこと)
前回のキーボード製作に使ったArduino Leonardでは初回にブートローダの書き込みが必要だったが、このマイコンなら初回からUSBで書き込むことができる。
↓秋月でも買える。
ロータリーエンコーダは遊舎工房とかで売ってるこのタイプ。時計回り/反時計回りに回せるほか、プッシュスイッチ機能もある。左右回転は音量up/downに割り当てて、プッシュはミュートon/offに割り当てる等が可能
また、3.3V電源は以下のスイッチングレギュレータを使った。乾電池やニッケル水素電池1本で簡単に3.3Vや5Vを作れるが、結構高い(1000円ぐらい)。
基板設計
基板設計はこんな感じ
筐体設計
外装のアクリル板の設計と寸法チェックも兼ねて3D CADでモデルを作成した
上から見た図
電池ケースは上部に配置し、サイズは単四。通常のキースイッチは7こ配置し、中央やや上部にロータリエンコーダを配置した。
材料調達
大半の部品は秋月や千石電商等で入手した。一部スイッチングレギュレータ等はDigikeyから購入した。
また、外装のアクリル板については今回は以下サービスで作ってもらった。
本来はキーホルダーやアクセサリ向けのアクリルレーザー加工のサービスだと思われるが、アクリル厚や寸法が注文できる仕様だったので注文してみた。
組み立て
写真を撮り忘れていて途中経過の写真はあまりないがこんな感じ
↓はんだペースト塗布

↓組み立て後の画像

大体70mmx70mmぐらいのサイズでまあまあコンパクトにできた
プログラミング
ESP32シリーズをあまり使った事がなく、メインで使っているPCには何も入っていないのでゼロから環境構築をした。
↓手順は公式サイトの通り。
基本的にはCLIのコマンドでコンパイル、書き込み、デバッグシリアルモニタの起動等を行う。
環境構築後の実装手順は以下の通り
- 環境変数を設定する
$ get_idf
- サンプルプログラムをコピーしてくる
$ cd [yourpath]
$ cp -r $IDF_PATH/examples/get-started/hello_world ./
#$IDF_PATHは前の手順で環境変数がセットされる
- 以下コマンドで対象のESP32のモデルを指定(おそらく環境変数の設定や、ビルドの設定ファイル等がここで書き変わると思われる)
$ idf.py set-target esp32-h2
- コーディングする
# cliの設定画面を開いてペリフェラルの設定等をする
$ idf.py menuconfig
設定ができたらよしなにコーディングする
- ビルドする
$ idf.py build
- USBでミニキーボードとPCを接続して書き込む
$ idf.py -p /dev/tty.usbmodem1101 flash
# 接続したポートを指定する mac OS ならls /dev/tty.* 等でポートを確認
- debugする
# USBに接続し、起動した状態で以下を実行する
$ idf.py monitor
# コード中に ESP_LOGI(TAG, "message");等を記述しておくとdebug serialで出力できる
最後に
とりあえずショートカットキーを割り当てたりして動かす事ができた。
けどこういうカスタムキーボードは遊舎工房とかで普通に売ってたりするから、買った方がラクで安上がりかもしれない。。。




