#はじめに
USB-TTLを有するマイクロコントローラ搭載機器は、USBケーブル1本でパソコンに接続して色々な実験を行うことができるので、お手軽に手を出してしまいます。そうすると、旬を過ぎた搭載機器が複数たまってきます。最近だと、Raspberry Pi Pico(以降、pico)が役目無く保存されているかと思います。有効活用できないかとPicoのピン配置を眺めてしまいます。例えば、シリアル接続で制御する機器を利用する場合、picoをUSB-TTLとして利用できるとUSB-TTLシリアルコンバータがいたずらに増えるのを抑制することができます。
#USB-TTLコンバータとして利用可能なArduino
例えば、FTDIチップを搭載したAruduinoでは以下の3つの方法でUSB-TTLコンバータとして利用可能であることが知られています1。
1.リセットとGNDを接続
2. ATMELのチップを外す
3.スケッチを実行
void setup(){
pinMode(0,INPUT);
pinMode(1,INPUT);
}
void loop(){
}
配線やプログラムで、同様のことをpicoで行うことができれば、picoの再利用が可能となります。
#PicoのUART端子
Picoの端子の役割を眺めていると、UART0とUART1の2組のUARTが搭載がされていることがわかります。さらに、ピンアウトの図を参照すると、6組のUARTの記載があります。1つのpicoで、6個のシリアル通信ができる可能性があります2。
UF2ファイルが用意できれば、Raspberry pi picoをUSB-TTLシリアルコンバータに流用できそうです。まずは、USB-TTLアダプタとしての利用例を調べてみます。
#2組のUARTを利用可能なpicoで作るUSB-TTLコンバータ
Raspberrypi.orgのフォーラムに「Pico UART-USB Bridge」との記事が、2019年10月1日に投稿されていました3。
この記事では、GP0とGP1の組み、GP4とGP5の組みをハードウェアUARTとして同時に利用可能であると紹介しています。
GithubにソースファイルだけでなくUF2ファイルも公開されていますので、すぐに利用可能です4。
UF2ファイルを書き込んだpicoをwindows10のマシンに接続してデバイスマネージャーを確認すると、COMポートが2個増えていました。
よりたくさんのUSB-TTLコンバータの例を調べてみました。
#6組のUARTを利用可能なpicoで作るUSB-TTLコンバータ
Raspberrypi.orgの2021年3月6日の投稿に、「Re:Pico UART-USB Bridge」として6組のUARTが利用可能なUF2が公開されてました5。
githubのソースファイルも公開されています6。
picoのGP0とGP1、GP4とGP5、GP8とGP9、GP12とGP13、GP16とGP17、GP20とGP21の6組のUARTが利用可能になっています。
実際に試してみると、COMポートが6個増えました。
このUF2には、以下の注意点が明記されています。
The PIO uarts are currently all 8x1. They will support but not check odd/even/no parity bit.
6組のうち4組は8x1に固定されているので、他の設定で接続したい場合、ハードウェア制御されているGP0とGP1、GP4とGP5の組を使う必要があります。
#おわりに
6組のUARTを有するUSB-TTLシリアルコンバータを、picoで作成することが可能でした。picoのコンバータの信号レベルは3.3 Vなので、それ以外の電圧のものと接続する場合、レベルコンバートして信号をpicoに入力しないと、破損の恐れがあります。実際の接続の際には注意が必要です。
USBケーブルで複数のマイクロコントローラを制御しているとUSB端子が足りなくなることがあります。複数のシリアルポートを有するUSB接続の変換アダプタは購入可能ですが、Amazonで商品の値段を見てみると4ポート搭載で1万円以上の価格だとわかります。USB端子が足りなくなっている場合に今回の記事が参考になればと思います。