La scelta di un monitor touch screen adatto al nostro rpi può risultare problematica per via della quantità di prodotti disponibili con qualità molto variabile.I problemi che si possono incontrare nello scegliere alcuni lcd di bassa qualità sono:
- scarso supporto per driver con problemi di stabilità del sistema
- guide complicate per l’installazione del driver
- hardware scadente e touch non perfettamente funzionante
- presenza di cloni di marche più quotate
Nella mia ricerca ho comunque potuto notare che la maggior parte delle guide che si riferiscono ad installazioni di driver, sono rese obsolete dal supporto nativo dei vari controller attualmente più diffusi.
Di seguito cercherò di indicare alcuni consigli in base alla mia esperienza.
La scelta del monitor
Senza dilungarmi troppo sui vari modelli e marche, se volete avere un sistema stabile e facile da configurare, vi converrà optare per modelli nativamente supportati da linux, nel nostro caso, l’ultima versione di Rasbpian desktop lite. Cercate modelli con supporto gestito dal controller xpt2046 o driver ads7846 in questo modo la vostra scelta sarà filtrata a dispositivi facili da configurare.
Il passaggio successivo è quello di scegliere l’interfaccia di connessione ed alimentazione tra lcd e monitor. Le interfarcce disponibili per l’alimentazione sono:
- gpio
- microusb
Per la sezione video le interfacce sono:
- gpio
- hdmi
Da quello che ho visto, i monitor con risoluzioni più basse hanno la connessione video tramite gpio, ma se volete risoluzioni elevate, vi conviene valutare la connessione hdmi che tra l’altro, vi da la possibilità di avere un uscita audio, a volte anche tramite jack da 3,5. La mia marca di rifermiento è stata waveshare perché è quella che in rete ha le migliori recensioni per supporto e qualità.
NOTA: per poter usare un monitor lcd senza dover ricorrere ad una alimentatore specifico, è opportuno dotare il proprio raspberry di un modello che supporta i 5V e 3A
Premessa:
Tutti i comandi e procedure varie seguenti, possono esssere tranquillamente gestibili tramite ssh tranne quando diversamente specificato, dando per scontato le conoscenze di base del terminale e di sudo.
Prima di tutto eseguiamo un aggiornamento del nostro sistema per poi proseguire nell’installazione dei pacchetti necessari e modifiche dei file:
sudo apt update sudo apt upgrade
Iniziamo modificando il file
/boot/config.txt
aggiungendo i seguenti parametri ( se già sono presenti è sufficiente decommentare la riga corrispondente)
dtparam=i2c_arm=on dtparam=spi=on dtoverlay=ads7846,penirq=25,speed=100000,penirq_pull=2,xohms=150
NOTA: la seguente configurazione è opzionale. Dalle prove che ho fatto è più importante configurare il file /boot/config.txt perché è quello che decide quale driver caricare, inoltre, non aggiungendo nessuna opzione nel file /etc/modules, funziona tutto. La lascio come promemoria, qualora qualcuno avesse necessità di configurazioni particolari.
Configurazione opzionale: Si configura il file /etc/modules aggiungendo: ads7846_device model=7846 cs=1 gpio_pendown=25 keep_vref_on=1 swap_xy=1 pressure_max=255 x_plate_ohms=150
Si deve eseguire un reboot in modo da far gestire l’lcd dal nuovo driver ads7846 indicato. Si prosegue con la configurazione per Xorg: si crea la directory:
/etc/X11/xorg.conf.d
si crea anche il seguente file nella directory creata:
99-calibration.conf
con il seguente contenuto:
Section "InputClass" Identifier "calibration" MatchProduct "ADS7846 Touchscreen" Option "Calibration" "155 3945 271 3802" Option "SwapAxes" "0" EndSection
Come si ottengono questi parametri che possono differire per ogni lcd?Si dovrà fare una calibrazione dell’lcd con apposito strumento che ricaverà la configurazione precedente.
Ricavare i parametri di calibrazione del touchscreen
Per poter adattare questa guida al vostro lcd dovrete eseguire la calibrazione del vostro hardware seguendo i passi successivi iniziando con l’installazione dei pacchetti necessari:
sudo apt-get update sudo apt-get install -y libts-bin evtest xinput python-dev python-pip sudo pip install evdev sudo apt-get install -y xinput-calibrator
I seguenti pacchetti sono fondamentali per far funzionare correttamente il touch screen:
apt-get install xserver-xorg-input-evdev
Dal momento che evdev.conf deve essere caricato dopo libinput.conf e che i file 10-evdev.conf e 40-libinput.conf causano una sovrascrittura da parte di libinput del file evdev config, e’ opportuno cambiare la sequenza di avvio rinominando il seguente file nel seguente modo:
sudo mv /usr/share/X11/xorg.conf.d/10-evdev.conf /usr/share/X11/xorg.conf.d/45-evdev.conf
In questo modo verrà caricato per ultimo senza sovrascrittura.
Prima di procedere con la fase finale di calibrazione vera e propria del vostro touch, è necessario impostare la corretta risoluzione del vostro lcd e se volete maggior superficie coperta dall’immagine, disabilitare l’overscan, in più se volete leggere i caratteri senza perdere la vista, vi suggerisco di abilitare il Pixel doubling; tutto questo tramite tool di configurazione Raspberry Pi configuration, facilmente accessibile tramite menu del desktop.In questa fase mi sono aiutato con una tastiera fisica.
Sempre utilizzando la tastiera, si apre un terminale dal desktop e si avvia il programma di calibrazione:
$ xinput-calibrator
Ora vi basta seguire la procedura e alla fine avrete i parametri corretti per il vostro touchscreen da inserire nel file di riferimento.
Riavviate e provate il vostro schermo.
Consiglio la lettura di questo articolo con tutte le opzioni video:
https://www.raspberrypi.org/documentation/configuration/config-txt/video.md
https://www.raspberrypi.org/documentation/hardware/display/README.md
Ciao ho seguito la tua guida e adesso funziona tutto grazie
Ottimo. ciao
Questa la oda del config.txt
[all]
#dtoverlay=vc4-fkms-v3d
display_hdmi_rotate=1
dtparam=i2c_arm=on dtparam=spi=on
dtoverlay=ads7846,penirq=25,speed=100000,penirq_pull=2,xohms=150
Questo il calibrator:
Section “InputClass”
Identifier “calibration”
MatchProduct “WaveShare WS170120”
Option “MinX” “51240”
Option “MaxX” “52551”
Option “MinY” “20616”
Option “MaxY” “20753”
Option “SwapXY” “1” # unless it was already set to 1
Option “InvertX” “0” # unless it was already set
Option “InvertY” “0” # unless it was already set
EndSection
Ho seguito la procedura di cui sopra, ma il touch è sempre rovesciato.
Qualcuno è in grado di aiutarmi?
Grazie
Questa la coda del config.txt
[all]
#dtoverlay=vc4-fkms-v3d
display_hdmi_rotate=1
dtparam=i2c_arm=on dtparam=spi=on
dtoverlay=ads7846,penirq=25,speed=100000,penirq_pull=2,xohms=150
Questo il calibrator:
Section “InputClass”
Identifier “calibration”
MatchProduct “WaveShare WS170120”
Option “MinX” “51240”
Option “MaxX” “52551”
Option “MinY” “20616”
Option “MaxY” “20753”
Option “SwapXY” “1” # unless it was already set to 1
Option “InvertX” “0” # unless it was already set
Option “InvertY” “0” # unless it was already set
EndSection
Ho seguito la procedura di cui sopra, ma il touch è sempre rovesciato.
Qualcuno è in grado di aiutarmi?
Grazie
Tu hai la linea display_hdmi_rotate=1
devi cambiare il valore che può essere:
0 is the normal configuration. 1 is 90 degrees. 2 is 180 degress. 3 is 270 degrees.
Ma io ho bisogno di ruotare di 90° degrees. Questo riesco a farlo con config.txt. Ciò che non riesco a fare è ruotare alla stessa maniera il touch, pur seguendo la procedura sopra indicata. C’è un’altra strada?
Usando google in 30 sec ho trovato la probabile soluzione:
https://www.raspberrypi.org/forums/viewtopic.php?t=120785
Qui devi provare un parametro diverso.
Niente da fare. Già provato.
Non ruota il touch
Probabilmente non riconosce il monitor “WaveShare WS170120”.
Sarà un problema di di driver.
Probabilmente non riconosce il monitor “WaveShare WS170120”.
Sarà un problema di di driver.
Buongiorno, scusate il disturbo ma ho un problema. Ho montato un monitor LCD tramite Gpio ed ora non riesco più a collegare il mio Raspberry pi 3 con il cavo HDMI. Sapete aiutarmi? Grazie