CH9350Lを使ったhoboNicolaアダプター その2

CH9350L

概要

USBキーボードをArduinoボードに接続して利用できるCH9350Lについてはここ数回の投稿でも載せたが、CH9350LをArduinoボードから利用するためのPCBの設計をちょっと変更し、更に作ってみた。

今回は、Seeed Studio XIAO型のArduinoボード用と、SparkFun Pro Micro型のボード用の2種類を作成。XIAO型、Pro Micro型ともにいろいろなマイコンを搭載した製品があるので、hoboNicolaライブラリでも各種マイコンボードに対応できるようにした(それについては次回に)。

XIAO型用

XIAO 3種 左から順に、ATSAMD21版、RP2040版、nRF52840版

XIAO型というのも変かもしれないが、Seeed StudioのXIAOシリーズとAdafruitのQT Pyシリーズは、搭載しているマイコンや配線が違っていたりするものの、同一寸法で同一ピン配置となっており、Arduino コアを使ってプログラムを書く上では共通化できることが多い ( RP2040については、Arduino-Picoコアを使うにあたってArduino 流のディジタルピン番号ではなくGPIOポート番号を使うことに注意)。

今のところ、ATSAMD21、nRF52840、RP2040の各ボードでの動作を確認している。Seeed Stduio からは ESP32C3 (RISV-V)を使った製品も出たようなので、技適マーク付きの製品が入手できるようになったら試してみるかもしれない。

回路図

回路は以下のとおりシンプル。

ch9350_xiao_rev02

CH9350Lの各ピンについては、前の投稿を参照のこと。

マイコンボード(XIAO)と接続が必要なのは電源の他にはTX,RXおよびRSTのみになる。未使用のピンにはXIAOのGPIOでコントロールするLEDやスイッチでも付けようかと思ったのだが、基板を小さく作りたかったので省略した。

回路上で、キーボード用コネクタJ1の近くに100uFのC4をおいているが、これはACアダプターのような専用の+5V電源で使うときのためのもので、XIAOの+5V出力を電源とする場合にはVBUS-GND間の容量が大きくなりすぎるので実装しない方がよい(Pro Micro型も同様)。

PCBなど

ch9350_xiao_rev02

大きさは約3cm x 2cm。部品を実装してXIAOを載せると以下のようになる。

XIAO RP2040 + ch9350_xiao_rev02

XIAOのピンヘッダを貫通させてブレッドボードに挿している状態で、実際に使うときには、ピンヘッダをPCBにはんだ付けしたあとで切断し、他の金属と接触してのショートを防ぐために熱収縮チューブに入れてシュリンクする。

XIAO nRF52840 + ch9350_xiao_rev01

こちらはrev01基板を使っているが、ピンソケットを実装してマイコンボードを交換できるようにしたもの。XIAO自体は7 x 2ピンなのだが、手元にないので8ピンのピンソケットを使っている。

リビジョン01との比較

ch9350_xiao_rev02とrev01

最初に作った方が青い基板と比べると、以下のような修正を行った。

  • キーボード接続用のUSBコネクタ(J1)をより内側に
  • キーボード接続を示すLED D1がXIAOの陰にならないように
  • XIAOのピンヘッダが差さるスルーホール孔を1mm径に(rev01では0.8mm径)
  • 基板の角を少し丸く(面取りするほど数は要らないので)。
  • B面の銅箔の空隙を意識して配線を変更
  • B面のシルクに基板の名前を書く
XIAO RP2040 + ch9350_xiao_rev02

rev02基板では、キーボード接続中を示す青いLEDが上から見えるようになった。

Pro Micro型用

オリジナル(あるいはコピー品の)Pro Microは今でも活躍しているが、同じピン配置で高性能なArduinoボードもhoboNicolaで使いたいので Pro Microの12 x 2のピンヘッダがさせるようにした。現状はPro Microの他にスイッチサイエンスISP1807 Micro BoardAdafruit KB2040での動作を確認している。Pro Microを載せる場合、CH9350LのRSTピンを操作する関係で、+3.3V版に限られることに注意(TX,RXはおそらく+5V許容だがRSTは+3.3V)。

ch9350_promicro_rev01

こちらの基板は面積に余裕があるので、Pro Microではなく別のマイコンボードに接続するような使い方も考えて、CH9350Lの非同期シリアルラインや動作ステートの設定ピンをいくつか引き出したりしてみた。

Pro Micro を載せると以下のようになる。

ch9350_promicro_rev01 + Pro Micro 8MHz (載せただけ)

Pro MicroはLDO出力が+3.3Vのもの(8MHz)版のみ使用可能。マイコンボード側のUSBコネクタがMicro-Bなので、もはやあまり使いたくない。Pro MicroにはType-Cコネクタを載せたバリエーションもでているが、3.3V版は見つからなかった。

Adafruit KB2040との組み合わせ

Adafruit KB2040 (RP2040 + 8MB flash) が比較的安かったので使ってみた。PCBに12ピンのピンソケットをはんだ付けし、マイコンボードを背負えるようにした。

KB2040 + ch9350_promicro_rev01
KB2040 + ch9350_promicro_rev01

KB2040は、Pro Micro型とはいえ、13 x 2ピン構成になっていて、写真での左端にUSBのD+と D-端子がある。今回は使わないので間違えてソケットにささないようピンヘッダをはんだ付けしなかった。

KB2040は、たとえば自作のUSBデバイス基板のコントローラとして使うようなとき、これらの端子から基板上に別途用意したUSBコネクタの D+/D- に接続すればいいらしい。端子に出ている D+とD-は、直列抵抗を介してRP2040につながっているので、自作基板側には抵抗は不要になっている。

きょうのまとめ

CH9350Lとマイコンボードの接続は電源を入れても5本だけなので、XIAOでもピンが余るしPro Micro型ではかなりもったいない感がある。

XIAO版とPro Micro版では、ちょっと勘違いしてCH9350LのRSTを引き出すピンが異なっている(XIAOではD2、Pro MicroではD3)。プログラムで対処すれば済むだけのこととはいえ痛いミスだった。

製作にあたって一番気を使うのは、やはりCH9350Lのハンダ付けで、隣のピンとショートさせてしまう失敗を何度かした。抵抗、コンデンサ、LEDについては、片側のパッドにはんだを盛っておき、それを溶かしてはデバイスを置いて固定する手順で実装した。もうちょっとSMDのはんだ付けを勉強する必要がありそう。

次回は、CH9350L用およびMAX3421用のhoboNicolaライブラリの話の予定。7種類のマイコンボード(XIAO型4種とPro Micro型3種) を2つのキーボードインタフェースボードに載せてビルドする話になります。