Raspberry pi picoで作るVGAシステムコンソール


はじめに

 シリアルポートを介して制御するシングルボードコンピュータを利用していると、キーボードとモニターを直接接続して作業したいときがあります。このような作業の際に用いる、キーボードでの入力とモニターでの出力表示を可能にする機器を、シリアルコンソールとよびます1。これまでにPICやAVR等のマイクロコントローラを利用したシステムコンソールが知られています2。一方、Raspberry pi pico(以降、pico)を使用した例は、2021年10月頃まで知りませんでした。

RC2014 Pi Pico VGA Terminal

 2021年11月に、シングルボードコンピュータのRC2014にUSBキーボードとVGAモニタを接続可能にする「RC2014 Pi Pico VGA Terminal」(以降、VGAターミナル)が公開されました3

 このVGAターミナルにプログラムを書き込んだpicoを搭載して使用することで、キーボード入力とVGA出力が可能になります。
 VGAターミナルの配線は公開されており4、公開情報によると、PCBはRC2014専用に設計されていますが、Raspberry pi用のVGAアダプタ(以降、Gert VGA 666)5やPimoroni Pico VGA Demo Base(以降、VGAデモボード)6を使うことでもVGAシリアルターミナルを作製することが可能だとわかりました。

Picoterm

 Pico用のプログラムは、picotermとして、gihubで公開されています7。公開されているものはソースファイルとUF2ですので、目的に合致したUF2ファイルをpicoにコピーすることで、すぐに利用することが可能です。キーボードの種類として、USとUKの設定から選択でき、画面に表示される一行の文字数として、カラー表示の40文字と、白黒表示の80文字の設定から選択できます。


図.(左)カラー表示一行40文字、(右)白黒表示一行80文字

Pimoroni Pico VGA Demo BaseでVGAシステムコンソール

 picotermでは、TXをpicoのGP20に、RXをGP21に設定しています。VGAデモボードでは、GP20とGP21、GNDが基板上にスルーホールとして用意されているので、これらのスルーホールを使って、シングルボードコンピュータに接続可能です。
 一つ注意しなくてはいけないのが、GP21のRXには3.3 Vより大きな電圧のものを接続できない点です。VGAターミナルでは、10 kΩと22 kΩの抵抗で作製した分圧回路を介して接続するようになっています4

image.png
図.VGAデモボードのRX、TXの場所。白地に黒の横棒はGND

Gert VGA 666でVGAシステムコンソール

 picotermのVGA出力は、RGB555なので、配線が大変ではあるものの、手元にRaspberry PiのGPIO端子に接続可能なGert VGA 666をpicoに接続してVGA出力が可能です。手元にGert VGA 666がある場合にお勧めです。
 この組み合わせでも、RXであるpico本体のGP21は3.3 Vより大きな電圧のものを、直接接続できないので注意してください。


図.RGB用に左側のpicoに右側のVGA666の端子を接続。この後に、GNDとTX、RXの配線を行う。

おわりに

 今回のpicoの出力では、RGB555を選択していましたが、RGB222での出力にすると、画像出力に占有される端子数を減らせます。またVGA出力だけでなく、HDMI出力やコンポジット出力も可能なので、様々な出力形式に対応できるかと思います。