CH9350Lを使ったhoboNicolaアダプター

概要

hoboNicola FRISK. CH9350L + XIAO-m0
  • CH9350LとSeeeduino XIAO-m0と組み合わせる基板を作って、ふつうの日本語キーボードをほぼ親指シフトキーボード化するhoboNicolaアダプターとして使えるようにした。
  • XIAO-m0以外に、Pro Micro (+3.3V動作) とスイッチサイエンスISP1807 (nRF52840)で動作を確認した。
  • 今回はハードウェアの話で、CH9350Lをコントロールするために作ったArduinoライブラリについては次回に。

ハードウェア

前回の投稿に載せたCH9350L評価用ボードやデータシートに掲載されている参考回路にもとづいて以下の回路で基板を作った。

回路について

ch9350_xiao_rev01
  • 電源(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 + Pro Micro

まずは、CH9350Lを載せたQFP-DIP変換基板とUSB Type-Aレセプタクルをユニバーサル基板にハンダ付けし、ブレッドボードに差して使えるような基板を作った。この基板により数種類のマイコンボードで動作を確認した。上の写真は、+3.3V動作のPro Microで動作させているところ。

hoboNicola FRISK. CH9350L + XIAO-m0 hoboNicola

次に、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に頼んで作ってもらった。

hoboNicola XIAO rev.01

PCB自体はとてもシンプルで特にシルクで名前を入れたりはしなかった。大きさも 30.0 x 20.3mm に収まった(もっと小さくできるだろうけど)。

hoboNicola XIAO rev.01

フリスクの大きさと比べると、ずいぶいと小さい基板になった。CH9350LはXIAOの下にそっくり隠れている。

マイコンもPCBに載せてしまえばもっと小さくできるだろうが、足の多い表面実装デバイスのハンダ付けもつらいし、ブートローダーを書き込む手間とか手段の用意とか面倒なのであっさりとXIAO-m0を使うことにした。写真でもわかるようにLEDがXIAOの陰になってしまうのが残念なところ。

上の写真のようにXIAOを直接ハンダ付けして使うことを基本に考えたが、XIAOの代わりにリードの長いピンソケットを接続しておけば、他のマイコンボードで使うこともできる。

hoboNicola XIAO rev.01 + Pro Micro

7ピンのリードの長いピンソケットが手元になかったので、8ピンのものを使っている。

hoboNicola XIAO rev.01

ピンソケットに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アダプターのメインスケッチから利用するようにした話になる予定。