Incontri un collo di bottiglia nel tuo progetto di display embedded?

Non lasciare che integrazioni complesse o problemi di supply chain rallentino il tuo time-to-market. Prenota una consulenza gratuita con il team di esperti RJY per un supporto su misura in progettazione e produzione.

Come Configurare un Display TFT LCD per Raspberry Pi

Condividi il tuo apprezzamento

Per gli ingegneri del software embedded, gli hacker hardware e gli architetti dell'Industrial IoT, il Raspberry Pi è il re indiscusso del prototipaggio rapido. Nel suo stato predefinito “headless” (accessibile via SSH), è un cavallo di battaglia silenzioso e invisibile. Ma nel momento in cui è necessaria un'interfaccia uomo-macchina (HMI) — che si stia costruendo un termostato per la casa intelligente, un pannello di controllo per il reparto produttivo o un prototipo di dispositivo medico su misura — è necessario colmare il divario tra codice e interazione fisica.

L'integrazione di un display TFT LCD per Raspberry Pi è spesso il rito di passaggio più frustrante nello sviluppo hardware. Se avete mai collegato uno schermo ai pin GPIO del vostro Pi solo per essere accolti dall'infame “Schermata Bianca della Morte”, sapete esattamente quanto complessa possa essere questa integrazione.

Questa guida ingegneristica completa e dettagliata vi condurrà attraverso le precise connessioni hardware, i sottostanti overlay del Device Tree di Linux e le moderne configurazioni software Wayland/X11 necessarie per distribuire con successo un display TFT LCD su un Raspberry Pi.

1. Triage architetturale: comprendere l'interfaccia del display

Prima di toccare un solo cavetto jumper o digitare sudo nano, dovete capire come come il vostro display comunica con il Raspberry Pi. Il metodo di connessione determina completamente la frequenza dei fotogrammi, il carico sulla CPU e i driver software richiesti.

Esistono quattro modi principali per collegare un display TFT LCD a Raspberry Pi.

A. L'interfaccia SPI (Serial Peripheral Interface)

Questa è l'interfaccia più comune per i display di piccole dimensioni (da 1,5" a 3,5"). Questi display si collegano direttamente al connettore GPIO a 40 pin.

  • La realtà: SPI è un protocollo seriale. Invia i dati dei pixel un bit alla volta. È intrinsecamente lento.
  • Caso d'uso: Perfetto per interfacce utente statiche, letture di sensori o dashboard ricche di testo.
  • Limitazioni: Non aspettatevi di riprodurre video a 60 FPS su uno schermo SPI. Siete fisicamente limitati dalla velocità del bus SPI (tipicamente limitata a circa 32MHz-48MHz), che produce un massimo di 15-25 FPS su uno schermo con risoluzione 320x480. È richiesto un elevato carico della CPU per inviare i pixel.

B. L'interfaccia MIPI DSI (Display Serial Interface)

Questa utilizza il connettore dedicato a nastro sulla scheda Raspberry Pi (contrassegnato “DISPLAY” o “MIPI” sui modelli Pi 5).

  • La realtà: DSI è un'interfaccia ad alta velocità con segnalazione differenziale che si colleca direttamente alla GPU Broadcom del Raspberry Pi.
  • Caso d'uso: L'opzione assolutamente migliore per interfacce utente fluide, riproduzione video e grafica complessa. Libera completamente la CPU e lascia i pin GPIO disponibili per altri sensori.
  • Limitazioni: I display DSI sono tipicamente limitati agli schermi ufficiali Raspberry Pi o a specifici modelli di terze parti con chip bridge personalizzati.

C. L'interfaccia DPI (Display Parallel Interface)

DPI utilizza quasi tutti i pin GPIO (fino a 24 pin per il colore RGB888, più i segnali di sincronizzazione) per pilotare un pannello LCD grezzo.

  • La realtà: Offre velocità simili all'HDMI e zero carico sulla CPU senza utilizzare l'ingombrante porta HDMI.
  • Caso d'uso: Cabinati arcade personalizzati o realizzazioni industriali dove la porta HDMI è bloccata o necessaria per un secondo schermo.
  • Limitazioni: Si perdono quasi tutti i pin GPIO. Non è possibile aggiungere facilmente sensori I2C o pulsanti SPI.

D. Il combo HDMI / USB

I grandi schermi TFT LCD per Raspberry Pi (da 5 a 10 pollici) spesso utilizzano l'HDMI standard per il segnale video e un cavo USB per l'interfaccia touch.

  • La realtà: Semplicità plug-and-play. Il Pi lo tratta come un monitor desktop standard.
  • Limitazioni: Cablaggio ingombrante. È difficile integrarlo in modo pulito in un alloggiamento personalizzato e sottile.

Per gli scopi di questa guida pratica, ci concentreremo sull'integrazione notoriamente più difficile: il display GPIO basato su SPI, poiché richiede la comprensione più approfondita del kernel Linux.


2. Assemblaggio hardware: cablaggio del display SPI

Se il vostro display SPI non si aggancia direttamente ai pin GPIO come “HAT” (Hardware Attached on Top), sarà necessario cablarlo manualmente.

La regola d'oro dell'hardware

Non cablate mai un display mentre il Raspberry Pi è alimentato. Il collegamento a caldo dei pin GPIO può causare un picco di tensione che distruggerà istantaneamente il circuito integrato driver dell'LCD o, peggio, friggerà il SoC Broadcom del Raspberry Pi.

Anatomia del pinout SPI

Per far funzionare un normale schermo TFT LCD per Raspberry Pi su SPI, è necessario collegare l'alimentazione, il bus SPI (MOSI, SCLK, CE) e i pin di controllo (DC, Reset).

Ecco la mappatura standard che dovete eseguire utilizzando cavi jumper femmina-femmina:

Pin DisplayFunzionePin Fisico Raspberry PiGPIO BCM Raspberry Pi
VCC/5VPotenzaPin 2 o 4Alimentazione 5V
GNDGroundPin 6 (o qualsiasi GND)Ground
MOSI (SDI)Dati allo schermoPin 19GPIO 10 (SPI0_MOSI)
SCLK (SCK)Clock SPIPin 23GPIO 11 (SPI0_SCLK)
CS / CE0Selezione ChipPin 24GPIO 8 (SPI0_CE0)
DC / RSDati/ComandoPin 22 (Predefinito comune)GPIO 25
RST / RESResetPin 18 (Predefinito comune)GPIO 24
BLK / LEDRetroilluminazionePin 12 (PWM) o 3.3VGPIO 18 (PWM0)

Suggerimento Tecnico: Il DC (Dati/Comando) Il pin è cruciale. SPI invia solo 1 e 0. Il controller del display (come l'ILI9341) deve sapere se quegli 1 e 0 sono dati di colore del pixel o comandi di sistema (come “accendi lo schermo”). Il pin DC commuta alto o basso per indicare al controller come interpretare i dati SPI in arrivo.


3. Configurazione del Kernel: L'Overlay del Device Tree

Hai cablato lo schermo. Accendi il Pi. Lo schermo si illumina, ma è completamente bianco. Questo è il Schermo Bianco della Morte. Significa che la retroilluminazione ha alimentazione, ma il kernel del Raspberry Pi non sa che lo schermo esiste, quindi non invia alcun dato di pixel.

Dobbiamo dire al kernel Linux come comunicare con lo schermo. Nel moderno Raspberry Pi OS (Bookworm e successivi), questo viene fatto tramite Overlay del Device Tree (dtoverlay).

Passo 3.1: Abilitare il Bus SPI

Per prima cosa, devi sbloccare l'hardware SPI sul Pi.

  1. Connettiti in SSH al tuo Raspberry Pi.
  2. Esegui lo strumento di configurazione:Bashsudo raspi-config
  3. Naviga fino a Opzioni di interfaccia -> SPI -> Seleziona per abilitare.
  4. Riavvia il Pi.

Passo 3.2: Identificare il Controller del Display (Il Driver)

I pannelli LCD TFT sono semplici vetri. Sono pilotati da un microchip incollato sul retro del vetro (o sulla PCB). I controller più comuni nei mercati maker europei/statunitensi sono:

  • ILI9341 (Molto comune per schermi da 2.4″ a 2.8″)
  • ST7789 (Comune per schermi IPS da 1.3″ a 2.0″)
  • ILI9486 (Comune per schermi da 3.5″)

Tu necessario devi sapere quale controller utilizza il tuo schermo. Controlla il datasheet del produttore.

Passo 3.3: Modificare config.txt

Nel moderno Raspberry Pi OS, il file di configurazione di avvio è stato spostato.

Aprilo utilizzando l'editor di testo nano:

Bash

sudo nano /boot/firmware/config.txt

(Nota: Nelle vecchie versioni del sistema operativo Bullseye, il percorso è semplicemente /boot/config.txt)

Scorri fino alla fine del file e aggiungi l'overlay specifico per il tuo driver. Ad esempio, se stai utilizzando uno schermo ILI9341 cablato esattamente come la tabella sopra:

Ini, TOML

# Abilita SPI

Per un display ST7789 (comunemente usato negli Adafruit PiTFT):

Ini, TOML

dtoverlay=adafruit-st7789v-hAT,fps=30

Salva il file (Ctrl+O, Invio) ed esci (Ctrl+X).

Riavvia il Raspberry Pi: sudo reboot.

Se configurato correttamente, lo schermo bianco diventerà nero durante l'avvio e alla fine vedrai il testo della console Linux scorrere sul piccolo schermo.


4. Architetture Grafiche Moderne: FBCP vs. DRM/KMS

È qui che molti tutorial del 2020 ti porterebbero fuori strada.

Storicamente, se volevi rispecchiare il tuo desktop HDMI principale su un piccolo display SPI TFT per Raspberry Pi, utilizzavi uno strumento chiamato fbcp (Copia Framebuffer). Ha acquisito un'istantanea del framebuffer della GPU primaria (fb0) e l'ha copiata aggressivamente nel framebuffer dello schermo SPI (fb1).

Il Controllo della Realtà Wayland

A partire da Raspberry Pi OS Bookworm, il sistema di finestre X11 e l'architettura legacy del framebuffer sono stati abbandonati. Il Pi ora utilizza Wayland (nello specifico il compositor Wayfire) e l'architettura DRM/KMS (Direct Rendering Manager / Kernel Mode Setting).

fbcp non funziona più sul moderno Raspberry Pi OS.

Come pilotare l'interfaccia utente oggi:

Se state costruendo un'interfaccia uomo-macchina industriale o un dispositivo personalizzato, non dovreste comunque tentare di eseguire un'interfaccia grafica desktop completa su uno schermo da 3,5 pollici. Invece, dovreste scrivere un'applicazione che renderizza direttamente sul livello DRM/KMS utilizzando librerie accelerate via hardware.

Lo Stack Professionale:

  • LVGL (Light and Versatile Graphics Library): Una libreria C open-source che scrive direttamente nel sottosistema DRM di Linux. È incredibilmente leggera e perfetta per schermi SPI.
  • Qt / PyQt: Potete configurare le applicazioni Qt per essere eseguite utilizzando i plugin eglfs o o linuxfb.
  • , bypassando completamente il desktop Wayland e disegnando la vostra UI direttamente sul display TFT LCD. Modalità Chiosco:.

5. Calibrazione dell'Interfaccia Touch

Se dovete assolutamente utilizzare tecnologie web (HTML/CSS/JS), potete configurare Wayfire per avviarsi direttamente in un browser Chromium a schermo intero che punta a un server Node.js locale.

Touch Resistivo vs. Capacitivo

  • Se il vostro display TFT LCD per Raspberry Pi ha un overlay touch, far visualizzare un'immagine allo schermo è solo metà della battaglia. Ora dovete assicurarvi che quando toccate l'angolo in alto a sinistra, il cursore del mouse vada effettivamente nell'angolo in alto a sinistra. Resistivo (Controller XPT2046):.
  • Richiede pressione. Molto comune sugli schermi SPI economici da 3,5″. Richiede una calibrazione intensa perché la resistenza analogica varia in base alla temperatura e al lotto di produzione. Capacitivo (Controller FT6236 / Goodix):.

Calibrazione di uno Schermo Resistivo XPT2046 sotto Wayland/Libinput

Come uno smartphone. Generalmente non richiede calibrazione in quanto la griglia è mappata digitalmente sui pixel in fabbrica. Utilizza il bus I2C invece dello SPI. Poiché X11 è morto, il vecchio strumento xinput_calibrator è obsoleto. Oggi, gli schermi touch sono gestiti da e libinput tramite regole.

  1. udev .Per prima cosa, assicuratevi che il driver touch sia caricato in/boot/firmware/config.txt
  2. :Ini, TOMLdtoverlay=ads7846,cs=1,penirq=17,penirq_pull=2,speed=1000000,keep_vref_on=1
  3. Riavviate e installate lo strumento di calibrazione libinput:Bash sudo apt install weston Wayfire (il compositor predefinito) utilizza un file di configurazione specifico per i dispositivi di input. Dovete modificare la configurazione di Wayfire per mappare correttamente la matrice touch.Aprire ~/.config/wayfire.ini e individuare la sezione.[input] 1 0 0 0 1 0.)

. Dovrete aggiungere una matrice di calibrazione.


6. Overclocking del Bus SPI (Alla Ricerca di Frame)

(Nota: La matrice esatta dipende dal fatto che il vostro schermo sia in orizzontale o verticale. Una matrice identità predefinita è.

1 0 0 0 1 0 . ). velocità Se i vostri assi touch sono invertiti (muovendo il dito verso l'alto il mouse si muove verso il basso), dovete invertire i valori della matrice. Ad esempio, per invertire l'asse Y, la vostra regola udev o la matrice di configurazione di Wayfire dovrebbe cambiare il moltiplicatore di scala Y in un valore negativo.

Ini, TOML

Se la vostra interfaccia utente sembra lenta, potete tentare di fare overclock del bus SPI per spremere qualche fotogramma al secondo in più dal display TFT LCD del Raspberry Pi.

Aprire.

Avvertimento: /boot/firmware/config.txt.


Conclusione: Il Vantaggio Ingegneristico

e individuare la riga del vostro driver overlay. Aggiungere il parametro.

speed.


Domande frequenti (FAQ)

D1: Perché il mio display SPI è completamente bianco all'avvio del Pi?

A: (misurato in Hz).

  1. dtoverlay=rpi-display,speed=48000000 Verificare i pin MOSI, SCLK e in particolare i pin CS (Chip Select) e DC (Data/Command).
  2. Controllare la configurazione: Garantire dtparam=spi=on è attivo nel tuo ..
  3. Controllare il driver: Assicurarsi di caricare quello corretto dtoverlay per il chip controller specifico del tuo schermo (ad es., ILI9341 vs. ST7789).

Q2: Posso eseguire un'interfaccia grafica desktop standard (come Chromium o VLC) su uno schermo SPI da 3,5 pollici?

A: Tecnicamente sì, ma praticamente no. Il bus SPI semplicemente non ha la larghezza di banda necessaria per gestire 320×480 pixel a 60 fotogrammi al secondo. La riproduzione video risulterà in un evidente screen tearing, e l'interfaccia utente desktop risulterà estremamente lenta. Per ambienti desktop o video, è necessario utilizzare un display MIPI DSI o HDMI. Gli schermi SPI sono adatti per interfacce utente semplici e statiche, pulsanti e visualizzazioni di testo.

Q3: I clic del touchscreen vengono rilevati, ma il cursore del mouse va sul lato opposto dello schermo. Come posso risolvere?

A: Gli assi del touch sono invertiti rispetto agli assi del display. Ciò accade se si ruota il display via software (ad es., display_lcd_rotate=2) senza ruotare la matrice del touch. È necessario applicare una Matrice di Trasformazione tramite libinput regole o all'interno della configurazione Wayfire/X11 per scambiare o invertire gli assi X e Y.

Q4: L'aggiunta di uno schermo LCD sovraccaricherà l'alimentatore del mio Raspberry Pi?

A: Potrebbe, a seconda del modello di Pi e della dimensione dello schermo. Un Raspberry Pi 4 o 5 richiede un alimentatore robusto da 5,1V / 3A a 5A. Uno schermo SPI da 3,5 pollici assorbe circa 100mA-150mA per la retroilluminazione a LED, che i pin GPIO a 5V possono gestire in sicurezza. Tuttavia, uno schermo da 7 o 10 pollici può assorbire fino a 500mA-1A. Per schermi più grandi di 5 pollici, è consigliabile alimentare lo schermo con un alimentatore USB esterno dedicato, non dai pin GPIO del Pi, per evitare il throttling da sottotensione (indicato dall'icona del fulmine giallo).

Q5: Voglio realizzare un prodotto commerciale utilizzando un Raspberry Pi Compute Module. Dovrei usare SPI?

A: No. Se si sta passando a un prodotto commerciale utilizzando un Compute Module 4 (CM4) o CM5, è necessario instradare le linee MIPI DSI o utilizzare l'interfaccia DPI (parallela) sulla propria scheda carrier personalizzata. Ciò scarica il rendering del display sulla GPU hardware, liberando la CPU per eseguire la logica applicativa effettiva e garantendo animazioni fluide e professionali a 60 FPS.