MAX3421EEを使ったhoboNicolaアダプター

usb_hobo_nicolaアダプター

概要

USBホストコントローラー(MAX3421EE)を使ったPCBを製作し、hoboNicolaアダプターを作った話。

  • このPCBは、Seeed XIAO シリーズまたはAdafruit QTPy シリーズをコントローラボードとして用いることを前提としている。
  • MAX3421EEと周辺デバイス(オシレータ、コンデンサなど)を実装した場合、usb_hobo_nicolaアダプターとして使用できる。
  • あるいは、抵抗2本のみを実装してRP2040ボードと組み合わせれば、Pico-PIO-USBライブラリを使った rp_hobo_nicolaアダプターとして使用できる。

PCB

以前からmini USB Host Shield ver2(miniUHS)を使ったhoboNicolaアダプターやそのバリエーションを紹介してきたが、miniUHSのデリバリ状況がとても悪いので、miniUHSと同じソフトウェアを利用できるハードウェアを製作することにした。

MAX3421EEのコントロールには、USB_Host_Shield_2.0 ライブラリを使うので今回のようなキーボード接続用途以外にも使い道があるだろう。なお、hoboNicolaライブラリには、今回の回路を利用するために必要な修正を加えたUHS2.0ライブラリを包含している。

回路図

回路やPCB配線にはKiCAD 6.0を使った。

max3421_xiao_rev02 回路図

MAX3421EEの接続

  • 電源電圧は+3.3Vで、XIAOから与える。
  • クロックは12MHz。
  • リセット (RES)はプルアップ。
  • INT端子は、2.2kΩでプルアップ。
  • D+, D-は22Ωの抵抗を介して J3の USB Type-A (female) に接続。
  • XIAO(QTPy)との接続は、SPI(SCLK, MISO, MOSI, SS) および INTの5本。

rp_hobo_nicola用のジャンパ JP1, JP2について

Pico-PIO-USBとRP2040を用いる場合、R1とR2以外のデバイスは一切実装しない。そしてJP1とJP2にハンダを流してショートさせる。

これにより XIAOの SCLK(GPIO2)がDPに、MOSI(GPIO3)がDMに接続される。これは rp_hobo_nicolaの初期設定と一致するようようになっている。

PCB図

max3421_xiao rev02

PCBは2層基板で、デバイスの実装は片面(F面)のみ。両面実装にするとSMTの代金が高くなってしまう。

XIAO専用のフットプリントは使わず、7ピンのピンヘッダ(スルーホール)のフットプリントをちょっと変更して使った。

rev01とrev02のPCB外観

max3421_xiao rev01とrev02

上がrev01で手ハンダ用のフットプリントを使用しており、下がrev02でPCBAを前提としている。

ただしrp_hobo_nicola用に、抵抗R1とR2はいずれのリビジョンも手ハンダ用のフットプリントとしている。チップ抵抗のサイズは2012 (0805)。ふつうのハンダごてでもなんとかなります。

rev02はJLCPCBに依頼したので、F面のシルクに発注番号用の文字列 (JLCJLCJLCJLC) を入れている。またrev02ではTooling Hole (基準穴)を3つ開けておいた。Tooling HoleはJLCの指定にしたがって1.3mm径のNPTHパッドで穴の径は1.152mmとしたが、たぶん指定しなくてもうまく作ってくれるはず。

完成したPCB

完成したPCBは以下のようになった。

max3421_xiao_rev02 PCBのみ

小さな基板なので一度にまとめてプリントしているんだろう、切り離しがちょっと雑い感じ。

max3421_xiao_rev02 実装済

USBコネクタの下に発注番号を印字してもらったが、ちょっとしたプライバシーなのでぼかしました。

hoboNicolaアダプターとしての仕上げ

USB Type-A (female) コネクタは、自前で購入してハンダ付けする。秋月電子で一個50円くらい。

usb_hobo_nicolaアダプター (SAMD21)

Seeed XIAO SAMD21 (Seeeduino XIAO) を載せたところ。

最終的には、この上に絶縁用の熱収縮チューブを被せて以下のようにしている。個人的にはケースに入れるよりもコンパクトに仕上がって好んでいる。

rp_hobo_nicolaアダプター (RP2040)

MAX3421EEを載せずにrp_hobo_nicolaアダプターとしてところ。

きょうのまとめ

hoboNicolaLibrary 1.7.0版と、ライブラリの examples ディレクトリに入れているusb_hobo_nicola および rp_hobo_nicola を使うことでhoboNicolaアダプターとして機能する。ライブラリのダウンロードはこちらのページからお願いします。

GitHubにもライブラリを公開しました。リリースからダウンロードできます。

MAX3421EEとXIAOはSPI接続なので、XIAOの種類(マイコンの種類)は値段や好みで選ぶことができる。今までの実績としては、XIAO SAMD21 (Seeeduino XIAO)、XIAO RP2040、XIAO nRF52、および同型のAdafruit QTPy SAMD21で動作を確認している。

デバイスを実装しないPCBのみ(抵抗2本は実装が必要)では、XIAO RP2040と組み合わせた rp_hobo_nicolaとして動作を確認している。

MAX3421EEHJ+T

PCBAを依頼した時点での MAX3421EEHJ+T (TQFP32) の値段は$5程度だったが、また高くなったり円安が進んだりして、さらなるバリエーションを設計して発注するタイミングがつかめない。

そういえば、MAX3421EEHJ+T と MAX3421EEHJ+ という、いずれもTQFP32の2つのパッケージがあって、どう違うのかしばらく不思議だったのだけど、末尾 +T はテープ/リールで供給、末尾 + はトレイで供給、ということだった。デバイス自体の中身や外観はまったく同じです。

hoboNicolaについてのご意見やご希望は、 Twitter でお願いします

追記

PCB上にLEDを追加したくなってまた作りました。

max3421_xiao_rev03 デバイス実装済

組み合わせるマイコンボード(XIAO)によってはLEDが不要なこともあるので製造時には実装無しとし、必要ならば手ハンダで3216サイズのLEDを載せることにしました。また、わずかばかり幅(縦横の短い方)を広くしました。

max3421_xiao_rev03 裏
max3421_xiao_rev03 デバイス実装済

LEDとUSB TypeAを実装したところ。

max3421_xiao_rev03 with XIAO nrf52840

nRF52840のXIAOを載せたところ。Seeed StudioのnRF52用BSPはAdafruit nRF52 BSPのforkのリビジョンに統一されており、当初より扱いやすくなっていました。