組み込みソフトウェアエンジニア、ハードウェアハッカー、産業用IoTアーキテクトにとって、Raspberry Piは迅速なプロトタイピングにおける揺るぎない王者です。デフォルトの「ヘッドレス」状態(SSH経由でアクセス)では、静かで目に見えない働き者です。しかし、ヒューマンマシンインターフェース(HMI)が必要になった瞬間——スマートホームサーモスタット、工場フロアの制御パネル、あるいは特注の医療機器プロトタイプを構築している場合でも——コードと物理的なインタラクションの間の溝を埋めなければなりません。.
TFT LCDディスプレイを Raspberry Piに統合することは、 ハードウェア開発における最も苛立たしい通過儀礼となることがよくあります。PiのGPIOヘッダーに画面を接続しただけで、悪名高い「白い画面(White Screen of Death)」で迎えられた経験があれば、この統合がいかに複雑かを痛感していることでしょう。.
この包括的でステップバイステップのエンジニアリングガイドでは、Raspberry PiでTFT LCDを正常に動作させるために必要な、正確なハードウェア接続、基盤となるLinuxデバイスツリーオーバーレイ、そして現代的なWayland/X11ソフトウェア設定について詳しく説明します。.
1. アーキテクチャのトリアージ:ディスプレイインターフェースの理解
ジャンパーワイヤを一本も触ったり、 sudo nano, とタイプしたりする前に、まず どのように ディスプレイがRaspberry Piとどのように通信するかを理解しなければなりません。接続方法は、フレームレート、CPUオーバーヘッド、および必要なソフトウェアドライバを完全に決定します。.
TFT LCDディスプレイをRaspberry Piに接続する主な方法は4つあります。.
A. SPIインターフェース(シリアル・ペリフェラル・インターフェース)
これは小型ディスプレイ(1.5インチ~3.5インチ)で最も一般的なインターフェースです。これらのディスプレイは40ピンのGPIOヘッダーに直接取り付けられます。.
- 現実: SPIはシリアルプロトコルです。ピクセルデータを1ビットずつ送信します。本質的に低速です。.
- 使用例: 静的なユーザーインターフェース、センサー読み出し、またはテキスト中心のダッシュボードに最適です。.
- 制限事項: SPI画面で60FPSの動画を再生することは期待しないでください。SPIバス速度(通常は約32MHz~48MHzに制限)によって物理的に制限され、320×480解像度の画面では最大15~25FPSしか得られません。ピクセルを描画するには高いCPUオーバーヘッドが必要です。.
B. MIPI DSIインターフェース(ディスプレイ・シリアル・インターフェース)
これはRaspberry Pi基板上の専用リボンケーブルコネクタ(Pi 5モデルでは「DISPLAY」または「MIPI」と表示)を利用します。.
- 現実: DSIは高速な差動信号インターフェースで、Raspberry PiのBroadcom GPUに直接アクセスします。.
- 使用例: 滑らかなUI、動画再生、複雑なグラフィックスには絶対的に最良の選択肢です。CPUを完全に解放し、GPIOピンを他のセンサー用に空けておけます。.
- 制限事項: DSIディスプレイは通常、公式Raspberry Piスクリーンまたはカスタムブリッジチップを搭載した特定のサードパーティモデルに限定されます。.
C. DPIインターフェース(ディスプレイ・パラレル・インターフェース)
DPIはほぼすべてのGPIOピン(RGB888カラー用に最大24ピン、同期信号用に追加のピン)を使用して、生のLCDパネルを駆動します。.
- 現実: かさばるHDMIポートを使用せずに、HDMI並みの速度とゼロのCPUオーバーヘッドを提供します。.
- 使用例: HDMIポートが塞がれている、またはセカンダリスクリーンに必要な、カスタムアーケードキャビネットや産業用ビルド。.
- 制限事項: ほぼすべてのGPIOピンを失います。I2CセンサーやSPIボタンを簡単に追加できません。.
D. HDMI / USBコンボ
大型のTFT LCD Raspberry Piスクリーン(5インチ~10インチ)は、ディスプレイ信号に標準HDMIを、タッチインターフェースにUSBケーブルを使用することがよくあります。.
- 現実: プラグアンドプレイの簡便さ。Piはそれを標準的なデスクトップモニターとして扱います。.
- 制限事項: かさばる配線。薄型の特注製品エンクロージャーにすっきりと統合するのは困難です。.
この実践ガイドでは、最も悪名高いほど困難な統合、すなわち SPIベースのGPIOディスプレイ, に焦点を当てます。なぜなら、Linuxカーネルに対する最も深い理解を必要とするためです。.
2. ハードウェア組み立て:SPIディスプレイの配線
お使いのSPIディスプレイが「HAT」(Hardware Attached on Top)としてGPIOヘッダーに直接はめ込まれない場合は、手動で配線する必要があります。.
ハードウェアの黄金律
Raspberry Piの電源が入っている状態でディスプレイを配線しては**いけません**。. GPIOピンのホットプラグは電圧スパイクを引き起こし、LCDドライバICを瞬時に破壊するか、さらに悪ければRaspberry PiのBroadcom SoCを焼き切る可能性があります。.
SPIピン配線の詳細
標準的な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データをどのように解釈すべきかを伝えます。.
3. カーネル設定:デバイスツリーオーバーレイ
画面を配線しました。Piの電源を入れます。画面は点灯しますが、純白のままです。これが ホワイトスクリーン・オブ・デス. です。これはバックライトに電力が供給されているが、Raspberry Piカーネルが画面の存在を認識しておらず、画素データを一切送信していないことを意味します。.
Linuxカーネルに対して、画面と通信する方法を伝える必要があります。現代のRaspberry Pi OS(Bookworm以降)では、これはデバイスツリーオーバーレイ (dtoverlay).
ステップ3.1: SPIバスの有効化
まず、Pi上のSPIハードウェアを有効にする必要があります。.
- Raspberry PiにSSH接続します。.
- 設定ツールを実行します:Bash
sudo raspi-config - 次の項目に移動します インターフェースオプション -> スパイク -> 選択します はい を有効化します。.
- Piを再起動します。.
ステップ3.2: ディスプレイコントローラ(ドライバ)の特定
TFT LCDパネルは単なるガラスです。それらは、ガラスの裏面(またはPCB上)に貼り付けられたマイクロチップによって駆動されます。欧米のメーカー市場で最も一般的なコントローラは以下の通りです:
- ILI9341 (2.4″から2.8″スクリーンで非常に一般的)
- ST7789 (1.3″から2.0″ IPSスクリーンで一般的)
- ILI9486 (3.5″スクリーンで一般的)
あなたは 必ず 自身の画面がどのコントローラを使用しているかを知る必要があります。メーカーのデータシートを確認してください。.
ステップ3.3: 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.
設定が正しければ、起動中に白い画面が黒くなり、最終的には小さな画面にLinuxコンソールのテキストがスクロールするのが見えるはずです。
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) アーキテクチャが採用されています。.
は最新のRaspberry Pi OSでは動作しません。
現在のUI駆動方法:.
産業用HMIやカスタムデバイスを構築する場合、3.5インチ画面でフルデスクトップGUIを実行しようとすべきではありません。代わりに、ハードウェアアクセラレーション対応ライブラリを使用してDRM/KMSレイヤーに直接レンダリングするアプリケーションを作成すべきです。
- LVGL(Light and Versatile Graphics Library): プロフェッショナル向けスタック:.
- Linux DRMサブシステムに直接書き込むオープンソースのCライブラリです。非常に軽量で、SPI画面に最適です。 Qt / PyQt:
Qtアプリケーションをまたはeglfsまたは. - linuxfb プラグインを使用して実行するように設定でき、Waylandデスクトップを完全にバイパスしてUIをTFT LCDに直接描画できます。.
キオスクモード:
Web技術 (HTML/CSS/JS) をどうしても使用する必要がある場合は、WayfireをローカルのNode.jsサーバーを指す全画面Chromiumブラウザで直接起動するように設定できます。.
5. タッチインターフェースの較正
- TFT LCD Raspberry Piにタッチオーバーレイが搭載されている場合、画面に画像を表示させることは半分の戦いに過ぎません。左上隅をタップしたときにマウスカーソルが実際に左上隅に移動することを確認する必要があります。 抵抗膜式と静電容量式タッチ.
- 抵抗膜式 (XPT2046コントローラ): 圧力が必要です。安価な3.5インチSPI画面で非常に一般的です。アナログ抵抗は温度や製造ロットによって変動するため、高度な較正が必要です。.
静電容量式 (FT6236 / Goodixコントローラ):
スマートフォンのようなものです。グリッドは工場でピクセルにデジタルマッピングされているため、一般的に較正は不要です。SPIではなくI2Cバスを使用します。 Wayland/Libinput下でのXPT2046抵抗膜式画面の較正 X11は廃止されたため、従来の xinput_calibrator そして ツールは時代遅れです。現在、タッチスクリーンは libinput.
- および
udevルールによって処理されます。まず、 - /boot/firmware/config.txt
でタッチドライバがロードされていることを確認してください:Ini, TOML - dtoverlay=ads7846,cs=1,penirq=17,penirq_pull=2,speed=1000000,keep_vref_on=1
再起動後、libinput較正ツールをインストールします:Bashsudo apt install westonWayfire (デフォルトコンポジタ) は入力デバイスに特定の設定ファイルを使用します。タッチマトリックスを正しくマッピングするには、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) を追加します。.
よくある質問(FAQ)
dtoverlay=rpi-display,speed=48000000
A: これは48 MHz SPIクロックを要求します。.
- Raspberry PiのSPIコアクロックは分周システムで動作します。48MHzを要求すると、おそらくその速度が得られます。60MHzを要求すると、Piはコアクロックを分周し、かえって31MHzに低下させる可能性があります。さらに、速度を高くしすぎると (例:80000000)、物理的なジャンパワイヤがアンテナとして機能し、電磁干渉 (EMI) が発生してデータが破損し、画面が静的な「スノーノイズ」や反転色で満たされる結果になります。SPI速度を上げる場合は、ワイヤを物理的に可能な限り短く (10cm未満) 保ってください。 MOSI、SCLK、特にCS(チップセレクト)およびDC(データ/コマンド)ピンを確認してください。.
- 設定を確認: 確保
dtparam=spi=onが有効になっていることを確認してください。udev. - ドライバを確認: 使用している特定の画面コントローラチップ(例:ILI9341対ST7789)に適した正しいドライバをロードしていることを確認してください。
dtoverlay.
Q2: 3.5インチSPI画面で標準的なデスクトップGUI(ChromiumやVLCなど)を実行できますか?
A: 技術的には可能ですが、実用的には不可能です。SPIバスは320×480ピクセルを毎秒60フレームで転送する帯域幅を持っていません。動画再生では激しい画面ティアリングが発生し、デスクトップUIは非常に遅延します。デスクトップ環境や動画再生には、MIPI DSIまたはHDMIディスプレイを使用する必要があります。SPI画面はシンプルな静的GUI、ボタン、テキスト表示用です。.
Q3: タッチスクリーンのクリックは反応しますが、マウスカーソルが画面の反対側に移動します。どう修正すればよいですか?
A: タッチ軸が表示軸に対して反転しています。これはソフトウェアでディスプレイを回転させた場合(例:, display_lcd_rotate=2)に、タッチマトリックスを回転させていないと発生します。X軸とY軸を入れ替える、または反転させるために、 ツールは時代遅れです。現在、タッチスクリーンは ルールまたはWayfire/X11設定内で変換マトリックスを適用する必要があります。.
Q4: LCD画面を追加するとRaspberry Piの電源に過負荷がかかりますか?
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電源で画面に電力を供給するべきです。.
Q5: Raspberry Pi Compute Moduleを使用して商業製品を開発したいです。SPIを使用すべきですか?
A: いいえ。Compute Module 4(CM4)またはCM5を使用して商業製品に移行する場合は、カスタムキャリアボード上でMIPI DSIラインを配線するか、DPI(パラレル)インターフェースを利用すべきです。これにより、ディスプレイレンダリングがハードウェアGPUにオフロードされ、CPUは実際のアプリケーションロジックを実行するために解放され、滑らかでプロフェッショナルグレードの60 FPSアニメーションが保証されます。.







