User Tools

Site Tools


doc:appunti:hardware:raspberrypi_lcd

Display LCD su Raspberry Pi

LCD 10.1" su Raspberry Pi 3 e Raspbian Stretch

Il display ha una porta HDMI, quindi il collegamento è immediato. Al boot tuttavia compare un bordo nero per cui l'immagine di Xorg non utilizza l'intero schermo. Da xrandr -q risulta infatti attiva una risoluzione di 1184×624 contro una risoluzione nativa di 1280×720.

Nel file /boot/config.txt si abilita la riga che è commentata per default:

disable_overscan=1

Volendo è possibile forzare la risoluzione con le opzioni:

framebuffer_width=1280
framebuffer_height=800

Queste impostazioni si riflettono sulle opzioni che vengono passate come parametri al kernel, è sufficiente vedere il contenuto di /proc/cmdline e vedere ad esempio bcm2708_fb.fbwidth=1280 bcm2708_fb.fbheight=800.

LCD 3.5" su Raspberry Pi 3 e Raspbian Jessie

In genere i fornitori di display LCD per Raspberry forniscono una propria immagine del sistema operativo con il supporto LCD già abilitato. Chi volesse attivare il display su una installazione standard può seguire questi appunti. Il test è stato fatto su Raspberry Pi 3 con Raspbian Jessie e LCD Kuman 3.5“ 480×320 RGB TFT.

Il software necessario si clona da GitHub:

https://github.com/goodtft/LCD-show

C'è la procedura di installazione automatica LCD-show/LCD35-show specifica per il display 3.5”, che però è inutile e approssimativa. I passaggi necessari sono:

  • Abilitare l'interfaccia SPI e i relativi moduli kernel. Eseguire raspi-config, da Advanced OptionsSPI: Enable SPI interface, Load SPI kernel module.
  • Copiare il file usr/tft35a-overlay.dtb nella /boot/overlay/ del Raspberry Pi; si tratta di un Device Tree Blob che serve ad abilitare l'hardware. A seconda della versione kernel il file deve avere estensione .dtb oppure .dtbo, vedere gli altri file presenti nella directory. L'architettura Device Tree è accennata qui: Device Trees, overlays, and parameters.
  • Creare la directory /etc/X11/xorg.conf.d, se non esiste.
  • Copiare i file usr/99-calibration.conf-35 e usr/99-fbturbo.conf in /etc/X11/xorg.conf.d. Rinominare con estensione .conf.
  • Aggiungere alla linea di /boot/cmdline.txt i parametri: fbcon=map:10 fbcon=font:ProFont6x11.
  • FIXME La procedura di installazione prevede di sostituire /etc/inittab, che però non esiste più in Jessie.
  • Nel file /boot/config.txt aggiungere la riga dtoverlay=tft35a.

Al riavvio si ottengono tre terminali virtuali su HDMI e tre su LCD, più una console X.org su HDMI:

  • tty1 ⇒ LCD
  • tty2 ⇒ HDMI
  • tty3 ⇒ LCD
  • tty4 ⇒ HDMI
  • tty5 ⇒ LCD
  • tty6 ⇒ HDMI
  • tty7 ⇒ X.org su HDMI

È possibile passare da una console testuale all'altra con la consueta combinazione Alt-Fn, oppure Ctrl-Alt-Fn per uscire dalla console X.org.

Verificare che siano disponibili due framebuffer device: /dev/fb0 e /dev/fb1, il primo è diretto verso il monitor HDMI, il secondo verso il display LCD.

FIXME: Come controllare i vari tty? Come far partire X.org su LCD invece che HDMI (viene ignorato il file 99-fbturbo.conf che è stato messo)?

Overscan

Prima di aggiustare l'overscan è opportuno controllare che il display sia usato alla risoluzione nativa. Per verificare le impostazioni correnti e le caratteristiche del display utilizzare xrandrd e tvservice:

tvservice --status
state 0x12000a [HDMI CEA (16) RGB lim 16:9], 1920x1080 @ 60.00Hz, progressive

Nel file /boot/config.txt è possibile aggiustare l'overscan. In questo esempio sono stati ridotti i bordi neri impostando dei valori negativi:

#disable_overscan=1

overscan_left=-10
overscan_right=-10
overscan_top=-22
overscan_bottom=-22
doc/appunti/hardware/raspberrypi_lcd.txt · Last modified: 2019/07/24 10:01 by niccolo