12
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Raspberry pi picoで作るマルチUSB-TTLシリアルコンバータ

Last updated at Posted at 2021-12-04

#はじめに
 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個増えていました。
image.png
 よりたくさんの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個増えました。
image.png
 この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端子が足りなくなっている場合に今回の記事が参考になればと思います。

  1. https://create.arduino.cc/projecthub/PatelDarshil/ways-to-use-arduino-as-usb-to-ttl-converter-475533

  2. https://datasheets.raspberrypi.com/pico/Pico-R3-A4-Pinout.pdf

  3. https://www.raspberrypi.org/forums/viewtopic.php?t=302684

  4. https://github.com/Noltari/pico-uart-bridge

  5. https://www.raspberrypi.org/forums/viewtopic.php?t=302684

  6. https://github.com/harrywalsh/pico-hw_and_pio-uart-gridge

12
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?