組込み表示プロジェクトでボトルネックに直面していませんか?
複雑な統合作業やサプライチェーンの問題が市場投入までの時間を遅らせないようにしましょう。RJYの専門家チームによる無料コンサルテーションを予約し、お客様に合わせた設計・製造サポートをご利用ください。.


TFT LCD Raspberry Piディスプレイの統合は、ハードウェア開発において最も苛立たしい通過儀礼となることがよくあります。PiのGPIOヘッダーにスクリーンを接続したものの、悪名高い「ホワイトスクリーン・オブ・デス」に遭遇した経験がある方なら、この統合がいかに複雑であるかをご理解いただけるでしょう。.
組み込みソフトウェアエンジニア、ハードウェアハッカー、産業用IoTアーキテクトにとって、Raspberry Piは迅速なプロトタイピングにおける揺るぎない王者です。デフォルトの「ヘッドレス」状態(SSH経由でアクセス)では、静かで目に見えない働き者です。しかし、ヒューマンマシンインターフェース(HMI)が必要になった瞬間——スマートホームサーモスタット、工場フロアの制御パネル、あるいは特注の医療機器プロトタイプを構築している場合でも——コードと物理的なインタラクションの間の溝を埋めなければなりません。.
TFT LCDディスプレイを Raspberry Piに統合することは、 ハードウェア開発における最も苛立たしい通過儀礼となることがよくあります。PiのGPIOヘッダーに画面を接続しただけで、悪名高い「白い画面(White Screen of Death)」で迎えられた経験があれば、この統合がいかに複雑かを痛感していることでしょう。.
この包括的でステップバイステップのエンジニアリングガイドでは、Raspberry PiでTFT LCDを正常に動作させるために必要な、正確なハードウェア接続、基盤となるLinuxデバイスツリーオーバーレイ、そして現代的なWayland/X11ソフトウェア設定について詳しく説明します。.
ジャンパーワイヤを一本も触ったり、 sudo nano, とタイプしたりする前に、まず どのように ディスプレイがRaspberry Piとどのように通信するかを理解しなければなりません。接続方法は、フレームレート、CPUオーバーヘッド、および必要なソフトウェアドライバを完全に決定します。.
TFT LCDディスプレイをRaspberry Piに接続する主な方法は4つあります。.
これは小型ディスプレイ(1.5インチ~3.5インチ)で最も一般的なインターフェースです。これらのディスプレイは40ピンのGPIOヘッダーに直接取り付けられます。.
これはRaspberry Pi基板上の専用リボンケーブルコネクタ(Pi 5モデルでは「DISPLAY」または「MIPI」と表示)を利用します。.
DPIはほぼすべてのGPIOピン(RGB888カラー用に最大24ピン、同期信号用に追加のピン)を使用して、生のLCDパネルを駆動します。.
大型のTFT LCD Raspberry Piスクリーン(5インチ~10インチ)は、ディスプレイ信号に標準HDMIを、タッチインターフェースにUSBケーブルを使用することがよくあります。.
この実践ガイドでは、最も悪名高いほど困難な統合、すなわち SPIベースのGPIOディスプレイ, に焦点を当てます。なぜなら、Linuxカーネルに対する最も深い理解を必要とするためです。.
お使いのSPIディスプレイが「HAT」(Hardware Attached on Top)としてGPIOヘッダーに直接はめ込まれない場合は、手動で配線する必要があります。.
Raspberry Piの電源が入っている状態でディスプレイを配線しては**いけません**。. GPIOピンのホットプラグは電圧スパイクを引き起こし、LCDドライバICを瞬時に破壊するか、さらに悪ければRaspberry PiのBroadcom SoCを焼き切る可能性があります。.
標準的なSPI TFT LCD Raspberry Piスクリーンを動作させるには、電源、SPIバス(MOSI、SCLK、CE)、および制御ピン(DC、Reset)を接続しなければなりません。.
以下は、メス-メスジャンパーワイヤを使用して実行しなければならない標準的なマッピングです:
| ディスプレイピン | 機能 | Raspberry Pi物理ピン番号 | Raspberry Pi BCM GPIO |
| VCC/5V | 電源 | ピン 2 または 4 | 5V電源 |
| GND | グランド | ピン 6(または任意のGND) | グランド |
| MOSI (SDI) | 画面へのデータ | ピン 19 | GPIO 10 (SPI0_MOSI) |
| SCLK (SCK) | SPIクロック | ピン 23 | GPIO 11 (SPI0_SCLK) |
| CS / CE0 | チップセレクト | ピン 24 | GPIO 8 (SPI0_CE0) |
| DC / RS | データ/コマンド | ピン22(一般的なデフォルト) | GPIO 25 |
| RST / RES | リセット | ピン18(一般的なデフォルト) | GPIO 24 |
| BLK / LED | バックライト | ピン12 (PWM) または 3.3V | GPIO 18 (PWM0) |
技術上のヒント: について DC (データ/コマンド) ピンは極めて重要です。SPIは1と0のみを送信します。ディスプレイコントローラ(ILI9341など)は、それらの1と0が画素の色データなのか、システムコマンド(「画面を点灯」など)なのかを知る必要があります。DCピンはHighまたはLowに切り替わり、コントローラに対して受信するSPIデータをどのように解釈すべきかを伝えます。.
画面を配線しました。Piの電源を入れます。画面は点灯しますが、純白のままです。これが ホワイトスクリーン・オブ・デス. です。これはバックライトに電力が供給されているが、Raspberry Piカーネルが画面の存在を認識しておらず、画素データを一切送信していないことを意味します。.
Linuxカーネルに対して、画面と通信する方法を伝える必要があります。現代のRaspberry Pi OS(Bookworm以降)では、これはデバイスツリーオーバーレイ (dtoverlay).
まず、Pi上のSPIハードウェアを有効にする必要があります。.
sudo raspi-configTFT LCDパネルは単なるガラスです。それらは、ガラスの裏面(またはPCB上)に貼り付けられたマイクロチップによって駆動されます。欧米のメーカー市場で最も一般的なコントローラは以下の通りです:
あなたは 必ず 自身の画面がどのコントローラを使用しているかを知る必要があります。メーカーのデータシートを確認してください。.
config.txtの編集.
現代のRaspberry Pi OSでは、ブート設定ファイルの場所が変更されています。
nanoテキストエディタを使用して開きます:
Bash
sudo nano /boot/firmware/config.txt (注記:古いBullseye OSバージョンでは、パスは単に)
/boot/config.txt ILI9341 ファイルの末尾までスクロールし、使用するドライバに対応する特定のオーバーレイを追加します。例えば、上記の表通りに配線された
画面を使用している場合:
Ini, TOML
# SPIを有効化 ST7789 display (commonly used in Adafruit PiTFTs):
画面を使用している場合:
ディスプレイ(Adafruit PiTFTで一般的に使用)の場合:
dtoverlay=adafruit-st7789v-hAT,fps=30ファイルを保存し (, Ctrl+OEnter)、終了します ().
Ctrl+X Raspberry Piを再起動します:.
sudo reboot.
4. 現代のグラフィックスアーキテクチャ:FBCP vs. DRM/KMS.
ここが、2020年頃の多くのチュートリアルが誤解を招くポイントです。 従来、メインのHDMIデスクトップを小さなSPI TFT LCD Raspberry Piディスプレイにミラーリングしたい場合、 (フレームバッファコピー)。プライマリGPUのフレームバッファ (fb0) のスナップショットを取得し、SPI画面のフレームバッファ (fb1).
Waylandの現実 Raspberry Pi OS Bookworm以降、X11ウィンドウシステムおよび従来のフレームバッファアーキテクチャは廃止されました。現在のPiでは、 Wayland (具体的にはWayfireコンポジタ) および DRM/KMS.
従来、メインのHDMIデスクトップを小さなSPI TFT LCD Raspberry Piディスプレイにミラーリングしたい場合、 (Direct Rendering Manager / Kernel Mode Setting) アーキテクチャが採用されています。.
現在のUI駆動方法:.
産業用HMIやカスタムデバイスを構築する場合、3.5インチ画面でフルデスクトップGUIを実行しようとすべきではありません。代わりに、ハードウェアアクセラレーション対応ライブラリを使用してDRM/KMSレイヤーに直接レンダリングするアプリケーションを作成すべきです。
Qtアプリケーションを または eglfs または.Web技術 (HTML/CSS/JS) をどうしても使用する必要がある場合は、WayfireをローカルのNode.jsサーバーを指す全画面Chromiumブラウザで直接起動するように設定できます。.
スマートフォンのようなものです。グリッドは工場でピクセルにデジタルマッピングされているため、一般的に較正は不要です。SPIではなくI2Cバスを使用します。 Wayland/Libinput下でのXPT2046抵抗膜式画面の較正 X11は廃止されたため、従来の xinput_calibrator そして ツールは時代遅れです。現在、タッチスクリーンは libinput.
udevルールによって処理されます。まず、でタッチドライバがロードされていることを確認してください:Ini, TOML再起動後、libinput較正ツールをインストールします:Bash sudo apt install weston Wayfire (デフォルトコンポジタ) は入力デバイスに特定の設定ファイルを使用します。タッチマトリックスを正しくマッピングするには、Wayfire設定を編集する必要があります。 ~/.config/wayfire.ini.を開き、 1 0 0 0 1 0.)[input].
(注:正確なマトリックスは画面がランドスケープかポートレートかによって異なります。デフォルトの単位行列は.
1 0 0 0 1 0 0 0 1 udev です)。 スピード タッチ軸が反転している場合 (指を上に動かすとマウスが下に動く)、マトリックス値を反転させる必要があります。例えば、Y軸を反転させるには、udevルールまたはWayfire設定マトリックスのYスケール乗数を負の値に変更します。.
画面を使用している場合:
6. SPIバスのオーバークロック (フレームレート向上)
ユーザーインターフェースが遅いと感じる場合、SPIバスをオーバークロックしてTFT LCD Raspberry Piのフレームレートをわずかに向上させることができます。.
警告: /boot/firmware/config.txt.
speed.
パラメータ (単位Hz) を追加します。.
A: これは48 MHz SPIクロックを要求します。.
dtparam=spi=on が有効になっていることを確認してください。 udev.dtoverlay .A: 技術的には可能ですが、実用的には不可能です。SPIバスは320×480ピクセルを毎秒60フレームで転送する帯域幅を持っていません。動画再生では激しい画面ティアリングが発生し、デスクトップUIは非常に遅延します。デスクトップ環境や動画再生には、MIPI DSIまたはHDMIディスプレイを使用する必要があります。SPI画面はシンプルな静的GUI、ボタン、テキスト表示用です。.
A: タッチ軸が表示軸に対して反転しています。これはソフトウェアでディスプレイを回転させた場合(例:, display_lcd_rotate=2)に、タッチマトリックスを回転させていないと発生します。X軸とY軸を入れ替える、または反転させるために、 ツールは時代遅れです。現在、タッチスクリーンは ルールまたはWayfire/X11設定内で変換マトリックスを適用する必要があります。.
A: Piのモデルと画面サイズによっては過負荷になる可能性があります。Raspberry Pi 4または5には堅牢な5.1V / 3Aから5Aの電源が必要です。3.5インチSPI画面のLEDバックライトは約100mAから150mAを消費し、5V GPIOピンで安全に供給できます。しかし、7インチや10インチの画面では500mAから1A以上を消費することがあります。5インチを超える画面では、電圧低下によるスロットリング(黄色い稲妻アイコンで表示)を防ぐために、PiのGPIOピンからではなく、外部の専用USB電源で画面に電力を供給するべきです。.
A: いいえ。Compute Module 4(CM4)またはCM5を使用して商業製品に移行する場合は、カスタムキャリアボード上でMIPI DSIラインを配線するか、DPI(パラレル)インターフェースを利用すべきです。これにより、ディスプレイレンダリングがハードウェアGPUにオフロードされ、CPUは実際のアプリケーションロジックを実行するために解放され、滑らかでプロフェッショナルグレードの60 FPSアニメーションが保証されます。.
ディスプレイサイズ、解像度、インターフェース、輝度、タッチ要件、コントローラーボード要件、およびアプリケーション環境を共有してください。.
RJYのエンジニアリングチームにご相談いただき、ディスプレイマッチング、コントローラーボードの確認、およびカスタマイズについて話し合ってください。.