こんにちは。18-Hitomosiです。
この記事は工大祭ブログリレーの記事です。工大祭のロ技研のページはこちら。( https://c-028.space.koudaisai.jp/ )
CNCキーボードを作ってみた話を担当ごとに分けて書く予定です。今回は仕様/回路編です。
製作動機
ロ技研ではCNCフライスというPCから制御する工作機械を所持しているのですが、その操作のためだけにキーボードを置くのは場所をとるという話になりました(たぶん)。そこでAssist研の出番というわけです。
仕様
機械係(機械の管理を担当してる人)と相談して、配置はこんな感じになりました。なかなかこだわりがあるらしく、以下の仕様も決まりました。
- キースイッチをkailh choc v1の茶軸にする
- 基板色を黒にする
- 特殊キーがあるので、キーキャップを独自のデザインにする
それに加えて、私の趣味で以下が追加されました
- 基板は1枚で完結させる
- USB-TypeCコネクタを採用する
- 各キーにフルカラーLEDをつける
LEDに関してはなんかキースイッチにLEDつけるとこあるしつけたいくらいの感じだったのですが、機械係からの追加の要望を頂きました。
- LEDを消灯できるようにする
(´ ・ ω ・ `)ショボーン
回路
Kicadで基板を作成するところからスタートになりました。ちなみにPCBとかファームウェアのデータは設計図共有サイトことgithubに上げています。ただ、STM32のライブラリなどの関係でオープンソースにはなっていません。
https://github.com/rn-t/rogy-cnc-controller
画像で全体の回路図を貼っても小さすぎて見えないかと思うので、リポジトリ内のpdf ファイルのリンクを貼っておきます。
https://github.com/rn-t/rogy-cnc-controller/blob/main/PCB/cnc-controller.pdf
電源回路
まずはUSBのVBUSにポリスイッチを直列につなぎ、その先を5V系としました。5V系はLEDの電源に使うのですが、ハードウェア的に消せるようにFETを用いたスイッチを付けてON/OFFできるようにしています。
普通に役に立ってしまうことがあるので、ヒューズやポリスイッチは大事だと思っています。
STM32を使うので、USBの5Vをそのまま電源に使えません。なのでリニアレギュレータを使って3.3V系を作っています。
USB周り
TypeCを使うとはいってもUSB1.1/2.0しか使わないので、基本的には電源とD+/D-を配線すればいいです。ただ、TypeCの場合UFP(デバイス側的なやつ)はCCピン2つを5.1kΩでプルダウンする必要があります。
もともとUSBはホストとデバイスがケーブルの形状ではっきり決まっていたのですが、TypeCはホスト側もTypeCを使う場合を想定しているので、CCピンで判別しているみたいです。以下の資料がめっちゃ役に立ちました。
http://ww1.microchip.com/downloads/jp/AppNotes/00001953A_JP.pdf
また、STM32を用いた自作キーボードについて調べていたところ、
「ARMマイコンを使ったスプリットキーボードの作り方 – 5z6p Instruments」(https://5z6p.com/columns-jp/advent2020/)
という記事があり、今回やりたいことに回路的にはずいぶん近かった(というかほぼ同じ)ので、参考に見ていた結果付けたくなりD+/D-に保護用のダイオードを付けました。このサイトからはLEDの入力をオープンドレインにする部分なども参考にさせていただいています。
キーマトリクス
キーとLEDとその周辺部品を24個ずつ配置します。Kicad使ったことがある人ならわかると思うんですが、これを全部普通に配置してたらきれいに配置するのは難しいしとてもつらいです。なので、キーとその周辺パーツはセットで、でかい1パーツとして扱うことにしました。
まあ回路図としていいかと言われれば微妙ですが、めんどくさかったのときれいに配置したかったのでこういう感じになりました。これをただマトリクス上に配線してあとはプルダウン抵抗を付けるだけです。内臓プルダウンでいいような気もしますが、設定を忘れた時のことを考えて部品として付ける形にしました。
回路ミス
基板発注あるあるなんですけど回路をミスって発注しました。
間違い探しです。(←誤 正→)
PA10に接続されている線はLEDへの信号線(別の場所でプルアップしている)のですが、キーマトリクスのプルダウンする線と間違えてプルダウンしてしまいました。その影響でキーマトリクスも1本プルダウン抵抗が欠けています。仕方がないので実装した後に全て外し、内臓プルダウンで対処しました。
基板
配線
配線に関してはそこまで語ることもないのでKicadの機能でみられる3Dモデルを貼っておきます。3Dで出るのはやっぱりうれしいです。
今見ると病的にGNDビアを打ってる感がすごいので気を付けたいですね。
しれっと右上にAssist研のロゴと名前を入れたのでそこだけ語っておきます。
発注
Elecrowに発注しました。
はんだ付け
はんだ付けをして回路部分が完成しました。表面実装部品のはんだ付けは結構好きなんですが、キースイッチと周辺部品を24セット付けるのは正直きつかったです。
ちなみにこれを2枚はんだ付けしました。
おわりに
これで仕様/回路編は終了です。デザイン編、CAD編、ファームウェア編が予定されていますのでお楽しみに。