Raspberry Pi Pico USB Display Library
Raspberry Pi PicoやESP32から真のFull HD映像出力を行うためのライブラリ「Pico_USB_Disp」を作りました。
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/D2 、 GX-DVI/U2AI 、 LDE-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コネクタが搭載されていてすぐに使用できるボードは
- スイッチサイエンス Picossci USB ホスト
- Waveshare RP2350-USB-A
- ESP32-S3 ボード
等です。
もちろん、USBコネクタを接続すればどのボードでも動作します。
Pico / Pico2 / ESP32-S2,S3 / Teensy は限定的なサポートですが、 ESP32-P4 搭載のボードがあれば全部のアダプタに対応できます。
ブラウザからファームウェアを書き込みすると詳細情報を表示するサンプルが動きます。
画面表示に問題がある場合は、シリアル経由で画面表示と同じ内容が取得できます。
TeraTerm等のソフトウェアでシリアルポートを115200のボーレートで開いてください。
ライブラリの使い方(Arduino IDEでライブラリを追加する)
Arduino IDEのライブラリマネージャを開き「Pico_USB_Disp」で検索をします。
基本的な使い方はライブラリをインストールすると付属しているExamplesに日本語コメント入りで例を入れてあります。
英語になりますが、使い方は以下でも解説しています。
ライブラリの使い方(Pico SDKでライブラリを追加する)
ライブラリの使い方(ESP-IDFでライブラリを追加する)
ライブラリの使い方(Windowsでビルドする例)
使用例・掲載他
- https://x.com/shapoco/status/2081752493164495169
- https://x.com/shapoco/status/2082081556156588060
- https://x.com/adafruit/status/2082106267724574802
- https://blog.adafruit.com/2026/07/28/drive-a-monitor-from-your-microcontroller-with-a-usb-graphics-display-adapter/
