Raspberry Pi Pico USB Display Library

Raspberry Pi PicoやESP32から真のFull HD映像出力を行うためのライブラリ「Pico_USB_Disp」を作りました。

Pico USB Display Library 001

USB2.0時代の古いUSBグラフィックディスプレイアダプタを利用して映像出力を行います。

主にDisplayLinkのチップを搭載したアダプタに対応しています。

ヤフオクやメルカリで数百円から購入できます。

 

アダプタの必要なしに映像出力可能なPicoDVIプロジェクトでは出力周波数の制限でディスプレイの相性問題があります。

このアダプタを利用する方法であればアダプタ自身がフレームバッファとなり映像出力を行うため、信号の品質も高く、表示するディスプレイを選びません!

なおかつ、USBの信号線2本と電源だけ繋げば良いので、ピン数も最小限で映像出力が追加できます。

 

使い方について。

英語になりますが上記リポジトリに詳細を書いてあります。日本語の解説は以下に書きます。

 

クイックスタート

以下のどれかのMCUを搭載したボードを準備してください。

  • RP2040(Raspberry Pi Pico)
  • RP2350(Raspberry Pi Pico 2)
  • ESP32-S2
  • ESP32-S3
  • ESP32-P4
  • Teensy 4.x

唯一、ESP32-P4だけが様々な種類のアダプタに対応しますが、ボードがあまりないですね。

どの場合でもUSBホストとしてAコネクタが搭載されていると使いやすいと思います。

Aコネクタコネクタ搭載のボードとしては、

  • Waveshare RP2350-USB-A
  • Picossci USBホスト(RP2040搭載)
  • Adafruit Feather RP2040 with USB Type A Host

があり。

他に、

  • Espressif ESP32-S3-DevKitC-1
  • Freenove ESP32-S3

もありますが、こちらはタイプAコネクタではないのでOTGの変換ケーブルも調達しましょう。

ESP32の場合はPSRAMが搭載されているとより良いです。

USBコネクタが無い Raspberry Pi Pico などのボードを使う場合はUSBコネクタの調達も忘れないようにしてください。

次にUSBグラフィックディスプレイアダプタの調達です。

 

USBグラフィックディスプレイアダプタの選び方

とりあえず DisplayLink DL-165 か DL-195 チップを搭載したアダプタ を購入してください。

Full HD解像度を出力できて、Picoなどのマイコンから扱えるチップはこの2択となります。

USB2.0世代のチップなのでオークションサイトや中古ショップなどで搭載製品を探してください。

 

チップ 最大解像度
DisplayLink DL-120 1280x1024 / 1400x1050
DisplayLink DL-160 1600x1200 / 1680x1050
DisplayLink DL-115 1024x600
DisplayLink DL-125 1280x1024 / 1440x900
DisplayLink DL-165 1600x1200 / 1920x1080
DisplayLink DL-195 1920x1200 / 2048x1152

DisplayLinkのUSB2.0世代のチップであれば基本的にどれもマイコンで扱えますが、出力解像度の差があります。

Full HD解像度で出力できるのは DisplayLink DL-165 か DL-195 チップを搭載したアダプタ しかありません。

 

具体的にそのチップが採用されている製品は何か、というと以下のURLに表をまとめました。

(分解画像も上げてあります。動作レポートお待ちしております。)

 

全世界の情報を対象にしているため、日本でヤフオク等から入手しやすいものを抜粋して以下にまとめます。

ヤフオクでは、 USB-RGB/D2GX-DVI/U2AILDE-WX015U あたりが多く出回っていて良いのではないでしょうか。

HDMI端子のほうが使いやすいと思いますが、DVIが圧倒的で数があまりないですね。

メーカー 型番 端子 チップ 対応
アイ・オー・データ USB-RGB VGA DL-120 動作確認済み
アイ・オー・データ USB-RGB/D DVI DL-160 動作確認済み
アイ・オー・データ USB-RGB2 VGA DL-125 動作確認済み
アイ・オー・データ USB-RGB/D2 DVI DL-195 動作確認済み
アイ・オー・データ USB-RGB/D2S DVI ? 未テスト
バッファロー GX-DVI/U2 DVI DL-160 動作確認済み
バッファロー GX-DVI/U2AI DVI DL-195 動作確認済み ※注
バッファロー GX-DVI/U2B DVI DL-165 動作確認済み
バッファロー GX-DVI/U2C DVI DL-195 動作確認済み
バッファロー GX-HDMI/U2 HDMI DL-165 動作確認済み
エレコム / Logitec LDE-SX010U VGA ? 未テスト
エレコム / Logitec LDE-SX015U VGA ? 未テスト
エレコム / Logitec LDE-WX015U DVI DL-195 動作確認済み
ラトックシステム REX-USBDVI DVI DL-160 動作確認済み
ラトックシステム REX-USBDVI2 DVI DL-195 動作確認済み
グリーンハウス GH-USB-DVIA DVI DL-195 動作確認済み
グリーンハウス GH-USB-VGAFHD VGA ? 未テスト
エアリア SD-U2VDH DVI DL-165 動作確認済み
ノバック NV-CV100UH HDMI DL-165 動作確認済み ※注
サンワサプライ AD-USB23HD HDMI DL-165 動作確認済み
サンワサプライ AD-USB24VGA VGA ? 未テスト
サンワサプライ 500-KC007(N) HDMI DL-165 動作確認済み
サンワサプライ 500-KC002(N) VGA ? 未テスト
SANKA / アユート KDU211 VGA ? 未テスト
SANKA / アユート KDU221 DVI ? 未テスト
SANKA / アユート KDU231 HDMI DL-165 動作確認済み
  • ※注:GX-DVI/U2AI はPCで動かす際にWinUSBでは動かず、libusbKを使う必要があります。
  • ※注:NV-CV100UH はUSBハブが内蔵されています。

 

DisplayLinkを内蔵した小型USBディスプレイという変わり種もあります。

ヤフオクを見ると、LCD-8000U系統が多く出ているようです。

センチュリーのディスプレイは型番末尾違いで仕様が異なるので要注意です。

USB3.0系統の製品はこのライブラリでは使用できません。

メーカー 型番 サイズ 解像度 チップ 対応
センチュリー LCD-4300U 4.3 800x480 ? 未テスト
センチュリー LCD-8000U 8.0 800x600 DL-120 動作確認済み
センチュリー LCD-8000UD 8.0 800x600 ? 未テスト ※注
センチュリー LCD-8000U2 8.0 800x600 ? 未テスト
センチュリー LCD-8000U2B 8.0 800x600 ? 未テスト
センチュリー LCD-8000U2W 8.0 800x600 ? 未テスト
センチュリー LCD-8000U2BV2 8.0 800x600 ? 未テスト
センチュリー LCD-8000U2WV2 8.0 800x600 ? 未テスト
センチュリー LCD-10000U 10.1 1366x768 ? 未テスト
  • ※注:LCD-8000UD はDVI出力がありアダプタとしても使用できるようです。

 

ちなみに、新品でもいくつか手に入るようです。

 

ライブラリの使い方(ブラウザからファームウェアを書き込む)

とりあえず試してみたい!という場合にはUSBコネクタが搭載されている対応マイコンボードを用意すればブラウザからファームウェアを書き込んで使えます。

USBコネクタが搭載されていてすぐに使用できるボードは

等です。

もちろん、USBコネクタを接続すればどのボードでも動作します。

Pico / Pico2 / ESP32-S2,S3 / Teensy は限定的なサポートですが、 ESP32-P4 搭載のボードがあれば全部のアダプタに対応できます。

ブラウザからファームウェアを書き込みすると詳細情報を表示するサンプルが動きます。

 

画面表示に問題がある場合は、シリアル経由で画面表示と同じ内容が取得できます。

TeraTerm等のソフトウェアでシリアルポートを115200のボーレートで開いてください。

 

ライブラリの使い方(Arduino IDEでライブラリを追加する)

Arduino IDEのライブラリマネージャを開き「Pico_USB_Disp」で検索をします。

基本的な使い方はライブラリをインストールすると付属しているExamplesに日本語コメント入りで例を入れてあります。

英語になりますが、使い方は以下でも解説しています。

 

ライブラリの使い方(Pico SDKでライブラリを追加する)

 

ライブラリの使い方(ESP-IDFでライブラリを追加する)

 

ライブラリの使い方(Windowsでビルドする例)

 

使用例・掲載他