概要
- CH9350LとSeeeduino XIAO-m0と組み合わせる基板を作って、ふつうの日本語キーボードをほぼ親指シフトキーボード化するhoboNicolaアダプターとして使えるようにした。
- XIAO-m0以外に、Pro Micro (+3.3V動作) とスイッチサイエンスISP1807 (nRF52840)で動作を確認した。
- 今回はハードウェアの話で、CH9350Lをコントロールするために作ったArduinoライブラリについては次回に。
ハードウェア
前回の投稿に載せたCH9350L評価用ボードやデータシートに掲載されている参考回路にもとづいて以下の回路で基板を作った。
回路について
- 電源(VCC)はマイコンボードから供給する。XIAO型ならば+5Vピンに、Pro Micro型ならばRAWピン(または+5Vピン)に接続する。そしてVCCはそのままキーボード用USBコネクタのVBUSに接続。
VCC-GND間に10uFのコンデンサをはさむことで、USBデバイス(キーボード)が接続されたときの突入電流に対応したつもりだが、果たして効果はどうだろうか。 - VIN5には+5Vを与えるが、CH9350Lは定電圧レギュレータを内蔵していて内部ロジックは+3.3V動作になっている。CH9350Lの各ピンも基本的には+3.3Vロジックと考える。
- VDD33には、3.3uFのコンデンサを接続する(+3.6V以上の電源電圧をVIN5に与える場合)。
- CH9350LのDM / DP (D- / D+)をキーボードを接続するUSB Type-Aレセプタクルに直結する。特に直列抵抗は必要ないようである。
- LED1ピンは、CH9350LがHIDキーボードやマウスを認識するとアクティブ(Lレベル)になり、キー入力やマウスの動きがあるごとに短い期間Hレベルになる。LEDのカソード側をLED1ピンに接続しておくことで、キーボードを認識すると点灯し入力のたびにチカチカすることになる。
- RSTピンをXIAOのD2ピンに接続し、プログラムでリセットできるようにしている。動作時はLレベルとし、リセットするときはHレベルのパルス(100nsec以上)を与えればよい。
データシートによれば、N.C.のままかGNDに接続するのがおすすめになっているが、RSTピンをHレベルに維持することで、接続中のキーボードに対するSOFが停止する。これにより多くのキーボードはサスペンド状態に入るので消費電流を節約できる - CH9350LのRSTピンは+3.3Vロジックなので、+5V動作のマイコンボードのGPIOピンとは直結できないことに注意。TXとRXについては、前の投稿で書いたように+5Vロジックと直結できると判断している。
- 英語版のpdfデータシートなどはこちらからダウンロードできる。
手作り基板
この回路図にしたがって2種類の基板を手作りした。上記の回路図ではXIAOを意識して7ピンのJ2、J3としているが、実際に接続が必要なのは、UART用のTX、RXとリセット用のRSTピン(および電源)だけ。
まずは、CH9350Lを載せたQFP-DIP変換基板とUSB Type-Aレセプタクルをユニバーサル基板にハンダ付けし、ブレッドボードに差して使えるような基板を作った。この基板により数種類のマイコンボードで動作を確認した。上の写真は、+3.3V動作のPro Microで動作させているところ。
次に、Seeeduino XIAO-m0、QFP-DIP変換基板、USB Type-Aレセプタクルをフリスクサイズのユニバーサル基板にハンダ付けしたものも作った。フリスクケースの蓋もしまります。
材料
これらの基板のおもな材料は以下のとおり。秋月電子からの通販で購入したものが多いので、商品コードも記載しておく。
品名 | 価格(税込み) | 秋月商品コード / 備考 |
|
1 | CH9350L | 400円 | CH9350L |
2 | Seeeduino XIAO-m0 完成品 | 750円 | 102010388 |
3 | QFP DIP変換基板 0.5mmピッチ QFP 48pin |
100円 | AE-QFP48PR5-DIP |
4 | ユニバーサル基板 56.5×32mm (フリスク) |
80円 | AE-FRSK-120-UV-TH |
5 | USB A レセプタクル | 50円 | |
6 | コンデンサ、抵抗、チップLED、ピンヘッダなど | 200円 | いろいろ |
7 | フリスクケース | 0円 |
XIAO-m0の価格は円安もあって変わっているかもしれない。ユニバーサル基板に実装できるUSB Type-Aレセプタクルは、手元にあったものを使った。
PCB作成
さらに、どうせ表面実装するんだし、ということでKiCADでPCB配線を描きFusion PCBに頼んで作ってもらった。
PCB自体はとてもシンプルで特にシルクで名前を入れたりはしなかった。大きさも 30.0 x 20.3mm に収まった(もっと小さくできるだろうけど)。
フリスクの大きさと比べると、ずいぶいと小さい基板になった。CH9350LはXIAOの下にそっくり隠れている。
マイコンもPCBに載せてしまえばもっと小さくできるだろうが、足の多い表面実装デバイスのハンダ付けもつらいし、ブートローダーを書き込む手間とか手段の用意とか面倒なのであっさりとXIAO-m0を使うことにした。写真でもわかるようにLEDがXIAOの陰になってしまうのが残念なところ。
上の写真のようにXIAOを直接ハンダ付けして使うことを基本に考えたが、XIAOの代わりにリードの長いピンソケットを接続しておけば、他のマイコンボードで使うこともできる。
7ピンのリードの長いピンソケットが手元になかったので、8ピンのものを使っている。
ピンソケットにXIAOを載せると今までのhoboNicolaアダプターと同じようなスタイルになる。XIAOにはATSAMD21のほかにRP2040やnRF52840を載せた製品があり、hoboNicolaライブラリで対応する予定なので、マイコンボードを差し替えられると便利である。
LEDの位置やデバイスの配置など、いろいろと直したいところもあるのでまたの機会に製造を依頼する予定。
きょうのまとめ
- MAX3421Eの流通がとまり、今まで使ってきたmini USB Host Shield もほぼ手に入らなくなった。その代替としてCH9350Lを使って基板を作ってみた。CH9350Lは秋月電子やAliexpressでは入手できるのだが、まだあまり認知されていないようである。
- Fusion PCBでこのサイズのPCBの製作を頼むと、10枚で5ドル(USD)でできてしまうから、1枚あたりの単価はユニバーサル基板やピンヘッダを買い揃えるのとあまり変わらない。ただ、円安につき送料がとりわけ高く感じてしまう。なお、発注から配達までの期間は約2週間だった。
- 次回は、CH9350Lを利用するためのプログラムをArduinoライブラリ化したのでその紹介と、CH9350L用hoboNicolaアダプターのメインスケッチから利用するようにした話になる予定。