マイコンから高い解像度の映像を出すのは難しい。コンポジットやVGA、DVIの信号を無理やり作る手法はあるが、いずれもマイコン自身が映像のタイミングを刻む必要がある。RP2040でDVIを出すPicoDVIは代表格だが、出力できる周波数に制限があり、つないだディスプレイによっては映らない。
HTLAB.NETの菊地 秀人氏が公開した「Pico_USB_Disp」は、この役割をマイコンの外へ出す。USB 2.0世代の中古USBグラフィックディスプレイアダプタをつなぎ、マイコンはUSBホストとして描画データを送るだけにした。映像信号を作るのはアダプタ側で、アダプタ自身がフレームバッファとして働くため、マイコンは厳しいタイミング制御から解放される。
出力は1920×1080の60Hzに達する。アダプタが規格に沿った信号を作るため、簡略化したDVI信号を使う手法よりディスプレイを選ばない。配線はUSBの信号線2本と電源だけで済み、使うピンの数も最小限にとどまる。
対応するのはRP2040とRP2350、ESP32-S2、ESP32-S3、ESP32-P4、Teensy 4.xを載せたボードだ。ビルドはArduino IDEとRaspberry Pi Pico SDK、ESP-IDFのいずれからでもできる。描画にはLovyanGFXとLVGL v9が組み合わさり、つないだディスプレイのEDIDを読んでクロックと表示モードを自動で選ぶ。
必要なアダプタには条件がある。フルHDを出せるのはDisplayLinkのDL-165かDL-195を積んだ製品に限られる。どちらもUSB 2.0世代のチップで現行品はほぼ流通していないが、同氏はヤフオクやメルカリで数百円から買えるとしており、国内で入手しやすい製品を動作確認の結果とともに表にまとめている。アイ・オー・データのUSB-RGB/D2、バッファローのGX-HDMI/U2、エレコムのLDE-WX015U、サンワサプライのAD-USB23HDといった型番が並ぶ。
試すだけならブラウザで済む。書き込み用のページが用意してあり、対応ボードをつなげばファームウェアが入って詳細情報を表示するサンプルが動く。USBのAコネクタを備えたボードなら配線もいらない。同氏はスイッチサイエンスのPicossci USBホストやWaveshareのRP2350-USB-Aを挙げる。
ボードによって扱えるアダプタの範囲は変わり、RP2040やRP2350、ESP32-S2とS3、Teensyは対応が限られる。すべてのアダプタを扱えるのはESP32-P4だけで、同氏は該当するボードがまだ少ないと書き添えている。