概要
- 自作のPCB、Seeed Studio XIAO RP2040、抵抗2本、USBコネクタを使った hoboNicolaアダプターの作り方をまとめた。
- PCB はKiCAD (6.11) を使って設計し JLCPCB に製造を依頼した。KiCAD用の回路図、PCB、ガーバーおよびドリルデータはGitHUB のリポジトリ ( https://github.com/okiraku-camera/xiao_pio_usb2 ) に置いた。
- なお、このアダプターは以前に投稿した hoboNicolaのPico-PIO-USB対応 で紹介したものと同じ回路、同じフォームウェアを利用している。動作メカニズムなどについては、以前の投稿を参照のこと。PCBを使ったハードウェアについての内容が抜けていたので、今回はそこに絞って記載している。
- PCBが1枚500円としても、XIAO RP2040を含めて1台あたり2,000円以下で製作できるだろう。
材料
作成のためには以下の部品が必要になる。

PCB
PIO-USB hoboNicola という名前にした。KiCADのプロジェクト名が xiao_pio_usb2。今回作ったPCBは紫色にしてみた。

スルーホールの抵抗を用いる場合はF面に、表面実装の抵抗を用いる場合はB面にはんだ付けする。XIAO自体はF面にはんだ付けする。
Seeed Studio XIAO RP2040 および 7Pピンヘッダ
Seeed Studio社で製造販売しているマイコンボードで、マイコンとして Raspberry Pi財団が独自開発した高性能・低コストな32ビットマイコンの RP2040を使っている 。
とても安価なことも特長の一つなのだが、このところの円安のため、日本で入手しようとすると 1,000円前後か。
基本的にXIAOにピンヘッダをはんだ付けし、ピンヘッダをPCBにはんだ付けする。
ピンヘッダについて
スルーホールの抵抗 (一般的な1/4Wの金属皮膜抵抗)を使う場合、抵抗はXIAOの直下に位置するので、金属皮膜抵抗の直径よりもハウジング高が大きなピンヘッダ使う必要がある。

たとえば、秋月電子で売っているXIAO RP2040には、ハウジング高が約2mmの7Pのピンヘッダが2本付属しているので、追加購入は不要。
XIAOを海外から輸入する場合、ピンヘッダ無しのパッケージが来ることがある。そのような場合には、ハウジング高が2mmのピンヘッダを用意する必要がある。なお、細ピンヘッダと呼ばれる製品はハウジング高が約1.5mmで小型金属皮膜抵抗の直径より低かったりするので注意が必要。

表面実装抵抗を用いるならば、ピンヘッダは省略可能で、XIAOをPCBに直接面実装してもよい。
22Ωの抵抗を2本
先述のように、1/4Wの金属皮膜抵抗または表面実装(3216サイズ)の抵抗を用いる。
基板取付用のUSB Type-Aコネクタ
一般的な基板取付用のコネクタを用いる。秋月電子の 型番 5075AR-04-WH の製品などでよい。寸法などについてはこの商品ページのデータシートを参照のこと。
その他
回路図やPCBには、0.1uFのコンデンサを取り付けるためのパターンを用意しているが実装は不要。XIAOのボード上でVBUSは10uFでデカップリングされており、余計な容量性負荷は望ましくないようだ。
回路の保護用に、熱収縮チューブ (スミチューブ A20C) を使ってPCBとXIAOの全体をスミチューブで覆ってしまうこともできる。
あるいは、3Dプリンタなどで都合のよいケースを作って格納するのもいいだろう。
作り方
XIAOにピンヘッダをはんだ付け
マイコンボードにピンヘッダをはんだ付けするときは、ピンが垂直に立つようブレッドボードに差してから行うのがよい。


はんだ付けの前に、マイコンボードを上からしっかり押してピンヘッダとボードの間に隙間ができないようにする。
XIAOとピンヘッダのはんだ付け結果は、後述するPCBとはんだ付けした写真を参照。
PCBに抵抗とUSBコネクタをはんだ付け

PCBのパターンに抵抗やコネクタをはめてはんだ付けする。抵抗がPCBから浮かないように注意するとともに、USBコネクタがPCB側に傾かないよう気を付ける。

裏から見るとこんな具合になる。
USBコネクタをPCBに取り付けるシールドタブ (コネクタのシャシーから伸びている爪のようなやつ) はUSBケーブルの抜き差しでコネクタが緩まないようPCBの内側に曲げ、十分にはんだを流しておく。
ピンヘッダをつけたXIAOをPCBにはんだ付け
まず、PCBにXIAO (ピンヘッダ)をはめる。裏返してPCBにしっかり押さえつけ、対角線上にある2つのピンだけをはんだ付けする。そして、裏面に突き出しているピンをPCB裏面から出っ張らない程度の位置で切断し、その後すべてのピンをはんだ付けする。

各パッドが尖らないようにはんだ付けする。こうしておくことで、PCB裏面のピンがスミチューブを突き破るのを防げる。

上から見るとこんな具合になる。
スミチューブを被せる
この時点では、PCBの裏側もXIAO側も接点がむき出しですぐにでもショートしてしまいそうなので、回路保護用に熱収縮する内径20mmのスミチューブ (A20C) を被せ、ホットエアガンなどを使って収縮させる。
スミチューブはPCBと同じくらいの長さ (32mm) が必要。


熱風を浴びせることでチューブが収縮し、PCBやXIAOに密着する。


こういった具合にしておけば、ケーブルの途中でブラブラしていても接触による弊害が生じることもない。
この状態でも、XIAOに用意されている超小型のリセットおよびBOOT SELスイッチを爪先で押すことはできる。
表面実装部品を使った作成
今回のPCBはXIAO自体を面実装できるように設計した。メリットは、XIAOのピンヘッダが不要、という一点のみなのだが、そのように設計したので一つ作ってみる。
チップ抵抗の取付

PCBのB面には、3.2mm長の3216(1206)サイズのチップ抵抗を使う前提のパターンを用意したのだが、手元にあった22Ωの抵抗は2012(0805)サイズだった。写真のように、長さが約2mmである。しょうがないので、そのままはんだ付けした。

肉眼では問題なさそうに見えたのだが、マクロレンズで撮影してみると、写真上側 R10 がちょっとマズイかもしれない。R20に比べて左に寄っているし。一応、テスターで測ると約22Ωだったので、このまま作成を進めた。
XIAOの面実装
XIAOをPCBのF面にはんだ付けする。
ソルダーレジストの塗布
XIAOの裏側とPCBのF面を見比べると、スルーホール抵抗R1, R2の上側のホールがXIAO裏側の電源用パッドと接触しそうな気がしたので、XIAO側に緑色のソルダーレジストを塗った。


面実装
準備段階としては、XIAOを取り付けたい位置において、マスキングテープなどで固定しておく。そして、対角線上の2つのパッドを軽くはんだ付けして位置を確認してから、すべてのパッドをはんだ付けしていく。


XIAO自体は面実装も可能な端面スルーホール (スルーホールエッジ) を備えているので、少々しつこくはんだを流しておく。

端面スルーホールはこんな具合になり、おおむね完成する。

スミチューブ
スルーホール版と同様に保護のためにスミチューブを使う。

問題点としては、XIAO自体がUSBコネクタに対して低くなっているので、チューブ越しにボード上のRESETやBSELスイッチが押せない。とりあえずスイッチが押せなくてもファームウェアの書込みはできるのでこのままにしておくが、必要ならばカッターナイフでスイッチ部分だか切り取ればよいだろう。
まとめ
XIAOのパッケージにピンヘッダが付属していればスルーホールで作ればよいし、3216サイズのチップ抵抗があれば面実装で作ればよいだろうという印象で、面実装したからといった特別なメリットがあるわけではない。
プログラムのコーディング、バージョン管理、マイコンへのファームウェアの書込みなどの操作は、VSCodeに vscode-arduino (Arduino Community Edition) を拡張機能として追加した環境で行っている。こういった開発用のソフトウェアを構成する話はブログにまとめていなかったので、次の投稿とした。